Compare commits
682 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
edbc850346 | ||
|
|
901d3c85ca | ||
|
|
abbe83f3c2 | ||
|
|
bb3a04a9c8 | ||
|
|
bac13e8b71 | ||
|
|
3871681de3 | ||
|
|
ae6f2b6df6 | ||
|
|
f59bbc9981 | ||
|
|
eac0c84e11 | ||
|
|
f814cc443d | ||
|
|
262466303b | ||
|
|
3b4cc2c5f2 | ||
|
|
023d3fbf6f | ||
|
|
fe01f290bc | ||
|
|
5805ac9f7f | ||
|
|
4e2f38a343 | ||
|
|
572c924e5c | ||
|
|
e90353e550 | ||
|
|
f8ae1b8c49 | ||
|
|
186d995919 | ||
|
|
70584aff9d | ||
|
|
dcdc63785a | ||
|
|
0e7bfa65de | ||
|
|
9427340ab7 | ||
|
|
63af5bae8a | ||
|
|
9232f1fa40 | ||
|
|
15bdb551f4 | ||
|
|
2cda2b53ed | ||
|
|
028c9ea0b5 | ||
|
|
315b51e7ca | ||
|
|
0185b3b145 | ||
|
|
afaad49879 | ||
|
|
4b2b45979b | ||
|
|
66e40edd0e | ||
|
|
3d5168885f | ||
|
|
6eee2c2342 | ||
|
|
11ec27147a | ||
|
|
a522a02ba2 | ||
|
|
5ff4d35a30 | ||
|
|
4c5546bf52 | ||
|
|
ab37a46e83 | ||
|
|
0b3635b5c5 | ||
|
|
2a338d9a83 | ||
|
|
7031a4c26c | ||
|
|
2c5ca97476 | ||
|
|
fc0c8f6bb1 | ||
|
|
643547704e | ||
|
|
4717b63775 | ||
|
|
4af148f480 | ||
|
|
a9c59693ee | ||
|
|
9b3ac159c1 | ||
|
|
c03c98157f | ||
|
|
74149b761f | ||
|
|
44cfa2d8dc | ||
|
|
b0fb00d597 | ||
|
|
af3c1dc039 | ||
|
|
1c94b5d5f0 | ||
|
|
fbb00c0f85 | ||
|
|
4a72e63d1c | ||
|
|
ce94e0ba4d | ||
|
|
e2c836794b | ||
|
|
05e424f805 | ||
|
|
bf30819a4a | ||
|
|
52e9d30b46 | ||
|
|
1fa2d55e1d | ||
|
|
4d0ee652d8 | ||
|
|
ff215bc9aa | ||
|
|
e1cadc878a | ||
|
|
57d9d8ddb9 | ||
|
|
f76b1a5363 | ||
|
|
9b579be2be | ||
|
|
9d43465eab | ||
|
|
fc52870431 | ||
|
|
c466ea100a | ||
|
|
4054369611 | ||
|
|
11106937a3 | ||
|
|
fdddf901f3 | ||
|
|
2e30c04238 | ||
|
|
bd838094cd | ||
|
|
6f22b74154 | ||
|
|
e71525db0e | ||
|
|
d7c1516ec2 | ||
|
|
ff91a5dad9 | ||
|
|
d76679c2b6 | ||
|
|
d7cb88f0a4 | ||
|
|
8a3eb41314 | ||
|
|
e2f9aac1c9 | ||
|
|
08c7396404 | ||
|
|
69cbdbd20e | ||
|
|
005f26ba7c | ||
|
|
a1dc0c8104 | ||
|
|
75435b8fe0 | ||
|
|
6d7385788e | ||
|
|
726d9d410f | ||
|
|
ee2a61bb61 | ||
|
|
40748d6e42 | ||
|
|
02225ad0b8 | ||
|
|
3c4703ad85 | ||
|
|
6762f35ade | ||
|
|
5135afcf8f | ||
|
|
4aae82e0cc | ||
|
|
ea95c6de79 | ||
|
|
4a67e963ed | ||
|
|
720f177d65 | ||
|
|
2b4a043a92 | ||
|
|
77b20bc562 | ||
|
|
063449448a | ||
|
|
559ffcbab5 | ||
|
|
80ed8346be | ||
|
|
a49455f330 | ||
|
|
c3de6f6d02 | ||
|
|
ee416b1bf2 | ||
|
|
784928ffc8 | ||
|
|
609360a1d0 | ||
|
|
18ce2f7b1c | ||
|
|
78625d82ae | ||
|
|
2ca34fb9ad | ||
|
|
f5f944aa50 | ||
|
|
83b4ab83d1 | ||
|
|
34f63f9006 | ||
|
|
b74188d904 | ||
|
|
ba246e99e8 | ||
|
|
51576b54c3 | ||
|
|
0d5a9fcf4a | ||
|
|
b0c5f74edb | ||
|
|
1ac7661593 | ||
|
|
caa2c523f4 | ||
|
|
7b9f1e6788 | ||
|
|
86f3ed29f9 | ||
|
|
655d411afe | ||
|
|
f5deb8e168 | ||
|
|
fcdb61bfbf | ||
|
|
bd9a4ca094 | ||
|
|
e2657e746d | ||
|
|
6f5a174231 | ||
|
|
91e9c0b02b | ||
|
|
658ea26ab7 | ||
|
|
77b736541e | ||
|
|
843b881da6 | ||
|
|
3ca8acc805 | ||
|
|
63809d4f16 | ||
|
|
557660b16b | ||
|
|
12be8bda52 | ||
|
|
81efd25e0a | ||
|
|
7037009ce4 | ||
|
|
4a0902d4c8 | ||
|
|
ed25ac1748 | ||
|
|
55e09ed062 | ||
|
|
babb548c22 | ||
|
|
1d0e8434ad | ||
|
|
e7b2deb941 | ||
|
|
2a37a6a28e | ||
|
|
735ebbe92a | ||
|
|
2031729656 | ||
|
|
f39fdc38cb | ||
|
|
6b62623615 | ||
|
|
f3f3dc1951 | ||
|
|
f4dd970f5e | ||
|
|
74332c58c5 | ||
|
|
f7ce49020f | ||
|
|
aaba1f7209 | ||
|
|
a9c7916b3d | ||
|
|
e3c8ccfafe | ||
|
|
2a22b65b2d | ||
|
|
ce5728e2df | ||
|
|
cba82e0e8e | ||
|
|
be30064f9a | ||
|
|
1798981380 | ||
|
|
06586d3405 | ||
|
|
31bcbd0e13 | ||
|
|
2652beed88 | ||
|
|
a2b87b862f | ||
|
|
85e8d9479e | ||
|
|
119508a4e3 | ||
|
|
3c2da0a225 | ||
|
|
ef79e6adf9 | ||
|
|
528400579a | ||
|
|
521ce1a487 | ||
|
|
014cc9bc16 | ||
|
|
34c6c953ac | ||
|
|
40fbbc7c58 | ||
|
|
534c329970 | ||
|
|
328d728257 | ||
|
|
fae6d42758 | ||
|
|
27693f6d23 | ||
|
|
89c4bab5b9 | ||
|
|
9d2ff04838 | ||
|
|
cf00243107 | ||
|
|
e8019ba7a5 | ||
|
|
4f30e3f0e3 | ||
|
|
047d08470f | ||
|
|
9643695389 | ||
|
|
5cabec86e7 | ||
|
|
f2d0e37255 | ||
|
|
9560851a3f | ||
|
|
4aeec1caa1 | ||
|
|
ae45b1ef44 | ||
|
|
aad1b087c9 | ||
|
|
b69c581fa1 | ||
|
|
9eb4d90cd6 | ||
|
|
958567c2c5 | ||
|
|
f1fc4583ed | ||
|
|
f7bfd5f766 | ||
|
|
aadc3c216a | ||
|
|
6fd2499daf | ||
|
|
f0405f1c5d | ||
|
|
1914cb3994 | ||
|
|
ab38fb572d | ||
|
|
46d7128a6e | ||
|
|
0821884ff3 | ||
|
|
62233281ef | ||
|
|
39504502af | ||
|
|
f97530a671 | ||
|
|
0fe7d5e598 | ||
|
|
527362dc9f | ||
|
|
1023426c8d | ||
|
|
4458fd7541 | ||
|
|
f0b03f59ff | ||
|
|
d5b17b3cfb | ||
|
|
9664d1d77f | ||
|
|
d329646a52 | ||
|
|
8eafe72bb0 | ||
|
|
c38a0bde65 | ||
|
|
eef5d3cc16 | ||
|
|
59ada594a5 | ||
|
|
5ec1d18143 | ||
|
|
fd1e1bb6bf | ||
|
|
5d545d8a85 | ||
|
|
e38bc45527 | ||
|
|
1b11425acd | ||
|
|
1e67850a80 | ||
|
|
975f89456f | ||
|
|
e267b4b379 | ||
|
|
2fd21690a5 | ||
|
|
b176ad03aa | ||
|
|
152c4802d0 | ||
|
|
8adbc57f23 | ||
|
|
d263a78db8 | ||
|
|
b94a065c06 | ||
|
|
bc957fea71 | ||
|
|
566f056149 | ||
|
|
abe484b0df | ||
|
|
982c865245 | ||
|
|
07d2a27b5f | ||
|
|
e4c65deda8 | ||
|
|
4930646e05 | ||
|
|
01dd1ff56f | ||
|
|
9433213fe5 | ||
|
|
82dea829f1 | ||
|
|
dafc83aa53 | ||
|
|
7ab1cd6612 | ||
|
|
d0e3b3ffbd | ||
|
|
50bcc88700 | ||
|
|
8fb8575f4b | ||
|
|
e63c113b8a | ||
|
|
43d892dbf7 | ||
|
|
d9bf31d4f0 | ||
|
|
0bde282448 | ||
|
|
6098132fdf | ||
|
|
a6bb8947f3 | ||
|
|
48880328b0 | ||
|
|
25776a788e | ||
|
|
f5e8f2831e | ||
|
|
b3fe13c97a | ||
|
|
7845569319 | ||
|
|
69b3178c13 | ||
|
|
1dce0f0366 | ||
|
|
db1b3fdaad | ||
|
|
032d12a592 | ||
|
|
94cc36a08f | ||
|
|
4fcae44fb7 | ||
|
|
83719dfe17 | ||
|
|
c8b01a5530 | ||
|
|
b469d73385 | ||
|
|
69468b1770 | ||
|
|
7e4f66d533 | ||
|
|
758d0d82d4 | ||
|
|
a01b934fdb | ||
|
|
e9b0372174 | ||
|
|
288c02e092 | ||
|
|
33322e8795 | ||
|
|
ec8f6478df | ||
|
|
59d397a3a0 | ||
|
|
b06540f2ec | ||
|
|
419f5458b4 | ||
|
|
ca4e8960d2 | ||
|
|
7b3bed015a | ||
|
|
c97fa3a767 | ||
|
|
42f7c7cb43 | ||
|
|
c8ae834f50 | ||
|
|
b8644268b3 | ||
|
|
75742d8a9e | ||
|
|
6b6169e248 | ||
|
|
3c4ae902fd | ||
|
|
bfc8bf91ee | ||
|
|
768d5cce27 | ||
|
|
d54a1c2754 | ||
|
|
282ad3ab2d | ||
|
|
c692dd3a66 | ||
|
|
e461fce2cb | ||
|
|
4d92caabf8 | ||
|
|
07c07ec60a | ||
|
|
4020213729 | ||
|
|
b9beb4be9d | ||
|
|
f747416d3b | ||
|
|
41241b694f | ||
|
|
26c5c1ac01 | ||
|
|
dedd5b197c | ||
|
|
6340764a6c | ||
|
|
a262c1e98d | ||
|
|
7b9c64c5a5 | ||
|
|
4283404f35 | ||
|
|
f612ce5db8 | ||
|
|
831a20ff91 | ||
|
|
38ae669070 | ||
|
|
fed7e7764e | ||
|
|
f3804fce40 | ||
|
|
88e7cd09d7 | ||
|
|
1ce5571ac6 | ||
|
|
355bf84af4 | ||
|
|
6e8a3a4867 | ||
|
|
bf6dcdf2bd | ||
|
|
165454dc57 | ||
|
|
34b4b9d099 | ||
|
|
0808ec1612 | ||
|
|
6b12549cd9 | ||
|
|
92baf9025a | ||
|
|
d58861ab88 | ||
|
|
142230e56a | ||
|
|
b8959c8f12 | ||
|
|
3fa22fdc55 | ||
|
|
a1c743e59c | ||
|
|
ebd0f45c10 | ||
|
|
fce6c46250 | ||
|
|
6114e4ff55 | ||
|
|
cc3d1ff7de | ||
|
|
2f721c8535 | ||
|
|
ddb790104f | ||
|
|
181dfd2f51 | ||
|
|
fca062f75a | ||
|
|
52b84c3201 | ||
|
|
e1021a6832 | ||
|
|
aa338d2da5 | ||
|
|
44471c4926 | ||
|
|
930c7e4ce5 | ||
|
|
2e64f23ef9 | ||
|
|
801d1fd320 | ||
|
|
cfffb5756e | ||
|
|
b30daf8e56 | ||
|
|
84eba671f0 | ||
|
|
f28b93daa0 | ||
|
|
dc16136c59 | ||
|
|
e47caf8c4f | ||
|
|
8ad80bb75d | ||
|
|
22475e459d | ||
|
|
73ad33dfc9 | ||
|
|
f1782c78f4 | ||
|
|
b544dde2c6 | ||
|
|
1a7dca8e58 | ||
|
|
23c7d7fb46 | ||
|
|
65fda407dc | ||
|
|
12ebad436a | ||
|
|
c7297dba7e | ||
|
|
e61368a26e | ||
|
|
b98da3a5dc | ||
|
|
12f3400894 | ||
|
|
4b5508fc3c | ||
|
|
5f40e6e0b7 | ||
|
|
080d660cfa | ||
|
|
790209efbc | ||
|
|
f1679e444c | ||
|
|
9dc6ba182a | ||
|
|
785a30e623 | ||
|
|
f09efdad66 | ||
|
|
4e73b3ae28 | ||
|
|
6213f86f81 | ||
|
|
0a6955cd59 | ||
|
|
6ee8f03ec0 | ||
|
|
b1a82d95c2 | ||
|
|
30bc9ded29 | ||
|
|
5a32892e94 | ||
|
|
e33de896b6 | ||
|
|
3ba92444a5 | ||
|
|
4f120e8eb4 | ||
|
|
08aebf5736 | ||
|
|
5a4966ba8d | ||
|
|
9ba963fc45 | ||
|
|
ccc10dbae4 | ||
|
|
d858342269 | ||
|
|
63f251d1fd | ||
|
|
83efe66f3e | ||
|
|
3f5729044f | ||
|
|
045af7e8df | ||
|
|
6f181053b2 | ||
|
|
4ff1dc2982 | ||
|
|
a883ba8808 | ||
|
|
961bd6140c | ||
|
|
5f364b48c9 | ||
|
|
5a04911c7c | ||
|
|
8ff248aa62 | ||
|
|
046ac95dc3 | ||
|
|
6fb17a4b74 | ||
|
|
f84397393d | ||
|
|
800c93e2aa | ||
|
|
df6179a1a8 | ||
|
|
3e3a079ba1 | ||
|
|
0bf4a43663 | ||
|
|
5e9f4ad926 | ||
|
|
69050bfe41 | ||
|
|
eebc16bcdd | ||
|
|
d4921535f2 | ||
|
|
b1eeb648a7 | ||
|
|
ba702ba041 | ||
|
|
c40d88d0b6 | ||
|
|
285f91e9e8 | ||
|
|
947a7aa7df | ||
|
|
0b37e36036 | ||
|
|
92320f5086 | ||
|
|
ae17e0c264 | ||
|
|
ec756ee943 | ||
|
|
b0ff814753 | ||
|
|
1f7eb2d48a | ||
|
|
eeab8e4a90 | ||
|
|
77fbddf488 | ||
|
|
bf396f8802 | ||
|
|
13cb8b84bf | ||
|
|
3ab992f5fb | ||
|
|
a386ecfc9c | ||
|
|
a71399c42c | ||
|
|
5a5d7e0981 | ||
|
|
b663a7f52a | ||
|
|
7390039086 | ||
|
|
12af02435f | ||
|
|
6f357828b7 | ||
|
|
09e1a4386d | ||
|
|
dcc8e6dc34 | ||
|
|
1b19ef54e4 | ||
|
|
8ce476caf1 | ||
|
|
dd2d9133eb | ||
|
|
2147d12ac8 | ||
|
|
22641a1da0 | ||
|
|
2bd4088d40 | ||
|
|
ee61363c31 | ||
|
|
8285688ec9 | ||
|
|
4eb076540e | ||
|
|
527bfec24c | ||
|
|
2fff7d7160 | ||
|
|
aac2b4aaf0 | ||
|
|
fe070b306f | ||
|
|
ecfadf8a23 | ||
|
|
653af71596 | ||
|
|
6a89be2e89 | ||
|
|
b84bad4e1a | ||
|
|
0f8d86f081 | ||
|
|
d44f311ba1 | ||
|
|
6f5428ca61 | ||
|
|
b0bee3ca1a | ||
|
|
7908194d27 | ||
|
|
b27c7fb2dd | ||
|
|
a23cb95a10 | ||
|
|
fc137f9b1c | ||
|
|
84780bf9ef | ||
|
|
1321037c52 | ||
|
|
de1da12d45 | ||
|
|
6d4cbacd50 | ||
|
|
bf9f7ca990 | ||
|
|
ca334104d7 | ||
|
|
c3e00ba31b | ||
|
|
ea3a9cc70e | ||
|
|
7ad22e0a73 | ||
|
|
ca1abb58eb | ||
|
|
3e353944b2 | ||
|
|
007a250f55 | ||
|
|
e9bb6a9951 | ||
|
|
82f236e07b | ||
|
|
17bfe74ecf | ||
|
|
b77827df90 | ||
|
|
a359a508ae | ||
|
|
3a740118f0 | ||
|
|
58d9bcbd14 | ||
|
|
24be7b2180 | ||
|
|
f4c9ca8dff | ||
|
|
9b8181b72b | ||
|
|
1ff1962425 | ||
|
|
9b05736746 | ||
|
|
dec722e693 | ||
|
|
49fa0a4c67 | ||
|
|
0cdc69e1e8 | ||
|
|
0494cc4ce7 | ||
|
|
30d82947d6 | ||
|
|
ec59249d79 | ||
|
|
7eb869ab1d | ||
|
|
d014724a2d | ||
|
|
dfb6cef364 | ||
|
|
0ebf8c9349 | ||
|
|
9dfd89c90d | ||
|
|
f6972125cd | ||
|
|
6e366bf55a | ||
|
|
5e2e45c673 | ||
|
|
f879235564 | ||
|
|
b00aee2ae7 | ||
|
|
28c2159ec3 | ||
|
|
33dcef2285 | ||
|
|
b9acd0ec28 | ||
|
|
7989d5180b | ||
|
|
238086942e | ||
|
|
a704a30242 | ||
|
|
26dd0d0ea5 | ||
|
|
e31a4bcaa9 | ||
|
|
1722dc570b | ||
|
|
3575e69b43 | ||
|
|
373d89874c | ||
|
|
976087ce97 | ||
|
|
69a45788ee | ||
|
|
92e4de12fb | ||
|
|
ea7fdb9b3d | ||
|
|
fe1c043b8e | ||
|
|
146f597a0b | ||
|
|
d2bef312ce | ||
|
|
61f297215d | ||
|
|
639a9fd540 | ||
|
|
3d0428c518 | ||
|
|
f40f926ce1 | ||
|
|
d6db4f0e4c | ||
|
|
fcbc9471aa | ||
|
|
b147e05794 | ||
|
|
47e6eb546d | ||
|
|
8ba05cb4ed | ||
|
|
84b91e9649 | ||
|
|
703e17478d | ||
|
|
8584e15c32 | ||
|
|
46be7aadab | ||
|
|
a5871f6cba | ||
|
|
917dc1803c | ||
|
|
c0c0961b2b | ||
|
|
0995ac6f9a | ||
|
|
b7f40e4cbf | ||
|
|
754cbb9eaa | ||
|
|
7052b56069 | ||
|
|
decdee825b | ||
|
|
5f66afc399 | ||
|
|
5ceb638edf | ||
|
|
688b9ef5ee | ||
|
|
4909a557d5 | ||
|
|
75f63afadc | ||
|
|
e90a624c9a | ||
|
|
dd85ccd3f8 | ||
|
|
fc54e19ce2 | ||
|
|
118a920e57 | ||
|
|
975a335538 | ||
|
|
c6ec4f38b0 | ||
|
|
5a5d686be1 | ||
|
|
8fc430d124 | ||
|
|
721eb40a8a | ||
|
|
f18103751f | ||
|
|
9d30bb669e | ||
|
|
ab6f5c21c8 | ||
|
|
4fc2ed32d2 | ||
|
|
00ab4f2a7d | ||
|
|
cb5d8b405b | ||
|
|
7b28aa8500 | ||
|
|
97a369df0a | ||
|
|
73a817c1cb | ||
|
|
c16053f0e5 | ||
|
|
3dfd108fc4 | ||
|
|
576696b25e | ||
|
|
781fab5aab | ||
|
|
0f099a19cd | ||
|
|
43b96ea4e5 | ||
|
|
8cbf6bfffa | ||
|
|
52debcdcb3 | ||
|
|
9d38d89c25 | ||
|
|
837f0ca393 | ||
|
|
42fd5b6eb2 | ||
|
|
7bdf76a665 | ||
|
|
784ef278ea | ||
|
|
9b4bf455b4 | ||
|
|
ddd3739ed9 | ||
|
|
1c95c5861c | ||
|
|
fd6fa1c622 | ||
|
|
6809a77a41 | ||
|
|
7a913ee38f | ||
|
|
cca330829a | ||
|
|
e2f5c76d91 | ||
|
|
26bf7c149c | ||
|
|
020df117c4 | ||
|
|
b48037b757 | ||
|
|
529b6613e9 | ||
|
|
8a5d8cdf8a | ||
|
|
cdf35740d9 | ||
|
|
76c40585fd | ||
|
|
2bf58288d3 | ||
|
|
ba2eac5290 | ||
|
|
23a4e4cc19 | ||
|
|
841a20cbd4 | ||
|
|
f70ca77913 | ||
|
|
c97df99c5c | ||
|
|
809e170018 | ||
|
|
d0c8f5eb45 | ||
|
|
d0f953f1d8 | ||
|
|
6d1636c540 | ||
|
|
b3292729b0 | ||
|
|
11840ffc8a | ||
|
|
9fd20d1dc8 | ||
|
|
ea6799d749 | ||
|
|
e23fe00a37 | ||
|
|
ccda957e8f | ||
|
|
cdaaf00509 | ||
|
|
4dfb0fa213 | ||
|
|
dcda8fc773 | ||
|
|
9c3fff8510 | ||
|
|
c3526ebfa3 | ||
|
|
28ba47a2f5 | ||
|
|
55a8b9085e | ||
|
|
2f250c5569 | ||
|
|
e9d0565e6a | ||
|
|
272de5f34d | ||
|
|
60a319a482 | ||
|
|
9e440fd5e6 | ||
|
|
235f20813d | ||
|
|
55ce8a3e97 | ||
|
|
b7ac15ad55 | ||
|
|
038b64a416 | ||
|
|
ec2fbca979 | ||
|
|
7f28b1d2c9 | ||
|
|
6a0ec7d294 | ||
|
|
217215b035 | ||
|
|
a6fefcacc9 | ||
|
|
03023c04fc | ||
|
|
8dadfe6579 | ||
|
|
6c06de63e4 | ||
|
|
54a122ae34 | ||
|
|
7a0daee443 | ||
|
|
88b5e29092 | ||
|
|
b3ea08dd99 | ||
|
|
95794bc5b2 | ||
|
|
3275454bd6 | ||
|
|
7f5bb86127 | ||
|
|
cf1ae8f240 | ||
|
|
9b2261918f | ||
|
|
f74071691f | ||
|
|
6d5e02860e | ||
|
|
ffa2acb2f5 | ||
|
|
25b4ff771e | ||
|
|
7a48617fea | ||
|
|
800807b47a | ||
|
|
eaf11c6998 | ||
|
|
e2053d5a77 | ||
|
|
ae6b3ef7fb | ||
|
|
359c6e0f02 | ||
|
|
9a8b4593e1 | ||
|
|
02fc631e3c | ||
|
|
19e03a1fdd | ||
|
|
5ea6279711 | ||
|
|
c44578c341 | ||
|
|
ab34d3fe30 | ||
|
|
5aa27c14c6 | ||
|
|
a5e9edb2e5 | ||
|
|
bbd8ef1f26 | ||
|
|
ad8afa0d3d | ||
|
|
5198f30363 | ||
|
|
50e55761ab | ||
|
|
7cb67aa49c | ||
|
|
1d4993180a | ||
|
|
73a36d5556 | ||
|
|
368e489190 | ||
|
|
d582d4846e | ||
|
|
87ffad398e | ||
|
|
439e7eaca0 | ||
|
|
90d703ae91 | ||
|
|
2d80c90f78 | ||
|
|
b54c8e97bd | ||
|
|
58e69a6644 | ||
|
|
f09a13259f | ||
|
|
8775c5e1f2 | ||
|
|
61b7997ae9 | ||
|
|
99fa98844c | ||
|
|
6e5781c633 | ||
|
|
b58e524d78 | ||
|
|
0d669af44e | ||
|
|
a331c70233 | ||
|
|
fd7d688e6b |
58
.github/ISSUE_TEMPLATE/01_bug_report.yml
vendored
Normal file
58
.github/ISSUE_TEMPLATE/01_bug_report.yml
vendored
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
name: Bug 报告
|
||||||
|
description: 在提出问题前请先自行排除服务器端问题和升级到最新客户端,同时也请通过搜索确认是否有人提出过相同问题。
|
||||||
|
title: "[Bug]: "
|
||||||
|
labels: ["bug"]
|
||||||
|
body:
|
||||||
|
- type: input
|
||||||
|
id: "expectation"
|
||||||
|
attributes:
|
||||||
|
label: "预期情况"
|
||||||
|
description: "描述你认为应该发生什么"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: "describe-the-bug"
|
||||||
|
attributes:
|
||||||
|
label: "实际情况"
|
||||||
|
description: "描述实际发生了什么"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: "reproduction-method"
|
||||||
|
attributes:
|
||||||
|
label: "复现方法"
|
||||||
|
description: "在BUG出现前执行了哪些操作"
|
||||||
|
placeholder: 标序号
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: "log"
|
||||||
|
attributes:
|
||||||
|
label: "日志信息"
|
||||||
|
description: "位置在软件当前目录下的guiLogs"
|
||||||
|
placeholder: 在日志开始和结束位置粘贴冒号后的内容:```
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: "more"
|
||||||
|
attributes:
|
||||||
|
label: "额外信息"
|
||||||
|
description: "可选"
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: checkboxes
|
||||||
|
id: "latest-version"
|
||||||
|
attributes:
|
||||||
|
label: "我确认已更新至最新版本"
|
||||||
|
description: "否则请更新后尝试"
|
||||||
|
options:
|
||||||
|
- label: 是
|
||||||
|
required: true
|
||||||
|
- type: checkboxes
|
||||||
|
id: "issues"
|
||||||
|
attributes:
|
||||||
|
label: "我确认已查询历史issues"
|
||||||
|
description: "否则请查询后提出"
|
||||||
|
options:
|
||||||
|
- label: 是
|
||||||
|
required: true
|
||||||
34
.github/ISSUE_TEMPLATE/02_feature_request.yml
vendored
Normal file
34
.github/ISSUE_TEMPLATE/02_feature_request.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
name: Feature 请求
|
||||||
|
description: "为这个项目提出一个建议"
|
||||||
|
title: "[Feature request]: "
|
||||||
|
labels: ['enhancement']
|
||||||
|
body:
|
||||||
|
- type: input
|
||||||
|
id: problem
|
||||||
|
attributes:
|
||||||
|
label: 相关问题
|
||||||
|
description: "清楚而简洁地描述问题是什么。"
|
||||||
|
placeholder: "当我想要……时,软件不能……"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: way-to-solve
|
||||||
|
attributes:
|
||||||
|
label: 描述你希望的解决方案
|
||||||
|
description: "你希望发生什么"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: instead
|
||||||
|
attributes:
|
||||||
|
label: 描述你所考虑的替代方案
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: checkboxes
|
||||||
|
id: "issues"
|
||||||
|
attributes:
|
||||||
|
label: "我确认已查询历史issues"
|
||||||
|
description: "否则请查询后提出"
|
||||||
|
options:
|
||||||
|
- label: 是
|
||||||
|
required: true
|
||||||
33
.github/ISSUE_TEMPLATE/bug---.md
vendored
33
.github/ISSUE_TEMPLATE/bug---.md
vendored
@@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
name: Bug 报告
|
|
||||||
about: 在提出问题前请先自行排除服务器端问题和升级到最新客户端,同时也请通过搜索确认是否有人提出过相同问题。
|
|
||||||
title: "[BUG]"
|
|
||||||
labels: bug
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
在提出问题前请先自行排除服务器端问题和升级到最新客户端,同时也请通过搜索确认是否有人提出过相同问题。
|
|
||||||
|
|
||||||
### 预期行为
|
|
||||||
描述你认为应该发生什么
|
|
||||||
|
|
||||||
### 实际行为
|
|
||||||
描述实际发生了什么
|
|
||||||
|
|
||||||
### 复现方法
|
|
||||||
1.
|
|
||||||
2.
|
|
||||||
3.
|
|
||||||
|
|
||||||
### 日志信息,位置在当前目录下的guiLogs
|
|
||||||
<details>
|
|
||||||
|
|
||||||
```
|
|
||||||
在这里粘贴日志
|
|
||||||
```
|
|
||||||
</details>
|
|
||||||
|
|
||||||
### 环境信息(客户端请升级至最新正式版)
|
|
||||||
|
|
||||||
### 额外信息(可选)
|
|
||||||
20
.github/ISSUE_TEMPLATE/feature---.md
vendored
20
.github/ISSUE_TEMPLATE/feature---.md
vendored
@@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
name: Feature 请求
|
|
||||||
about: 为这个项目提出一个建议
|
|
||||||
title: "[Feature request]"
|
|
||||||
labels: enhancement
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**你的功能请求是否与一个问题有关?请描述。**
|
|
||||||
清楚而简洁地描述问题是什么。例如。我总是感到沮丧,当 [...]
|
|
||||||
|
|
||||||
**描述你希望的解决方案**
|
|
||||||
对你希望发生的事情进行清晰、简明的描述。
|
|
||||||
|
|
||||||
**描述你所考虑的替代方案**
|
|
||||||
对你考虑过的任何替代解决方案或功能进行清晰、简洁的描述。
|
|
||||||
|
|
||||||
**Additional context**
|
|
||||||
Add any other context or screenshots about the feature request here.
|
|
||||||
60
.github/workflows/build.yml
vendored
Normal file
60
.github/workflows/build.yml
vendored
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
name: release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "master" ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ "master" ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
configuration: [Release]
|
||||||
|
|
||||||
|
runs-on: windows-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# - name: 删除工作流运行
|
||||||
|
# uses: Mattraks/delete-workflow-runs@v2
|
||||||
|
# with:
|
||||||
|
# token: ${{ github.token }}
|
||||||
|
# repository: ${{ github.repository }}
|
||||||
|
# retain_days: 0
|
||||||
|
# keep_minimum_runs: 1
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: cd v2rayN &&
|
||||||
|
.\build.ps1
|
||||||
|
|
||||||
|
# - name: Package
|
||||||
|
# shell: pwsh
|
||||||
|
# run: |
|
||||||
|
# 7z a -mx9 ..\v2rayN.7z $env:Wap_Project_Directory
|
||||||
|
|
||||||
|
- name: Upload build artifacts
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: v2rayN
|
||||||
|
path: |
|
||||||
|
.\v2rayN\v2rayN.zip
|
||||||
|
|
||||||
|
# - name: Release
|
||||||
|
# uses: softprops/action-gh-release@v1
|
||||||
|
# env:
|
||||||
|
# GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||||
|
# with:
|
||||||
|
# prerelease: ${{ contains(github.ref, '-') }}
|
||||||
|
# draft: false
|
||||||
|
# files: |
|
||||||
|
# .\v2rayN\v2rayN.zip
|
||||||
|
# body: |
|
||||||
|
# [](https://t.me/netch_channel) [](https://t.me/netch_group)
|
||||||
|
# ## Changelogs
|
||||||
|
# * This is an automated deployment of GitHub Actions, the change log should be updated manually soon
|
||||||
|
|
||||||
|
# ## 更新日志
|
||||||
|
# * 这是 GitHub Actions 自动化部署,更新日志应该很快会手动更新
|
||||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -13,6 +13,7 @@
|
|||||||
.vs/slnx.sqlite
|
.vs/slnx.sqlite
|
||||||
.vs/VSWorkspaceState.json
|
.vs/VSWorkspaceState.json
|
||||||
/v2rayN/v2rayUpgrade/bin/Debug
|
/v2rayN/v2rayUpgrade/bin/Debug
|
||||||
/v2rayN/v2rayUpgrade/obj/Debug
|
|
||||||
/v2rayN/v2rayUpgrade/bin/Release
|
/v2rayN/v2rayUpgrade/bin/Release
|
||||||
/v2rayN/v2rayUpgrade/obj/Release
|
/v2rayN/v2rayUpgrade/obj/
|
||||||
|
*.user
|
||||||
|
/.vs/v2rayN
|
||||||
|
|||||||
21
README.md
21
README.md
@@ -1,5 +1,5 @@
|
|||||||
# v2rayN
|
# v2rayN
|
||||||
A V2Ray client for Windows, support [Xray core](https://github.com/XTLS/Xray-core) and [v2fly core](https://github.com/v2fly/v2ray-core)
|
A GUI client for Windows, support [Xray core](https://github.com/XTLS/Xray-core) and [v2fly core](https://github.com/v2fly/v2ray-core) and [others](https://github.com/2dust/v2rayN/wiki/List-of-supported-cores)
|
||||||
|
|
||||||
|
|
||||||
[](https://github.com/2dust/v2rayN/commits/master)
|
[](https://github.com/2dust/v2rayN/commits/master)
|
||||||
@@ -7,12 +7,17 @@ A V2Ray client for Windows, support [Xray core](https://github.com/XTLS/Xray-cor
|
|||||||
[](https://github.com/2dust/v2rayN/releases)
|
[](https://github.com/2dust/v2rayN/releases)
|
||||||
[](https://t.me/v2rayn)
|
[](https://t.me/v2rayn)
|
||||||
|
|
||||||
### How to use
|
|
||||||
- If you are newbie please download v2rayN-Core.zip from releases
|
## How to use
|
||||||
- Otherwise please download v2rayN.zip (Also need to download v2ray core in the same folder)
|
- If you are new to this, please download v2rayN-With-Core.zip from [releases](https://github.com/2dust/v2rayN/releases)
|
||||||
|
- Otherwise please download v2rayN.zip (you will also need to download cores in the bin directory)
|
||||||
- Run v2rayN.exe
|
- Run v2rayN.exe
|
||||||
|
|
||||||
### Requirements
|
## Requirements
|
||||||
- Microsoft [.NET Framework 4.8](https://dotnet.microsoft.com/zh-cn/download/dotnet-framework/thank-you/net48-web-installer)
|
- (6.35 and above)[Microsoft .NET 8.0 Desktop Runtime ](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
|
||||||
- v2fly core [https://github.com/v2fly/v2ray-core/releases](https://github.com/v2fly/v2ray-core/releases)
|
- (6.33 and below)[Microsoft .NET 6.0 Desktop Runtime ](https://dotnet.microsoft.com/en-us/download/dotnet/6.0)
|
||||||
- Xray core [https://github.com/XTLS/Xray-core/releases](https://github.com/XTLS/Xray-core/releases)
|
- [Supported cores](https://github.com/2dust/v2rayN/wiki/List-of-supported-cores)
|
||||||
|
|
||||||
|
|
||||||
|
## Telegram Channel
|
||||||
|
[github_2dust](https://t.me/github_2dust)
|
||||||
|
|||||||
63
v2rayN/.gitattributes
vendored
Normal file
63
v2rayN/.gitattributes
vendored
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
###############################################################################
|
||||||
|
# Set default behavior to automatically normalize line endings.
|
||||||
|
###############################################################################
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set default behavior for command prompt diff.
|
||||||
|
#
|
||||||
|
# This is need for earlier builds of msysgit that does not have it on by
|
||||||
|
# default for csharp files.
|
||||||
|
# Note: This is only used by command line
|
||||||
|
###############################################################################
|
||||||
|
#*.cs diff=csharp
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set the merge driver for project and solution files
|
||||||
|
#
|
||||||
|
# Merging from the command prompt will add diff markers to the files if there
|
||||||
|
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||||
|
# the diff markers are never inserted). Diff markers may cause the following
|
||||||
|
# file extensions to fail to load in VS. An alternative would be to treat
|
||||||
|
# these files as binary and thus will always conflict and require user
|
||||||
|
# intervention with every merge. To do so, just uncomment the entries below
|
||||||
|
###############################################################################
|
||||||
|
#*.sln merge=binary
|
||||||
|
#*.csproj merge=binary
|
||||||
|
#*.vbproj merge=binary
|
||||||
|
#*.vcxproj merge=binary
|
||||||
|
#*.vcproj merge=binary
|
||||||
|
#*.dbproj merge=binary
|
||||||
|
#*.fsproj merge=binary
|
||||||
|
#*.lsproj merge=binary
|
||||||
|
#*.wixproj merge=binary
|
||||||
|
#*.modelproj merge=binary
|
||||||
|
#*.sqlproj merge=binary
|
||||||
|
#*.wwaproj merge=binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# behavior for image files
|
||||||
|
#
|
||||||
|
# image files are treated as binary by default.
|
||||||
|
###############################################################################
|
||||||
|
#*.jpg binary
|
||||||
|
#*.png binary
|
||||||
|
#*.gif binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# diff behavior for common document formats
|
||||||
|
#
|
||||||
|
# Convert binary document formats to text before diffing them. This feature
|
||||||
|
# is only available from the command line. Turn it on by uncommenting the
|
||||||
|
# entries below.
|
||||||
|
###############################################################################
|
||||||
|
#*.doc diff=astextplain
|
||||||
|
#*.DOC diff=astextplain
|
||||||
|
#*.docx diff=astextplain
|
||||||
|
#*.DOCX diff=astextplain
|
||||||
|
#*.dot diff=astextplain
|
||||||
|
#*.DOT diff=astextplain
|
||||||
|
#*.pdf diff=astextplain
|
||||||
|
#*.PDF diff=astextplain
|
||||||
|
#*.rtf diff=astextplain
|
||||||
|
#*.RTF diff=astextplain
|
||||||
363
v2rayN/.gitignore
vendored
Normal file
363
v2rayN/.gitignore
vendored
Normal file
@@ -0,0 +1,363 @@
|
|||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
##
|
||||||
|
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.rsuser
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.userosscache
|
||||||
|
*.sln.docstates
|
||||||
|
|
||||||
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
|
*.userprefs
|
||||||
|
|
||||||
|
# Mono auto generated files
|
||||||
|
mono_crash.*
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
[Dd]ebug/
|
||||||
|
[Dd]ebugPublic/
|
||||||
|
[Rr]elease/
|
||||||
|
[Rr]eleases/
|
||||||
|
x64/
|
||||||
|
x86/
|
||||||
|
[Ww][Ii][Nn]32/
|
||||||
|
[Aa][Rr][Mm]/
|
||||||
|
[Aa][Rr][Mm]64/
|
||||||
|
bld/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
[Oo]ut/
|
||||||
|
[Ll]og/
|
||||||
|
[Ll]ogs/
|
||||||
|
|
||||||
|
# Visual Studio 2015/2017 cache/options directory
|
||||||
|
.vs/
|
||||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||||
|
#wwwroot/
|
||||||
|
|
||||||
|
# Visual Studio 2017 auto generated files
|
||||||
|
Generated\ Files/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
# NUnit
|
||||||
|
*.VisualState.xml
|
||||||
|
TestResult.xml
|
||||||
|
nunit-*.xml
|
||||||
|
|
||||||
|
# Build Results of an ATL Project
|
||||||
|
[Dd]ebugPS/
|
||||||
|
[Rr]eleasePS/
|
||||||
|
dlldata.c
|
||||||
|
|
||||||
|
# Benchmark Results
|
||||||
|
BenchmarkDotNet.Artifacts/
|
||||||
|
|
||||||
|
# .NET Core
|
||||||
|
project.lock.json
|
||||||
|
project.fragment.lock.json
|
||||||
|
artifacts/
|
||||||
|
|
||||||
|
# ASP.NET Scaffolding
|
||||||
|
ScaffoldingReadMe.txt
|
||||||
|
|
||||||
|
# StyleCop
|
||||||
|
StyleCopReport.xml
|
||||||
|
|
||||||
|
# Files built by Visual Studio
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*_h.h
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.iobj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.ipdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*_wpftmp.csproj
|
||||||
|
*.log
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.svclog
|
||||||
|
*.scc
|
||||||
|
|
||||||
|
# Chutzpah Test files
|
||||||
|
_Chutzpah*
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opendb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
*.VC.db
|
||||||
|
*.VC.VC.opendb
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
*.sap
|
||||||
|
|
||||||
|
# Visual Studio Trace Files
|
||||||
|
*.e2e
|
||||||
|
|
||||||
|
# TFS 2012 Local Workspace
|
||||||
|
$tf/
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
*.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
*.DotSettings.user
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
_TeamCity*
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
*.dotCover
|
||||||
|
|
||||||
|
# AxoCover is a Code Coverage Tool
|
||||||
|
.axoCover/*
|
||||||
|
!.axoCover/settings.json
|
||||||
|
|
||||||
|
# Coverlet is a free, cross platform Code Coverage Tool
|
||||||
|
coverage*.json
|
||||||
|
coverage*.xml
|
||||||
|
coverage*.info
|
||||||
|
|
||||||
|
# Visual Studio code coverage results
|
||||||
|
*.coverage
|
||||||
|
*.coveragexml
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
_NCrunch_*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
nCrunchTemp_*
|
||||||
|
|
||||||
|
# MightyMoose
|
||||||
|
*.mm.*
|
||||||
|
AutoTest.Net/
|
||||||
|
|
||||||
|
# Web workbench (sass)
|
||||||
|
.sass-cache/
|
||||||
|
|
||||||
|
# Installshield output folder
|
||||||
|
[Ee]xpress/
|
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in
|
||||||
|
DocProject/buildhelp/
|
||||||
|
DocProject/Help/*.HxT
|
||||||
|
DocProject/Help/*.HxC
|
||||||
|
DocProject/Help/*.hhc
|
||||||
|
DocProject/Help/*.hhk
|
||||||
|
DocProject/Help/*.hhp
|
||||||
|
DocProject/Help/Html2
|
||||||
|
DocProject/Help/html
|
||||||
|
|
||||||
|
# Click-Once directory
|
||||||
|
publish/
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
*.[Pp]ublish.xml
|
||||||
|
*.azurePubxml
|
||||||
|
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||||
|
# but database connection strings (with potential passwords) will be unencrypted
|
||||||
|
*.pubxml
|
||||||
|
*.publishproj
|
||||||
|
|
||||||
|
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||||
|
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||||
|
# in these scripts will be unencrypted
|
||||||
|
PublishScripts/
|
||||||
|
|
||||||
|
# NuGet Packages
|
||||||
|
*.nupkg
|
||||||
|
# NuGet Symbol Packages
|
||||||
|
*.snupkg
|
||||||
|
# The packages folder can be ignored because of Package Restore
|
||||||
|
**/[Pp]ackages/*
|
||||||
|
# except build/, which is used as an MSBuild target.
|
||||||
|
!**/[Pp]ackages/build/
|
||||||
|
# Uncomment if necessary however generally it will be regenerated when needed
|
||||||
|
#!**/[Pp]ackages/repositories.config
|
||||||
|
# NuGet v3's project.json files produces more ignorable files
|
||||||
|
*.nuget.props
|
||||||
|
*.nuget.targets
|
||||||
|
|
||||||
|
# Microsoft Azure Build Output
|
||||||
|
csx/
|
||||||
|
*.build.csdef
|
||||||
|
|
||||||
|
# Microsoft Azure Emulator
|
||||||
|
ecf/
|
||||||
|
rcf/
|
||||||
|
|
||||||
|
# Windows Store app package directories and files
|
||||||
|
AppPackages/
|
||||||
|
BundleArtifacts/
|
||||||
|
Package.StoreAssociation.xml
|
||||||
|
_pkginfo.txt
|
||||||
|
*.appx
|
||||||
|
*.appxbundle
|
||||||
|
*.appxupload
|
||||||
|
|
||||||
|
# Visual Studio cache files
|
||||||
|
# files ending in .cache can be ignored
|
||||||
|
*.[Cc]ache
|
||||||
|
# but keep track of directories ending in .cache
|
||||||
|
!?*.[Cc]ache/
|
||||||
|
|
||||||
|
# Others
|
||||||
|
ClientBin/
|
||||||
|
~$*
|
||||||
|
*~
|
||||||
|
*.dbmdl
|
||||||
|
*.dbproj.schemaview
|
||||||
|
*.jfm
|
||||||
|
*.pfx
|
||||||
|
*.publishsettings
|
||||||
|
orleans.codegen.cs
|
||||||
|
|
||||||
|
# Including strong name files can present a security risk
|
||||||
|
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||||
|
#*.snk
|
||||||
|
|
||||||
|
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||||
|
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||||
|
#bower_components/
|
||||||
|
|
||||||
|
# RIA/Silverlight projects
|
||||||
|
Generated_Code/
|
||||||
|
|
||||||
|
# Backup & report files from converting an old project file
|
||||||
|
# to a newer Visual Studio version. Backup files are not needed,
|
||||||
|
# because we have git ;-)
|
||||||
|
_UpgradeReport_Files/
|
||||||
|
Backup*/
|
||||||
|
UpgradeLog*.XML
|
||||||
|
UpgradeLog*.htm
|
||||||
|
ServiceFabricBackup/
|
||||||
|
*.rptproj.bak
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
*.mdf
|
||||||
|
*.ldf
|
||||||
|
*.ndf
|
||||||
|
|
||||||
|
# Business Intelligence projects
|
||||||
|
*.rdl.data
|
||||||
|
*.bim.layout
|
||||||
|
*.bim_*.settings
|
||||||
|
*.rptproj.rsuser
|
||||||
|
*- [Bb]ackup.rdl
|
||||||
|
*- [Bb]ackup ([0-9]).rdl
|
||||||
|
*- [Bb]ackup ([0-9][0-9]).rdl
|
||||||
|
|
||||||
|
# Microsoft Fakes
|
||||||
|
FakesAssemblies/
|
||||||
|
|
||||||
|
# GhostDoc plugin setting file
|
||||||
|
*.GhostDoc.xml
|
||||||
|
|
||||||
|
# Node.js Tools for Visual Studio
|
||||||
|
.ntvs_analysis.dat
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# Visual Studio 6 build log
|
||||||
|
*.plg
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace options file
|
||||||
|
*.opt
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||||
|
*.vbw
|
||||||
|
|
||||||
|
# Visual Studio LightSwitch build output
|
||||||
|
**/*.HTMLClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/ModelManifest.xml
|
||||||
|
**/*.Server/GeneratedArtifacts
|
||||||
|
**/*.Server/ModelManifest.xml
|
||||||
|
_Pvt_Extensions
|
||||||
|
|
||||||
|
# Paket dependency manager
|
||||||
|
.paket/paket.exe
|
||||||
|
paket-files/
|
||||||
|
|
||||||
|
# FAKE - F# Make
|
||||||
|
.fake/
|
||||||
|
|
||||||
|
# CodeRush personal settings
|
||||||
|
.cr/personal
|
||||||
|
|
||||||
|
# Python Tools for Visual Studio (PTVS)
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
|
||||||
|
# Cake - Uncomment if you are using it
|
||||||
|
# tools/**
|
||||||
|
# !tools/packages.config
|
||||||
|
|
||||||
|
# Tabs Studio
|
||||||
|
*.tss
|
||||||
|
|
||||||
|
# Telerik's JustMock configuration file
|
||||||
|
*.jmconfig
|
||||||
|
|
||||||
|
# BizTalk build output
|
||||||
|
*.btp.cs
|
||||||
|
*.btm.cs
|
||||||
|
*.odx.cs
|
||||||
|
*.xsd.cs
|
||||||
|
|
||||||
|
# OpenCover UI analysis results
|
||||||
|
OpenCover/
|
||||||
|
|
||||||
|
# Azure Stream Analytics local run output
|
||||||
|
ASALocalRun/
|
||||||
|
|
||||||
|
# MSBuild Binary and Structured Log
|
||||||
|
*.binlog
|
||||||
|
|
||||||
|
# NVidia Nsight GPU debugger configuration file
|
||||||
|
*.nvuser
|
||||||
|
|
||||||
|
# MFractors (Xamarin productivity tool) working folder
|
||||||
|
.mfractor/
|
||||||
|
|
||||||
|
# Local History for Visual Studio
|
||||||
|
.localhistory/
|
||||||
|
|
||||||
|
# BeatPulse healthcheck temp database
|
||||||
|
healthchecksdb
|
||||||
|
|
||||||
|
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
||||||
|
MigrationBackup/
|
||||||
|
|
||||||
|
# Ionide (cross platform F# VS Code tools) working folder
|
||||||
|
.ionide/
|
||||||
|
|
||||||
|
# Fody - auto-generated XML schema
|
||||||
|
FodyWeavers.xsd
|
||||||
102
v2rayN/PacLib/PacHandler.cs
Normal file
102
v2rayN/PacLib/PacHandler.cs
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace PacLib;
|
||||||
|
|
||||||
|
public class PacHandler
|
||||||
|
{
|
||||||
|
private static string _configPath;
|
||||||
|
private static int _httpPort;
|
||||||
|
private static int _pacPort;
|
||||||
|
private static TcpListener? _tcpListener;
|
||||||
|
private static string _pacText;
|
||||||
|
private static bool _isRunning;
|
||||||
|
private static bool _needRestart = true;
|
||||||
|
|
||||||
|
public static void Start(string configPath, int httpPort, int pacPort)
|
||||||
|
{
|
||||||
|
_needRestart = (configPath != _configPath || httpPort != _httpPort || pacPort != _pacPort || !_isRunning);
|
||||||
|
|
||||||
|
_configPath = configPath;
|
||||||
|
_httpPort = httpPort;
|
||||||
|
_pacPort = pacPort;
|
||||||
|
|
||||||
|
InitText();
|
||||||
|
|
||||||
|
if (_needRestart)
|
||||||
|
{
|
||||||
|
Stop();
|
||||||
|
RunListener();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void InitText()
|
||||||
|
{
|
||||||
|
var path = Path.Combine(_configPath, "pac.txt");
|
||||||
|
if (!File.Exists(path))
|
||||||
|
{
|
||||||
|
File.AppendAllText(path, Resources.ResourceManager.GetString("pac"));
|
||||||
|
}
|
||||||
|
|
||||||
|
_pacText = File.ReadAllText(path).Replace("__PROXY__", $"PROXY 127.0.0.1:{_httpPort};DIRECT;");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void RunListener()
|
||||||
|
{
|
||||||
|
_tcpListener = TcpListener.Create(_pacPort);
|
||||||
|
_isRunning = true;
|
||||||
|
_tcpListener.Start();
|
||||||
|
Task.Factory.StartNew(async () =>
|
||||||
|
{
|
||||||
|
while (_isRunning)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!_tcpListener.Pending())
|
||||||
|
{
|
||||||
|
await Task.Delay(10);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var client = _tcpListener.AcceptTcpClient();
|
||||||
|
await Task.Run(() =>
|
||||||
|
{
|
||||||
|
var stream = client.GetStream();
|
||||||
|
var sb = new StringBuilder();
|
||||||
|
sb.AppendLine("HTTP/1.0 200 OK");
|
||||||
|
sb.AppendLine("Content-type:application/x-ns-proxy-autoconfig");
|
||||||
|
sb.AppendLine("Connection:close");
|
||||||
|
sb.AppendLine("Content-Length:" + Encoding.UTF8.GetByteCount(_pacText));
|
||||||
|
sb.AppendLine();
|
||||||
|
sb.Append(_pacText);
|
||||||
|
var content = Encoding.UTF8.GetBytes(sb.ToString());
|
||||||
|
stream.Write(content, 0, content.Length);
|
||||||
|
stream.Flush();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, TaskCreationOptions.LongRunning);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Stop()
|
||||||
|
{
|
||||||
|
if (_tcpListener != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_isRunning = false;
|
||||||
|
_tcpListener.Stop();
|
||||||
|
_tcpListener = null;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
20
v2rayN/PacLib/PacLib.csproj
Normal file
20
v2rayN/PacLib/PacLib.csproj
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Update="Resources.Designer.cs">
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<EmbeddedResource Update="Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
</EmbeddedResource>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
95
v2rayN/PacLib/Resources.Designer.cs
generated
Normal file
95
v2rayN/PacLib/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
// 运行时版本:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
|
// 重新生成代码,这些更改将会丢失。
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace PacLib {
|
||||||
|
using System;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 一个强类型的资源类,用于查找本地化的字符串等。
|
||||||
|
/// </summary>
|
||||||
|
// 此类是由 StronglyTypedResourceBuilder
|
||||||
|
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||||
|
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||||
|
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
internal class Resources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal Resources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 返回此类使用的缓存的 ResourceManager 实例。
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||||
|
get {
|
||||||
|
if (object.ReferenceEquals(resourceMan, null)) {
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PacLib.Resources", typeof(Resources).Assembly);
|
||||||
|
resourceMan = temp;
|
||||||
|
}
|
||||||
|
return resourceMan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写当前线程的 CurrentUICulture 属性,对
|
||||||
|
/// 使用此强类型资源类的所有资源查找执行重写。
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Globalization.CultureInfo Culture {
|
||||||
|
get {
|
||||||
|
return resourceCulture;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
resourceCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 var proxy = '__PROXY__';
|
||||||
|
///var rules = [
|
||||||
|
/// [
|
||||||
|
/// [],
|
||||||
|
/// []
|
||||||
|
/// ],
|
||||||
|
/// [
|
||||||
|
/// [
|
||||||
|
/// "aftygh.gov.tw",
|
||||||
|
/// "aide.gov.tw",
|
||||||
|
/// "aliyun.com",
|
||||||
|
/// "arte.gov.tw",
|
||||||
|
/// "baidu.com",
|
||||||
|
/// "chinaso.com",
|
||||||
|
/// "chinaz.com",
|
||||||
|
/// "chukuang.gov.tw",
|
||||||
|
/// "cycab.gov.tw",
|
||||||
|
/// "dbnsa.gov.tw",
|
||||||
|
/// "df.gov.tw",
|
||||||
|
/// "eastcoast-nsa.gov.tw",
|
||||||
|
/// "erv-nsa.gov.tw",
|
||||||
|
/// "grb.gov.tw",
|
||||||
|
/// "haosou.com",
|
||||||
|
/// [字符串的其余部分被截断]"; 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string pac {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("pac", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -117,4 +117,8 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="pac" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>Resources\pac.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
6024
v2rayN/PacLib/Resources/pac.txt
Normal file
6024
v2rayN/PacLib/Resources/pac.txt
Normal file
File diff suppressed because it is too large
Load Diff
20
v2rayN/ProtosLib/ProtosLib.csproj
Normal file
20
v2rayN/ProtosLib/ProtosLib.csproj
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Protobuf Include="Statistics.proto" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Google.Protobuf" Version="3.26.1" />
|
||||||
|
<PackageReference Include="Grpc.Net.Client" Version="2.62.0" />
|
||||||
|
<PackageReference Include="Grpc.Tools" Version="2.62.0">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
|
|
||||||
package v2ray.core.app.stats.command;
|
package v2ray.core.app.stats.command;
|
||||||
option csharp_namespace = "v2rayN.Protos.Statistics";
|
option csharp_namespace = "ProtosLib.Statistics";
|
||||||
|
|
||||||
message GetStatsRequest {
|
message GetStatsRequest {
|
||||||
// Name of the stat counter.
|
// Name of the stat counter.
|
||||||
13
v2rayN/ProtosLib/Tests.cs
Normal file
13
v2rayN/ProtosLib/Tests.cs
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
using ProtosLib.Statistics;
|
||||||
|
|
||||||
|
namespace ProtosLib
|
||||||
|
{
|
||||||
|
public class Tests
|
||||||
|
{
|
||||||
|
private StatsService.StatsServiceClient client_;
|
||||||
|
|
||||||
|
public Tests()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
39
v2rayN/build.ps1
Normal file
39
v2rayN/build.ps1
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
param (
|
||||||
|
[Parameter()]
|
||||||
|
[ValidateNotNullOrEmpty()]
|
||||||
|
[string]
|
||||||
|
$OutputPath = '.\bin\v2rayN'
|
||||||
|
)
|
||||||
|
|
||||||
|
Write-Host 'Building'
|
||||||
|
|
||||||
|
dotnet publish `
|
||||||
|
.\v2rayN\v2rayN.csproj `
|
||||||
|
-c Release `
|
||||||
|
--self-contained false `
|
||||||
|
-p:PublishReadyToRun=true `
|
||||||
|
-p:PublishSingleFile=true `
|
||||||
|
-o $OutputPath
|
||||||
|
|
||||||
|
dotnet publish `
|
||||||
|
.\v2rayUpgrade\v2rayUpgrade.csproj `
|
||||||
|
-c Release `
|
||||||
|
--self-contained false `
|
||||||
|
-p:PublishReadyToRun=true `
|
||||||
|
-p:PublishSingleFile=true `
|
||||||
|
-o $OutputPath
|
||||||
|
|
||||||
|
if ( -Not $? ) {
|
||||||
|
exit $lastExitCode
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Test-Path -Path .\bin\v2rayN ) {
|
||||||
|
rm -Force "$OutputPath\*.pdb"
|
||||||
|
rm -Force "$OutputPath\*.xml"
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host 'Build done'
|
||||||
|
|
||||||
|
ls $OutputPath
|
||||||
|
7z a v2rayN.zip $OutputPath
|
||||||
|
exit 0
|
||||||
@@ -1,41 +1,43 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 15
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 15.0.28010.2050
|
VisualStudioVersion = 17.3.32811.315
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "v2rayN", "v2rayN\v2rayN.csproj", "{0A9785E6-D256-4B73-9757-4EF59955FD1E}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "v2rayN", "v2rayN\v2rayN.csproj", "{6DE127CA-1763-4236-B297-D2EF9CB2EC9B}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "v2rayUpgrade", "v2rayUpgrade\v2rayUpgrade.csproj", "{F82BE52A-155C-492C-9E0A-1E917EC62C78}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProtosLib", "ProtosLib\ProtosLib.csproj", "{C5F24BB0-9CC1-44DD-82FF-D545F081819B}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PacLib", "PacLib\PacLib.csproj", "{EE4E6CD8-8353-446B-8F29-A841A02AE5EC}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "v2rayUpgrade", "v2rayUpgrade\v2rayUpgrade.csproj", "{3CD0B9E8-331B-42C6-A395-4DA0FD4BC8EB}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
Debug|x86 = Debug|x86
|
|
||||||
Release|Any CPU = Release|Any CPU
|
Release|Any CPU = Release|Any CPU
|
||||||
Release|x86 = Release|x86
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{0A9785E6-D256-4B73-9757-4EF59955FD1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{6DE127CA-1763-4236-B297-D2EF9CB2EC9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{0A9785E6-D256-4B73-9757-4EF59955FD1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{6DE127CA-1763-4236-B297-D2EF9CB2EC9B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{0A9785E6-D256-4B73-9757-4EF59955FD1E}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{6DE127CA-1763-4236-B297-D2EF9CB2EC9B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{0A9785E6-D256-4B73-9757-4EF59955FD1E}.Debug|x86.Build.0 = Debug|Any CPU
|
{6DE127CA-1763-4236-B297-D2EF9CB2EC9B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{0A9785E6-D256-4B73-9757-4EF59955FD1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{C5F24BB0-9CC1-44DD-82FF-D545F081819B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{0A9785E6-D256-4B73-9757-4EF59955FD1E}.Release|Any CPU.Build.0 = Release|Any CPU
|
{C5F24BB0-9CC1-44DD-82FF-D545F081819B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{0A9785E6-D256-4B73-9757-4EF59955FD1E}.Release|x86.ActiveCfg = Release|Any CPU
|
{C5F24BB0-9CC1-44DD-82FF-D545F081819B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{F82BE52A-155C-492C-9E0A-1E917EC62C78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{C5F24BB0-9CC1-44DD-82FF-D545F081819B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{F82BE52A-155C-492C-9E0A-1E917EC62C78}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{EE4E6CD8-8353-446B-8F29-A841A02AE5EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{F82BE52A-155C-492C-9E0A-1E917EC62C78}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{EE4E6CD8-8353-446B-8F29-A841A02AE5EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{F82BE52A-155C-492C-9E0A-1E917EC62C78}.Debug|x86.Build.0 = Debug|Any CPU
|
{EE4E6CD8-8353-446B-8F29-A841A02AE5EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{F82BE52A-155C-492C-9E0A-1E917EC62C78}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{EE4E6CD8-8353-446B-8F29-A841A02AE5EC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{F82BE52A-155C-492C-9E0A-1E917EC62C78}.Release|Any CPU.Build.0 = Release|Any CPU
|
{3CD0B9E8-331B-42C6-A395-4DA0FD4BC8EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{F82BE52A-155C-492C-9E0A-1E917EC62C78}.Release|x86.ActiveCfg = Release|Any CPU
|
{3CD0B9E8-331B-42C6-A395-4DA0FD4BC8EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{F82BE52A-155C-492C-9E0A-1E917EC62C78}.Release|x86.Build.0 = Release|Any CPU
|
{3CD0B9E8-331B-42C6-A395-4DA0FD4BC8EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{3CD0B9E8-331B-42C6-A395-4DA0FD4BC8EB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
RESX_SortFileContentOnSave = True
|
SolutionGuid = {43E06CBD-3DA9-40A3-8E4D-F0943CB0DD32}
|
||||||
SolutionGuid = {56B88873-C9CC-4069-A1E5-DABD6C6E865E}
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|||||||
Binary file not shown.
161
v2rayN/v2rayN/App.xaml
Normal file
161
v2rayN/v2rayN/App.xaml
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
<Application
|
||||||
|
x:Class="v2rayN.App"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:conv="clr-namespace:v2rayN.Converters"
|
||||||
|
ShutdownMode="OnExplicitShutdown"
|
||||||
|
StartupUri="Views/MainWindow.xaml">
|
||||||
|
<Application.Resources>
|
||||||
|
<ResourceDictionary xmlns:system="clr-namespace:System;assembly=mscorlib">
|
||||||
|
<ResourceDictionary.MergedDictionaries>
|
||||||
|
<materialDesign:BundledTheme
|
||||||
|
BaseTheme="Light"
|
||||||
|
PrimaryColor="Blue"
|
||||||
|
SecondaryColor="Lime" />
|
||||||
|
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
|
||||||
|
</ResourceDictionary.MergedDictionaries>
|
||||||
|
<system:Double x:Key="MenuItemHeight">26</system:Double>
|
||||||
|
<system:Double x:Key="StdFontSize">12</system:Double>
|
||||||
|
<system:Double x:Key="StdFontSize1">13</system:Double>
|
||||||
|
<system:Double x:Key="StdFontSize2">14</system:Double>
|
||||||
|
<system:Double x:Key="StdFontSizeMsg">11</system:Double>
|
||||||
|
|
||||||
|
<conv:InverseBooleanConverter x:Key="InverseBooleanConverter" />
|
||||||
|
<Thickness
|
||||||
|
x:Key="ServerItemMargin"
|
||||||
|
Bottom="4"
|
||||||
|
Left="4"
|
||||||
|
Right="4"
|
||||||
|
Top="4" />
|
||||||
|
<Thickness
|
||||||
|
x:Key="SettingItemMargin"
|
||||||
|
Bottom="8"
|
||||||
|
Left="8"
|
||||||
|
Right="8"
|
||||||
|
Top="8" />
|
||||||
|
<Thickness
|
||||||
|
x:Key="OutlinedTextBoxDefaultPadding"
|
||||||
|
Bottom="12"
|
||||||
|
Left="16"
|
||||||
|
Right="12"
|
||||||
|
Top="12" />
|
||||||
|
<Style
|
||||||
|
x:Key="ModuleTitle"
|
||||||
|
BasedOn="{StaticResource MaterialDesignTextBlock}"
|
||||||
|
TargetType="{x:Type TextBlock}">
|
||||||
|
<Setter Property="FontSize" Value="{DynamicResource StdFontSize2}" />
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="ToolbarTextBlock"
|
||||||
|
BasedOn="{StaticResource MaterialDesignTextBlock}"
|
||||||
|
TargetType="{x:Type TextBlock}">
|
||||||
|
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="StatusbarItem"
|
||||||
|
BasedOn="{StaticResource MaterialDesignTextBlock}"
|
||||||
|
TargetType="{x:Type TextBlock}">
|
||||||
|
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
|
||||||
|
<Setter Property="Padding" Value="0" />
|
||||||
|
</Style>
|
||||||
|
<Style TargetType="{x:Type TextElement}">
|
||||||
|
<Setter Property="FontWeight" Value="Regular" />
|
||||||
|
<Setter Property="Foreground" Value="{DynamicResource MaterialDesignBody}" />
|
||||||
|
</Style>
|
||||||
|
<Style TargetType="{x:Type TextBlock}">
|
||||||
|
<Setter Property="FontWeight" Value="Regular" />
|
||||||
|
<Setter Property="Foreground" Value="{DynamicResource MaterialDesignBody}" />
|
||||||
|
</Style>
|
||||||
|
<Style x:Key="lvItemSelected" TargetType="{x:Type ListViewItem}">
|
||||||
|
<Setter Property="Height" Value="20" />
|
||||||
|
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
|
||||||
|
<Style.Triggers>
|
||||||
|
<Trigger Property="IsSelected" Value="true">
|
||||||
|
<Setter Property="Background" Value="{DynamicResource PrimaryHueLightBrush}" />
|
||||||
|
</Trigger>
|
||||||
|
<Trigger Property="IsMouseOver" Value="true">
|
||||||
|
<Setter Property="Background" Value="{DynamicResource PrimaryHueMidBrush}" />
|
||||||
|
</Trigger>
|
||||||
|
</Style.Triggers>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style x:Key="GridViewColumnHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
|
||||||
|
<Setter Property="Height" Value="30" />
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="ListItemCheckBox"
|
||||||
|
BasedOn="{StaticResource MaterialDesignUserForegroundCheckBox}"
|
||||||
|
TargetType="{x:Type CheckBox}">
|
||||||
|
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="DefButton"
|
||||||
|
BasedOn="{StaticResource MaterialDesignRaisedButton}"
|
||||||
|
TargetType="{x:Type ButtonBase}">
|
||||||
|
<Setter Property="FontSize" Value="{DynamicResource StdFontSize1}" />
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="DefContextMenu"
|
||||||
|
BasedOn="{StaticResource MaterialDesignContextMenu}"
|
||||||
|
TargetType="{x:Type ContextMenu}">
|
||||||
|
<Setter Property="FontSize" Value="{DynamicResource StdFontSize1}" />
|
||||||
|
<Setter Property="FontFamily" Value="{x:Static conv:MaterialDesignFonts.MyFont}" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style
|
||||||
|
x:Key="ToolbarMenu"
|
||||||
|
BasedOn="{StaticResource MaterialDesignMenu}"
|
||||||
|
TargetType="{x:Type Menu}">
|
||||||
|
<Setter Property="FontSize" Value="{DynamicResource StdFontSize1}" />
|
||||||
|
<Setter Property="FontFamily" Value="{x:Static conv:MaterialDesignFonts.MyFont}" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style
|
||||||
|
x:Key="DefComboBox"
|
||||||
|
BasedOn="{StaticResource MaterialDesignComboBox}"
|
||||||
|
TargetType="{x:Type ComboBox}">
|
||||||
|
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
|
||||||
|
<Setter Property="HorizontalAlignment" Value="Left" />
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="DefDataGrid"
|
||||||
|
BasedOn="{StaticResource MaterialDesignDataGrid}"
|
||||||
|
TargetType="{x:Type DataGrid}">
|
||||||
|
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="DefTextBox"
|
||||||
|
BasedOn="{StaticResource MaterialDesignTextBox}"
|
||||||
|
TargetType="{x:Type TextBox}">
|
||||||
|
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="MyOutlinedTextBox"
|
||||||
|
BasedOn="{StaticResource MaterialDesignOutlinedTextBox}"
|
||||||
|
TargetType="{x:Type TextBox}">
|
||||||
|
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
|
||||||
|
<Setter Property="Padding" Value="{StaticResource OutlinedTextBoxDefaultPadding}" />
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="MyGroupBox"
|
||||||
|
BasedOn="{StaticResource MaterialDesignGroupBox}"
|
||||||
|
TargetType="{x:Type GroupBox}">
|
||||||
|
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="MyChipListBoxItem"
|
||||||
|
BasedOn="{StaticResource MaterialDesignChoiceChipPrimaryOutlineListBoxItem}"
|
||||||
|
TargetType="{x:Type ListBoxItem}">
|
||||||
|
<Setter Property="Margin" Value="-2,0" />
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="MyOutlinedTextComboBox"
|
||||||
|
BasedOn="{StaticResource MaterialDesignOutlinedComboBox}"
|
||||||
|
TargetType="{x:Type ComboBox}">
|
||||||
|
<Setter Property="FontSize" Value="{DynamicResource StdFontSize}" />
|
||||||
|
<Setter Property="Padding" Value="{StaticResource OutlinedTextBoxDefaultPadding}" />
|
||||||
|
</Style>
|
||||||
|
</ResourceDictionary>
|
||||||
|
</Application.Resources>
|
||||||
|
</Application>
|
||||||
93
v2rayN/v2rayN/App.xaml.cs
Normal file
93
v2rayN/v2rayN/App.xaml.cs
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Threading;
|
||||||
|
using v2rayN.Handler;
|
||||||
|
using v2rayN.Model;
|
||||||
|
|
||||||
|
namespace v2rayN
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Interaction logic for App.xaml
|
||||||
|
/// </summary>
|
||||||
|
public partial class App : Application
|
||||||
|
{
|
||||||
|
public static EventWaitHandle ProgramStarted;
|
||||||
|
private static Config _config;
|
||||||
|
|
||||||
|
public App()
|
||||||
|
{
|
||||||
|
// Locator.CurrentMutable.RegisterViewsForViewModels(Assembly.GetCallingAssembly());
|
||||||
|
this.DispatcherUnhandledException += App_DispatcherUnhandledException;
|
||||||
|
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
||||||
|
TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 只打开一个进程
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
protected override void OnStartup(StartupEventArgs e)
|
||||||
|
{
|
||||||
|
var exePathKey = Utils.GetMD5(Utils.GetExePath());
|
||||||
|
|
||||||
|
var rebootas = (e.Args ?? new string[] { }).Any(t => t == Global.RebootAs);
|
||||||
|
ProgramStarted = new EventWaitHandle(false, EventResetMode.AutoReset, exePathKey, out bool bCreatedNew);
|
||||||
|
if (!rebootas && !bCreatedNew)
|
||||||
|
{
|
||||||
|
ProgramStarted.Set();
|
||||||
|
Environment.Exit(0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Logging.Setup();
|
||||||
|
Init();
|
||||||
|
Logging.LoggingEnabled(_config.guiItem.enableLog);
|
||||||
|
Logging.SaveLog($"v2rayN start up | {Utils.GetVersion()} | {Utils.GetExePath()}");
|
||||||
|
Logging.ClearLogs();
|
||||||
|
|
||||||
|
Thread.CurrentThread.CurrentUICulture = new(_config.uiItem.currentLanguage);
|
||||||
|
|
||||||
|
base.OnStartup(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Init()
|
||||||
|
{
|
||||||
|
if (ConfigHandler.LoadConfig(ref _config) != 0)
|
||||||
|
{
|
||||||
|
UI.Show($"Loading GUI configuration file is abnormal,please restart the application{Environment.NewLine}加载GUI配置文件异常,请重启应用");
|
||||||
|
Environment.Exit(0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//if (RuntimeInformation.ProcessArchitecture != Architecture.X86 && RuntimeInformation.ProcessArchitecture != Architecture.X64)
|
||||||
|
//{
|
||||||
|
// _config.guiItem.enableStatistics = false;
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
|
||||||
|
{
|
||||||
|
Logging.SaveLog("App_DispatcherUnhandledException", e.Exception);
|
||||||
|
e.Handled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.ExceptionObject != null)
|
||||||
|
{
|
||||||
|
Logging.SaveLog("CurrentDomain_UnhandledException", (Exception)e.ExceptionObject!);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TaskScheduler_UnobservedTaskException(object? sender, UnobservedTaskExceptionEventArgs e)
|
||||||
|
{
|
||||||
|
Logging.SaveLog("TaskScheduler_UnobservedTaskException", e.Exception);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnExit(ExitEventArgs e)
|
||||||
|
{
|
||||||
|
Logging.SaveLog("OnExit");
|
||||||
|
base.OnExit(e);
|
||||||
|
Process.GetCurrentProcess().Kill();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
10
v2rayN/v2rayN/AssemblyInfo.cs
Normal file
10
v2rayN/v2rayN/AssemblyInfo.cs
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
[assembly: ThemeInfo(
|
||||||
|
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
|
||||||
|
//(used if a resource is not found in the page,
|
||||||
|
// or application resource dictionaries)
|
||||||
|
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
|
||||||
|
//(used if a resource is not found in the page,
|
||||||
|
// app, or any theme specific resource dictionaries)
|
||||||
|
)]
|
||||||
@@ -1,220 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http;
|
|
||||||
using System.Net.Http.Headers;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace v2rayN.Base
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// </summary>
|
|
||||||
public class HttpClientHelper
|
|
||||||
{
|
|
||||||
private static HttpClientHelper httpClientHelper = null;
|
|
||||||
private HttpClient httpClient;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// </summary>
|
|
||||||
private HttpClientHelper() { }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static HttpClientHelper GetInstance()
|
|
||||||
{
|
|
||||||
if (httpClientHelper != null)
|
|
||||||
{
|
|
||||||
return httpClientHelper;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
HttpClientHelper httpClientHelper = new HttpClientHelper();
|
|
||||||
|
|
||||||
HttpClientHandler handler = new HttpClientHandler() { UseCookies = false };
|
|
||||||
httpClientHelper.httpClient = new HttpClient(handler);
|
|
||||||
return httpClientHelper;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public async Task<string> GetAsync(string url)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(url))
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
HttpResponseMessage response = await httpClient.GetAsync(url);
|
|
||||||
|
|
||||||
return await response.Content.ReadAsStringAsync();
|
|
||||||
}
|
|
||||||
public async Task<string> GetAsync(HttpClient client, string url, CancellationToken token)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(url))
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
HttpResponseMessage response = await client.GetAsync(url, token);
|
|
||||||
if (!response.IsSuccessStatusCode)
|
|
||||||
{
|
|
||||||
throw new Exception(string.Format("The request returned with HTTP status code {0}", response.StatusCode));
|
|
||||||
}
|
|
||||||
return await response.Content.ReadAsStringAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task PutAsync(string url, Dictionary<string, string> headers)
|
|
||||||
{
|
|
||||||
var myContent = Utils.ToJson(headers);
|
|
||||||
var buffer = System.Text.Encoding.UTF8.GetBytes(myContent);
|
|
||||||
var byteContent = new ByteArrayContent(buffer);
|
|
||||||
byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
|
|
||||||
|
|
||||||
var result = await httpClient.PutAsync(url, byteContent);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task DownloadFileAsync(HttpClient client, string url, string fileName, IProgress<double> progress, CancellationToken token)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(url))
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException("url");
|
|
||||||
}
|
|
||||||
if (string.IsNullOrEmpty(fileName))
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException("fileName");
|
|
||||||
}
|
|
||||||
if (File.Exists(fileName))
|
|
||||||
{
|
|
||||||
File.Delete(fileName);
|
|
||||||
}
|
|
||||||
|
|
||||||
var response = await client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead, token);
|
|
||||||
|
|
||||||
if (!response.IsSuccessStatusCode)
|
|
||||||
{
|
|
||||||
throw new Exception(string.Format("The request returned with HTTP status code {0}", response.StatusCode));
|
|
||||||
}
|
|
||||||
|
|
||||||
var total = response.Content.Headers.ContentLength.HasValue ? response.Content.Headers.ContentLength.Value : -1L;
|
|
||||||
var canReportProgress = total != -1 && progress != null;
|
|
||||||
|
|
||||||
using (var stream = await response.Content.ReadAsStreamAsync())
|
|
||||||
{
|
|
||||||
using (var file = File.Create(fileName))
|
|
||||||
{
|
|
||||||
var totalRead = 0L;
|
|
||||||
var buffer = new byte[1024 * 1024];
|
|
||||||
var isMoreToRead = true;
|
|
||||||
var progressPercentage = 0;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
token.ThrowIfCancellationRequested();
|
|
||||||
|
|
||||||
var read = await stream.ReadAsync(buffer, 0, buffer.Length, token);
|
|
||||||
|
|
||||||
if (read == 0)
|
|
||||||
{
|
|
||||||
isMoreToRead = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var data = new byte[read];
|
|
||||||
buffer.ToList().CopyTo(0, data, 0, read);
|
|
||||||
|
|
||||||
// TODO: put here the code to write the file to disk
|
|
||||||
file.Write(data, 0, read);
|
|
||||||
|
|
||||||
totalRead += read;
|
|
||||||
|
|
||||||
if (canReportProgress)
|
|
||||||
{
|
|
||||||
var percent = Convert.ToInt32((totalRead * 1d) / (total * 1d) * 100);
|
|
||||||
if (progressPercentage != percent && percent % 10 == 0)
|
|
||||||
{
|
|
||||||
progressPercentage = percent;
|
|
||||||
progress.Report(percent);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} while (isMoreToRead);
|
|
||||||
file.Close();
|
|
||||||
if (canReportProgress)
|
|
||||||
{
|
|
||||||
progress.Report(101);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task DownloadDataAsync4Speed(HttpClient client, string url, IProgress<string> progress, CancellationToken token)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(url))
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException("url");
|
|
||||||
}
|
|
||||||
|
|
||||||
var response = await client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead, token);
|
|
||||||
|
|
||||||
if (!response.IsSuccessStatusCode)
|
|
||||||
{
|
|
||||||
throw new Exception(string.Format("The request returned with HTTP status code {0}", response.StatusCode));
|
|
||||||
}
|
|
||||||
|
|
||||||
//var total = response.Content.Headers.ContentLength.HasValue ? response.Content.Headers.ContentLength.Value : -1L;
|
|
||||||
//var canReportProgress = total != -1 && progress != null;
|
|
||||||
|
|
||||||
using (var stream = await response.Content.ReadAsStreamAsync())
|
|
||||||
{
|
|
||||||
var totalRead = 0L;
|
|
||||||
var buffer = new byte[1024 * 64];
|
|
||||||
var isMoreToRead = true;
|
|
||||||
string progressSpeed = string.Empty;
|
|
||||||
DateTime totalDatetime = DateTime.Now;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
if (token.IsCancellationRequested)
|
|
||||||
{
|
|
||||||
if (totalRead > 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
token.ThrowIfCancellationRequested();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var read = await stream.ReadAsync(buffer, 0, buffer.Length, token);
|
|
||||||
|
|
||||||
if (read == 0)
|
|
||||||
{
|
|
||||||
isMoreToRead = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var data = new byte[read];
|
|
||||||
buffer.ToList().CopyTo(0, data, 0, read);
|
|
||||||
|
|
||||||
// TODO:
|
|
||||||
totalRead += read;
|
|
||||||
|
|
||||||
TimeSpan ts = (DateTime.Now - totalDatetime);
|
|
||||||
var speed = (totalRead * 1d / ts.TotalMilliseconds / 1000).ToString("#0.0");
|
|
||||||
if (progress != null)
|
|
||||||
{
|
|
||||||
if (progressSpeed != speed)
|
|
||||||
{
|
|
||||||
progressSpeed = speed;
|
|
||||||
progress.Report(speed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} while (isMoreToRead);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
|
|
||||||
namespace v2rayN.Base
|
|
||||||
{
|
|
||||||
class ListViewFlickerFree : ListView
|
|
||||||
{
|
|
||||||
Action<int, int> _updateFunc;
|
|
||||||
|
|
||||||
public ListViewFlickerFree()
|
|
||||||
{
|
|
||||||
SetStyle(ControlStyles.OptimizedDoubleBuffer
|
|
||||||
| ControlStyles.AllPaintingInWmPaint
|
|
||||||
, true);
|
|
||||||
UpdateStyles();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void RegisterDragEvent(Action<int, int> update)
|
|
||||||
{
|
|
||||||
_updateFunc = update;
|
|
||||||
AllowDrop = true;
|
|
||||||
|
|
||||||
ItemDrag += lv_ItemDrag;
|
|
||||||
DragDrop += lv_DragDrop;
|
|
||||||
DragEnter += lv_DragEnter;
|
|
||||||
DragOver += lv_DragOver;
|
|
||||||
DragLeave += lv_DragLeave;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lv_DragDrop(object sender, DragEventArgs e)
|
|
||||||
{
|
|
||||||
int targetIndex = InsertionMark.Index;
|
|
||||||
if (targetIndex == -1)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (InsertionMark.AppearsAfterItem)
|
|
||||||
{
|
|
||||||
targetIndex++;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (SelectedIndices.Count <= 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_updateFunc(SelectedIndices[0], targetIndex);
|
|
||||||
|
|
||||||
//ListViewItem draggedItem = (ListViewItem)e.Data.GetData(typeof(ListViewItem));
|
|
||||||
//this.BeginUpdate();
|
|
||||||
//this.Items.Insert(targetIndex, (ListViewItem)draggedItem.Clone());
|
|
||||||
//this.Items.Remove(draggedItem);
|
|
||||||
//this.EndUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void lv_DragEnter(object sender, DragEventArgs e)
|
|
||||||
{
|
|
||||||
e.Effect = e.AllowedEffect;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lv_DragLeave(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
InsertionMark.Index = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lv_DragOver(object sender, DragEventArgs e)
|
|
||||||
{
|
|
||||||
Point targetPoint = PointToClient(new Point(e.X, e.Y));
|
|
||||||
int targetIndex = InsertionMark.NearestIndex(targetPoint);
|
|
||||||
|
|
||||||
if (targetIndex > -1)
|
|
||||||
{
|
|
||||||
Rectangle itemBounds = GetItemRect(targetIndex);
|
|
||||||
EnsureVisible(targetIndex);
|
|
||||||
|
|
||||||
if (targetPoint.Y > itemBounds.Top + (itemBounds.Height / 2))
|
|
||||||
{
|
|
||||||
InsertionMark.AppearsAfterItem = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
InsertionMark.AppearsAfterItem = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
InsertionMark.Index = targetIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lv_ItemDrag(object sender, ItemDragEventArgs e)
|
|
||||||
{
|
|
||||||
DoDragDrop(e.Item, DragDropEffects.Move);
|
|
||||||
InsertionMark.Index = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
9
v2rayN/v2rayN/Base/MyDGTextColumn.cs
Normal file
9
v2rayN/v2rayN/Base/MyDGTextColumn.cs
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
using System.Windows.Controls;
|
||||||
|
|
||||||
|
namespace v2rayN.Base
|
||||||
|
{
|
||||||
|
internal class MyDGTextColumn : DataGridTextColumn
|
||||||
|
{
|
||||||
|
public string ExName { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace v2rayN.Base
|
|
||||||
{
|
|
||||||
static class StringEx
|
|
||||||
{
|
|
||||||
public static bool IsNullOrEmpty(this string value)
|
|
||||||
{
|
|
||||||
return string.IsNullOrEmpty(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool IsNullOrWhiteSpace(this string value)
|
|
||||||
{
|
|
||||||
return string.IsNullOrWhiteSpace(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool BeginWithAny(this string s, IEnumerable<char> chars)
|
|
||||||
{
|
|
||||||
if (s.IsNullOrEmpty()) return false;
|
|
||||||
return chars.Contains(s[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool IsWhiteSpace(this string value)
|
|
||||||
{
|
|
||||||
foreach (char c in value)
|
|
||||||
{
|
|
||||||
if (char.IsWhiteSpace(c)) continue;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static IEnumerable<string> NonWhiteSpaceLines(this TextReader reader)
|
|
||||||
{
|
|
||||||
string line;
|
|
||||||
while ((line = reader.ReadLine()) != null)
|
|
||||||
{
|
|
||||||
if (line.IsWhiteSpace()) continue;
|
|
||||||
yield return line;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string TrimEx(this string value)
|
|
||||||
{
|
|
||||||
return value == null ? string.Empty : value.Trim();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
181
v2rayN/v2rayN/Common/DownloaderHelper.cs
Normal file
181
v2rayN/v2rayN/Common/DownloaderHelper.cs
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
using Downloader;
|
||||||
|
using System.IO;
|
||||||
|
using System.Net;
|
||||||
|
|
||||||
|
namespace v2rayN
|
||||||
|
{
|
||||||
|
internal class DownloaderHelper
|
||||||
|
{
|
||||||
|
private static readonly Lazy<DownloaderHelper> _instance = new(() => new());
|
||||||
|
public static DownloaderHelper Instance => _instance.Value;
|
||||||
|
|
||||||
|
public async Task<string?> DownloadStringAsync(IWebProxy? webProxy, string url, string? userAgent, int timeout)
|
||||||
|
{
|
||||||
|
if (Utils.IsNullOrEmpty(url))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Uri uri = new(url);
|
||||||
|
//Authorization Header
|
||||||
|
var headers = new WebHeaderCollection();
|
||||||
|
if (!Utils.IsNullOrEmpty(uri.UserInfo))
|
||||||
|
{
|
||||||
|
headers.Add(HttpRequestHeader.Authorization, "Basic " + Utils.Base64Encode(uri.UserInfo));
|
||||||
|
}
|
||||||
|
|
||||||
|
var downloadOpt = new DownloadConfiguration()
|
||||||
|
{
|
||||||
|
Timeout = timeout * 1000,
|
||||||
|
MaxTryAgainOnFailover = 2,
|
||||||
|
RequestConfiguration =
|
||||||
|
{
|
||||||
|
Headers = headers,
|
||||||
|
UserAgent = userAgent,
|
||||||
|
Timeout = timeout * 1000,
|
||||||
|
Proxy = webProxy
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
using var downloader = new DownloadService(downloadOpt);
|
||||||
|
downloader.DownloadFileCompleted += (sender, value) =>
|
||||||
|
{
|
||||||
|
if (value.Error != null)
|
||||||
|
{
|
||||||
|
throw value.Error;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
using var cts = new CancellationTokenSource();
|
||||||
|
using var stream = await downloader.DownloadFileTaskAsync(address: url, cts.Token).WaitAsync(TimeSpan.FromSeconds(timeout), cts.Token);
|
||||||
|
using StreamReader reader = new(stream);
|
||||||
|
|
||||||
|
downloadOpt = null;
|
||||||
|
|
||||||
|
return reader.ReadToEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task DownloadDataAsync4Speed(IWebProxy webProxy, string url, IProgress<string> progress, int timeout)
|
||||||
|
{
|
||||||
|
if (Utils.IsNullOrEmpty(url))
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(url));
|
||||||
|
}
|
||||||
|
|
||||||
|
var downloadOpt = new DownloadConfiguration()
|
||||||
|
{
|
||||||
|
Timeout = timeout * 1000,
|
||||||
|
MaxTryAgainOnFailover = 2,
|
||||||
|
RequestConfiguration =
|
||||||
|
{
|
||||||
|
Timeout= timeout * 1000,
|
||||||
|
Proxy = webProxy
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
DateTime totalDatetime = DateTime.Now;
|
||||||
|
int totalSecond = 0;
|
||||||
|
var hasValue = false;
|
||||||
|
double maxSpeed = 0;
|
||||||
|
using var downloader = new DownloadService(downloadOpt);
|
||||||
|
//downloader.DownloadStarted += (sender, value) =>
|
||||||
|
//{
|
||||||
|
// if (progress != null)
|
||||||
|
// {
|
||||||
|
// progress.Report("Start download data...");
|
||||||
|
// }
|
||||||
|
//};
|
||||||
|
downloader.DownloadProgressChanged += (sender, value) =>
|
||||||
|
{
|
||||||
|
TimeSpan ts = (DateTime.Now - totalDatetime);
|
||||||
|
if (progress != null && ts.Seconds > totalSecond)
|
||||||
|
{
|
||||||
|
hasValue = true;
|
||||||
|
totalSecond = ts.Seconds;
|
||||||
|
if (value.BytesPerSecondSpeed > maxSpeed)
|
||||||
|
{
|
||||||
|
maxSpeed = value.BytesPerSecondSpeed;
|
||||||
|
var speed = (maxSpeed / 1000 / 1000).ToString("#0.0");
|
||||||
|
progress.Report(speed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
downloader.DownloadFileCompleted += (sender, value) =>
|
||||||
|
{
|
||||||
|
if (progress != null)
|
||||||
|
{
|
||||||
|
if (!hasValue && value.Error != null)
|
||||||
|
{
|
||||||
|
progress.Report(value.Error?.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
//progress.Report("......");
|
||||||
|
using var cts = new CancellationTokenSource();
|
||||||
|
cts.CancelAfter(timeout * 1000);
|
||||||
|
using var stream = await downloader.DownloadFileTaskAsync(address: url, cts.Token);
|
||||||
|
|
||||||
|
downloadOpt = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task DownloadFileAsync(IWebProxy? webProxy, string url, string fileName, IProgress<double> progress, int timeout)
|
||||||
|
{
|
||||||
|
if (Utils.IsNullOrEmpty(url))
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(url));
|
||||||
|
}
|
||||||
|
if (Utils.IsNullOrEmpty(fileName))
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(fileName));
|
||||||
|
}
|
||||||
|
if (File.Exists(fileName))
|
||||||
|
{
|
||||||
|
File.Delete(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
var downloadOpt = new DownloadConfiguration()
|
||||||
|
{
|
||||||
|
Timeout = timeout * 1000,
|
||||||
|
MaxTryAgainOnFailover = 2,
|
||||||
|
RequestConfiguration =
|
||||||
|
{
|
||||||
|
Timeout= timeout * 1000,
|
||||||
|
Proxy = webProxy
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var progressPercentage = 0;
|
||||||
|
var hasValue = false;
|
||||||
|
using var downloader = new DownloadService(downloadOpt);
|
||||||
|
downloader.DownloadStarted += (sender, value) =>
|
||||||
|
{
|
||||||
|
progress?.Report(0);
|
||||||
|
};
|
||||||
|
downloader.DownloadProgressChanged += (sender, value) =>
|
||||||
|
{
|
||||||
|
hasValue = true;
|
||||||
|
var percent = (int)value.ProgressPercentage;// Convert.ToInt32((totalRead * 1d) / (total * 1d) * 100);
|
||||||
|
if (progressPercentage != percent && percent % 10 == 0)
|
||||||
|
{
|
||||||
|
progressPercentage = percent;
|
||||||
|
progress.Report(percent);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
downloader.DownloadFileCompleted += (sender, value) =>
|
||||||
|
{
|
||||||
|
if (progress != null)
|
||||||
|
{
|
||||||
|
if (hasValue && value.Error == null)
|
||||||
|
{
|
||||||
|
progress.Report(101);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
using var cts = new CancellationTokenSource();
|
||||||
|
await downloader.DownloadFileTaskAsync(url, fileName, cts.Token).WaitAsync(TimeSpan.FromSeconds(timeout), cts.Token);
|
||||||
|
|
||||||
|
downloadOpt = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
90
v2rayN/v2rayN/Common/FileManager.cs
Normal file
90
v2rayN/v2rayN/Common/FileManager.cs
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
using System.IO;
|
||||||
|
using System.IO.Compression;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace v2rayN
|
||||||
|
{
|
||||||
|
public static class FileManager
|
||||||
|
{
|
||||||
|
public static bool ByteArrayToFile(string fileName, byte[] content)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File.WriteAllBytes(fileName, content);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logging.SaveLog(ex.Message, ex);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void UncompressedFile(string fileName, byte[] content)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using FileStream fs = File.Create(fileName);
|
||||||
|
using GZipStream input = new(new MemoryStream(content), CompressionMode.Decompress, false);
|
||||||
|
input.CopyTo(fs);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logging.SaveLog(ex.Message, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string NonExclusiveReadAllText(string path)
|
||||||
|
{
|
||||||
|
return NonExclusiveReadAllText(path, Encoding.Default);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string NonExclusiveReadAllText(string path, Encoding encoding)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using FileStream fs = new(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
|
||||||
|
using StreamReader sr = new(fs, encoding);
|
||||||
|
return sr.ReadToEnd();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logging.SaveLog(ex.Message, ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool ZipExtractToFile(string fileName, string toPath, string ignoredName)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using ZipArchive archive = ZipFile.OpenRead(fileName);
|
||||||
|
foreach (ZipArchiveEntry entry in archive.Entries)
|
||||||
|
{
|
||||||
|
if (entry.Length == 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!Utils.IsNullOrEmpty(ignoredName) && entry.Name.Contains(ignoredName))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
entry.ExtractToFile(Path.Combine(toPath, entry.Name), true);
|
||||||
|
}
|
||||||
|
catch (IOException ex)
|
||||||
|
{
|
||||||
|
Logging.SaveLog(ex.Message, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logging.SaveLog(ex.Message, ex);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
156
v2rayN/v2rayN/Common/HttpClientHelper.cs
Normal file
156
v2rayN/v2rayN/Common/HttpClientHelper.cs
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
using System.IO;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Net.Mime;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace v2rayN
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// </summary>
|
||||||
|
public class HttpClientHelper
|
||||||
|
{
|
||||||
|
private static readonly Lazy<HttpClientHelper> _instance = new(() =>
|
||||||
|
{
|
||||||
|
HttpClientHandler handler = new() { UseCookies = false };
|
||||||
|
HttpClientHelper helper = new(new HttpClient(handler));
|
||||||
|
return helper;
|
||||||
|
});
|
||||||
|
|
||||||
|
public static HttpClientHelper Instance => _instance.Value;
|
||||||
|
private readonly HttpClient httpClient;
|
||||||
|
|
||||||
|
private HttpClientHelper(HttpClient httpClient) => this.httpClient = httpClient;
|
||||||
|
|
||||||
|
public async Task<string?> GetAsync(string url)
|
||||||
|
{
|
||||||
|
if (Utils.IsNullOrEmpty(url)) return null;
|
||||||
|
return await httpClient.GetStringAsync(url);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<string?> GetAsync(HttpClient client, string url, CancellationToken token = default)
|
||||||
|
{
|
||||||
|
if (Utils.IsNullOrEmpty(url)) return null;
|
||||||
|
return await client.GetStringAsync(url, token);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task PutAsync(string url, Dictionary<string, string> headers)
|
||||||
|
{
|
||||||
|
var jsonContent = JsonUtils.Serialize(headers);
|
||||||
|
var content = new StringContent(jsonContent, Encoding.UTF8, MediaTypeNames.Application.Json);
|
||||||
|
|
||||||
|
var result = await httpClient.PutAsync(url, content);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async Task DownloadFileAsync(HttpClient client, string url, string fileName, IProgress<double>? progress, CancellationToken token = default)
|
||||||
|
{
|
||||||
|
ArgumentNullException.ThrowIfNull(url);
|
||||||
|
ArgumentNullException.ThrowIfNull(fileName);
|
||||||
|
if (File.Exists(fileName)) File.Delete(fileName);
|
||||||
|
|
||||||
|
using var response = await client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead, token);
|
||||||
|
|
||||||
|
if (!response.IsSuccessStatusCode) throw new Exception(response.StatusCode.ToString());
|
||||||
|
|
||||||
|
var total = response.Content.Headers.ContentLength ?? -1L;
|
||||||
|
var canReportProgress = total != -1 && progress != null;
|
||||||
|
|
||||||
|
using var stream = await response.Content.ReadAsStreamAsync(token);
|
||||||
|
using var file = File.Create(fileName);
|
||||||
|
var totalRead = 0L;
|
||||||
|
var buffer = new byte[1024 * 1024];
|
||||||
|
var progressPercentage = 0;
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
token.ThrowIfCancellationRequested();
|
||||||
|
|
||||||
|
var read = await stream.ReadAsync(buffer, token);
|
||||||
|
totalRead += read;
|
||||||
|
|
||||||
|
if (read == 0) break;
|
||||||
|
file.Write(buffer, 0, read);
|
||||||
|
|
||||||
|
if (canReportProgress)
|
||||||
|
{
|
||||||
|
var percent = (int)(100.0 * totalRead / total);
|
||||||
|
//if (progressPercentage != percent && percent % 10 == 0)
|
||||||
|
{
|
||||||
|
progressPercentage = percent;
|
||||||
|
progress?.Report(percent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (canReportProgress)
|
||||||
|
{
|
||||||
|
progress?.Report(101);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task DownloadDataAsync4Speed(HttpClient client, string url, IProgress<string> progress, CancellationToken token = default)
|
||||||
|
{
|
||||||
|
if (Utils.IsNullOrEmpty(url))
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(url));
|
||||||
|
}
|
||||||
|
|
||||||
|
var response = await client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead, token);
|
||||||
|
|
||||||
|
if (!response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
throw new Exception(response.StatusCode.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
//var total = response.Content.Headers.ContentLength.HasValue ? response.Content.Headers.ContentLength.Value : -1L;
|
||||||
|
//var canReportProgress = total != -1 && progress != null;
|
||||||
|
|
||||||
|
using var stream = await response.Content.ReadAsStreamAsync(token);
|
||||||
|
var totalRead = 0L;
|
||||||
|
var buffer = new byte[1024 * 64];
|
||||||
|
var isMoreToRead = true;
|
||||||
|
string progressSpeed = string.Empty;
|
||||||
|
DateTime totalDatetime = DateTime.Now;
|
||||||
|
int totalSecond = 0;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (token.IsCancellationRequested)
|
||||||
|
{
|
||||||
|
if (totalRead > 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
token.ThrowIfCancellationRequested();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var read = await stream.ReadAsync(buffer, token);
|
||||||
|
|
||||||
|
if (read == 0)
|
||||||
|
{
|
||||||
|
isMoreToRead = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var data = new byte[read];
|
||||||
|
buffer.ToList().CopyTo(0, data, 0, read);
|
||||||
|
|
||||||
|
totalRead += read;
|
||||||
|
|
||||||
|
TimeSpan ts = (DateTime.Now - totalDatetime);
|
||||||
|
if (progress != null && ts.Seconds > totalSecond)
|
||||||
|
{
|
||||||
|
totalSecond = ts.Seconds;
|
||||||
|
var speed = (totalRead * 1d / ts.TotalMilliseconds / 1000).ToString("#0.0");
|
||||||
|
if (progressSpeed != speed)
|
||||||
|
{
|
||||||
|
progressSpeed = speed;
|
||||||
|
progress.Report(speed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} while (isMoreToRead);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,14 +1,13 @@
|
|||||||
using System;
|
using System.Diagnostics;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
|
||||||
namespace v2rayN
|
namespace v2rayN
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* See:
|
* See:
|
||||||
* http://stackoverflow.com/questions/6266820/working-example-of-createjobobject-setinformationjobobject-pinvoke-in-net
|
* http://stackoverflow.com/questions/6266820/working-example-of-createjobobject-setinformationjobobject-pinvoke-in-net
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class Job : IDisposable
|
public class Job : IDisposable
|
||||||
{
|
{
|
||||||
private IntPtr handle = IntPtr.Zero;
|
private IntPtr handle = IntPtr.Zero;
|
||||||
@@ -17,12 +16,12 @@ namespace v2rayN
|
|||||||
{
|
{
|
||||||
handle = CreateJobObject(IntPtr.Zero, null);
|
handle = CreateJobObject(IntPtr.Zero, null);
|
||||||
IntPtr extendedInfoPtr = IntPtr.Zero;
|
IntPtr extendedInfoPtr = IntPtr.Zero;
|
||||||
JOBOBJECT_BASIC_LIMIT_INFORMATION info = new JOBOBJECT_BASIC_LIMIT_INFORMATION
|
JOBOBJECT_BASIC_LIMIT_INFORMATION info = new()
|
||||||
{
|
{
|
||||||
LimitFlags = 0x2000
|
LimitFlags = 0x2000
|
||||||
};
|
};
|
||||||
|
|
||||||
JOBOBJECT_EXTENDED_LIMIT_INFORMATION extendedInfo = new JOBOBJECT_EXTENDED_LIMIT_INFORMATION
|
JOBOBJECT_EXTENDED_LIMIT_INFORMATION extendedInfo = new()
|
||||||
{
|
{
|
||||||
BasicLimitInformation = info
|
BasicLimitInformation = info
|
||||||
};
|
};
|
||||||
@@ -34,7 +33,7 @@ namespace v2rayN
|
|||||||
Marshal.StructureToPtr(extendedInfo, extendedInfoPtr, false);
|
Marshal.StructureToPtr(extendedInfo, extendedInfoPtr, false);
|
||||||
|
|
||||||
if (!SetInformationJobObject(handle, JobObjectInfoType.ExtendedLimitInformation, extendedInfoPtr,
|
if (!SetInformationJobObject(handle, JobObjectInfoType.ExtendedLimitInformation, extendedInfoPtr,
|
||||||
(uint) length))
|
(uint)length))
|
||||||
throw new Exception(string.Format("Unable to set information. Error: {0}",
|
throw new Exception(string.Format("Unable to set information. Error: {0}",
|
||||||
Marshal.GetLastWin32Error()));
|
Marshal.GetLastWin32Error()));
|
||||||
}
|
}
|
||||||
@@ -53,7 +52,7 @@ namespace v2rayN
|
|||||||
|
|
||||||
if (!succ)
|
if (!succ)
|
||||||
{
|
{
|
||||||
Utils.SaveLog("Failed to call AssignProcessToJobObject! GetLastError=" + Marshal.GetLastWin32Error());
|
Logging.SaveLog("Failed to call AssignProcessToJobObject! GetLastError=" + Marshal.GetLastWin32Error());
|
||||||
}
|
}
|
||||||
|
|
||||||
return succ;
|
return succ;
|
||||||
@@ -96,12 +95,12 @@ namespace v2rayN
|
|||||||
Dispose(false);
|
Dispose(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion IDisposable
|
||||||
|
|
||||||
#region Interop
|
#region Interop
|
||||||
|
|
||||||
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
|
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
|
||||||
private static extern IntPtr CreateJobObject(IntPtr a, string lpName);
|
private static extern IntPtr CreateJobObject(IntPtr a, string? lpName);
|
||||||
|
|
||||||
[DllImport("kernel32.dll", SetLastError = true)]
|
[DllImport("kernel32.dll", SetLastError = true)]
|
||||||
private static extern bool SetInformationJobObject(IntPtr hJob, JobObjectInfoType infoType, IntPtr lpJobObjectInfo, UInt32 cbJobObjectInfoLength);
|
private static extern bool SetInformationJobObject(IntPtr hJob, JobObjectInfoType infoType, IntPtr lpJobObjectInfo, UInt32 cbJobObjectInfoLength);
|
||||||
@@ -113,13 +112,13 @@ namespace v2rayN
|
|||||||
[return: MarshalAs(UnmanagedType.Bool)]
|
[return: MarshalAs(UnmanagedType.Bool)]
|
||||||
private static extern bool CloseHandle(IntPtr hObject);
|
private static extern bool CloseHandle(IntPtr hObject);
|
||||||
|
|
||||||
#endregion
|
#endregion Interop
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Helper classes
|
#region Helper classes
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential)]
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
struct IO_COUNTERS
|
internal struct IO_COUNTERS
|
||||||
{
|
{
|
||||||
public UInt64 ReadOperationCount;
|
public UInt64 ReadOperationCount;
|
||||||
public UInt64 WriteOperationCount;
|
public UInt64 WriteOperationCount;
|
||||||
@@ -129,9 +128,8 @@ namespace v2rayN
|
|||||||
public UInt64 OtherTransferCount;
|
public UInt64 OtherTransferCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential)]
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
struct JOBOBJECT_BASIC_LIMIT_INFORMATION
|
internal struct JOBOBJECT_BASIC_LIMIT_INFORMATION
|
||||||
{
|
{
|
||||||
public Int64 PerProcessUserTimeLimit;
|
public Int64 PerProcessUserTimeLimit;
|
||||||
public Int64 PerJobUserTimeLimit;
|
public Int64 PerJobUserTimeLimit;
|
||||||
@@ -153,7 +151,7 @@ namespace v2rayN
|
|||||||
}
|
}
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential)]
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
struct JOBOBJECT_EXTENDED_LIMIT_INFORMATION
|
internal struct JOBOBJECT_EXTENDED_LIMIT_INFORMATION
|
||||||
{
|
{
|
||||||
public JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation;
|
public JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation;
|
||||||
public IO_COUNTERS IoInfo;
|
public IO_COUNTERS IoInfo;
|
||||||
@@ -174,5 +172,5 @@ namespace v2rayN
|
|||||||
GroupInformation = 11
|
GroupInformation = 11
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion Helper classes
|
||||||
}
|
}
|
||||||
132
v2rayN/v2rayN/Common/JsonUtils.cs
Normal file
132
v2rayN/v2rayN/Common/JsonUtils.cs
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
using System.IO;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Nodes;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace v2rayN
|
||||||
|
{
|
||||||
|
internal class JsonUtils
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// DeepCopy
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="obj"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static T DeepCopy<T>(T obj)
|
||||||
|
{
|
||||||
|
return Deserialize<T>(Serialize(obj, false))!;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Deserialize to object
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="strJson"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static T? Deserialize<T>(string? strJson)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(strJson))
|
||||||
|
{
|
||||||
|
return default;
|
||||||
|
}
|
||||||
|
return JsonSerializer.Deserialize<T>(strJson);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return default;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// parse
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="strJson"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static JsonNode? ParseJson(string strJson)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(strJson))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return JsonNode.Parse(strJson);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
//SaveLog(ex.Message, ex);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Serialize Object to Json string
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="obj"></param>
|
||||||
|
/// <param name="indented"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static string Serialize(object? obj, bool indented = true)
|
||||||
|
{
|
||||||
|
string result = string.Empty;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
var options = new JsonSerializerOptions
|
||||||
|
{
|
||||||
|
WriteIndented = indented ? true : false,
|
||||||
|
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull
|
||||||
|
};
|
||||||
|
result = JsonSerializer.Serialize(obj, options);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logging.SaveLog(ex.Message, ex);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SerializeToNode
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="obj"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static JsonNode? SerializeToNode(object? obj) => JsonSerializer.SerializeToNode(obj);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Save as json file
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="obj"></param>
|
||||||
|
/// <param name="filePath"></param>
|
||||||
|
/// <param name="nullValue"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static int ToFile(object? obj, string filePath, bool nullValue = true)
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using FileStream file = File.Create(filePath);
|
||||||
|
|
||||||
|
var options = new JsonSerializerOptions
|
||||||
|
{
|
||||||
|
WriteIndented = true,
|
||||||
|
DefaultIgnoreCondition = nullValue ? JsonIgnoreCondition.Never : JsonIgnoreCondition.WhenWritingNull
|
||||||
|
};
|
||||||
|
|
||||||
|
JsonSerializer.Serialize(file, obj, options);
|
||||||
|
result = 0;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logging.SaveLog(ex.Message, ex);
|
||||||
|
result = -1;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
78
v2rayN/v2rayN/Common/Logging.cs
Normal file
78
v2rayN/v2rayN/Common/Logging.cs
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
using NLog;
|
||||||
|
using NLog.Config;
|
||||||
|
using NLog.Targets;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace v2rayN
|
||||||
|
{
|
||||||
|
public class Logging
|
||||||
|
{
|
||||||
|
public static void Setup()
|
||||||
|
{
|
||||||
|
LoggingConfiguration config = new();
|
||||||
|
FileTarget fileTarget = new();
|
||||||
|
config.AddTarget("file", fileTarget);
|
||||||
|
fileTarget.Layout = "${longdate}-${level:uppercase=true} ${message}";
|
||||||
|
fileTarget.FileName = Utils.GetLogPath("${shortdate}.txt");
|
||||||
|
config.LoggingRules.Add(new LoggingRule("*", LogLevel.Debug, fileTarget));
|
||||||
|
LogManager.Configuration = config;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void LoggingEnabled(bool enable)
|
||||||
|
{
|
||||||
|
if (!enable)
|
||||||
|
{
|
||||||
|
LogManager.SuspendLogging();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ClearLogs()
|
||||||
|
{
|
||||||
|
Task.Run(() =>
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var now = DateTime.Now.AddMonths(-1);
|
||||||
|
var dir = Utils.GetLogPath();
|
||||||
|
var files = Directory.GetFiles(dir, "*.txt");
|
||||||
|
foreach (var filePath in files)
|
||||||
|
{
|
||||||
|
var file = new FileInfo(filePath);
|
||||||
|
if (file.CreationTime < now)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
file.Delete();
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SaveLog(string strContent)
|
||||||
|
{
|
||||||
|
if (LogManager.IsLoggingEnabled())
|
||||||
|
{
|
||||||
|
var logger = LogManager.GetLogger("Log1");
|
||||||
|
logger.Info(strContent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SaveLog(string strTitle, Exception ex)
|
||||||
|
{
|
||||||
|
if (LogManager.IsLoggingEnabled())
|
||||||
|
{
|
||||||
|
var logger = LogManager.GetLogger("Log2");
|
||||||
|
logger.Debug($"{strTitle},{ex.Message}");
|
||||||
|
logger.Debug(ex.StackTrace);
|
||||||
|
if (ex?.InnerException != null)
|
||||||
|
{
|
||||||
|
logger.Error(ex.InnerException);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
32
v2rayN/v2rayN/Common/QRCodeHelper.cs
Normal file
32
v2rayN/v2rayN/Common/QRCodeHelper.cs
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
using QRCoder;
|
||||||
|
using QRCoder.Xaml;
|
||||||
|
using System.Windows.Media;
|
||||||
|
|
||||||
|
namespace v2rayN
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 含有QR码的描述类和包装编码和渲染
|
||||||
|
/// </summary>
|
||||||
|
public class QRCodeHelper
|
||||||
|
{
|
||||||
|
public static DrawingImage? GetQRCode(string? strContent)
|
||||||
|
{
|
||||||
|
if (strContent is null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
QRCodeGenerator qrGenerator = new();
|
||||||
|
QRCodeData qrCodeData = qrGenerator.CreateQrCode(strContent, QRCodeGenerator.ECCLevel.H);
|
||||||
|
XamlQRCode qrCode = new(qrCodeData);
|
||||||
|
DrawingImage qrCodeAsXaml = qrCode.GetGraphic(40);
|
||||||
|
return qrCodeAsXaml;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,9 +1,7 @@
|
|||||||
using System;
|
using System.Linq.Expressions;
|
||||||
using System.Linq;
|
|
||||||
using System.Linq.Expressions;
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
||||||
namespace v2rayN.Tool
|
namespace v2rayN
|
||||||
{
|
{
|
||||||
public static class QueryableExtension
|
public static class QueryableExtension
|
||||||
{
|
{
|
||||||
@@ -11,12 +9,13 @@ namespace v2rayN.Tool
|
|||||||
{
|
{
|
||||||
return _OrderBy<T>(query, propertyName, false);
|
return _OrderBy<T>(query, propertyName, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IOrderedQueryable<T> OrderByDescending<T>(this IQueryable<T> query, string propertyName)
|
public static IOrderedQueryable<T> OrderByDescending<T>(this IQueryable<T> query, string propertyName)
|
||||||
{
|
{
|
||||||
return _OrderBy<T>(query, propertyName, true);
|
return _OrderBy<T>(query, propertyName, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static IOrderedQueryable<T> _OrderBy<T>(IQueryable<T> query, string propertyName, bool isDesc)
|
private static IOrderedQueryable<T> _OrderBy<T>(IQueryable<T> query, string propertyName, bool isDesc)
|
||||||
{
|
{
|
||||||
string methodname = (isDesc) ? "OrderByDescendingInternal" : "OrderByInternal";
|
string methodname = (isDesc) ? "OrderByDescendingInternal" : "OrderByInternal";
|
||||||
|
|
||||||
@@ -27,22 +26,25 @@ namespace v2rayN.Tool
|
|||||||
|
|
||||||
return (IOrderedQueryable<T>)method.Invoke(null, new object[] { query, memberProp });
|
return (IOrderedQueryable<T>)method.Invoke(null, new object[] { query, memberProp });
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IOrderedQueryable<T> OrderByInternal<T, TProp>(IQueryable<T> query, PropertyInfo memberProperty)
|
public static IOrderedQueryable<T> OrderByInternal<T, TProp>(IQueryable<T> query, PropertyInfo memberProperty)
|
||||||
{//public
|
{//public
|
||||||
return query.OrderBy(_GetLamba<T, TProp>(memberProperty));
|
return query.OrderBy(_GetLambda<T, TProp>(memberProperty));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IOrderedQueryable<T> OrderByDescendingInternal<T, TProp>(IQueryable<T> query, PropertyInfo memberProperty)
|
public static IOrderedQueryable<T> OrderByDescendingInternal<T, TProp>(IQueryable<T> query, PropertyInfo memberProperty)
|
||||||
{//public
|
{//public
|
||||||
return query.OrderByDescending(_GetLamba<T, TProp>(memberProperty));
|
return query.OrderByDescending(_GetLambda<T, TProp>(memberProperty));
|
||||||
}
|
}
|
||||||
static Expression<Func<T, TProp>> _GetLamba<T, TProp>(PropertyInfo memberProperty)
|
|
||||||
|
private static Expression<Func<T, TProp>> _GetLambda<T, TProp>(PropertyInfo memberProperty)
|
||||||
{
|
{
|
||||||
if (memberProperty.PropertyType != typeof(TProp)) throw new Exception();
|
if (memberProperty.PropertyType != typeof(TProp)) throw new Exception();
|
||||||
|
|
||||||
var thisArg = Expression.Parameter(typeof(T));
|
var thisArg = Expression.Parameter(typeof(T));
|
||||||
var lamba = Expression.Lambda<Func<T, TProp>>(Expression.Property(thisArg, memberProperty), thisArg);
|
var lambda = Expression.Lambda<Func<T, TProp>>(Expression.Property(thisArg, memberProperty), thisArg);
|
||||||
|
|
||||||
return lamba;
|
return lambda;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
180
v2rayN/v2rayN/Common/SemanticVersion.cs
Normal file
180
v2rayN/v2rayN/Common/SemanticVersion.cs
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
namespace v2rayN
|
||||||
|
{
|
||||||
|
public class SemanticVersion
|
||||||
|
{
|
||||||
|
private int major;
|
||||||
|
private int minor;
|
||||||
|
private int patch;
|
||||||
|
private string version;
|
||||||
|
|
||||||
|
public SemanticVersion(int major, int minor, int patch)
|
||||||
|
{
|
||||||
|
this.major = major;
|
||||||
|
this.minor = minor;
|
||||||
|
this.patch = patch;
|
||||||
|
this.version = $"{major}.{minor}.{patch}";
|
||||||
|
}
|
||||||
|
|
||||||
|
public SemanticVersion(string version)
|
||||||
|
{
|
||||||
|
this.version = version.RemovePrefix('v');
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string[] parts = this.version.Split('.');
|
||||||
|
if (parts.Length == 2)
|
||||||
|
{
|
||||||
|
this.major = int.Parse(parts[0]);
|
||||||
|
this.minor = int.Parse(parts[1]);
|
||||||
|
this.patch = 0;
|
||||||
|
}
|
||||||
|
else if (parts.Length == 3)
|
||||||
|
{
|
||||||
|
this.major = int.Parse(parts[0]);
|
||||||
|
this.minor = int.Parse(parts[1]);
|
||||||
|
this.patch = int.Parse(parts[2]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new ArgumentException("Invalid version string");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
this.major = 0;
|
||||||
|
this.minor = 0;
|
||||||
|
this.patch = 0;
|
||||||
|
//this.version = "0.0.0";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool Equals(object? obj)
|
||||||
|
{
|
||||||
|
if (obj is SemanticVersion other)
|
||||||
|
{
|
||||||
|
return this.major == other.major && this.minor == other.minor && this.patch == other.patch;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int GetHashCode()
|
||||||
|
{
|
||||||
|
return this.major.GetHashCode() ^ this.minor.GetHashCode() ^ this.patch.GetHashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Use ToVersionString(string? prefix) instead if possible.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>major.minor.patch</returns>
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return this.version;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ToVersionString(string? prefix = null)
|
||||||
|
{
|
||||||
|
if (prefix == null)
|
||||||
|
{
|
||||||
|
return this.version;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return $"{prefix}{this.version}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool operator ==(SemanticVersion v1, SemanticVersion v2)
|
||||||
|
{ return v1.Equals(v2); }
|
||||||
|
|
||||||
|
public static bool operator !=(SemanticVersion v1, SemanticVersion v2)
|
||||||
|
{ return !v1.Equals(v2); }
|
||||||
|
|
||||||
|
public static bool operator >=(SemanticVersion v1, SemanticVersion v2)
|
||||||
|
{ return v1.GreaterEquals(v2); }
|
||||||
|
|
||||||
|
public static bool operator <=(SemanticVersion v1, SemanticVersion v2)
|
||||||
|
{ return v1.LessEquals(v2); }
|
||||||
|
|
||||||
|
#region Private
|
||||||
|
|
||||||
|
private bool GreaterEquals(SemanticVersion other)
|
||||||
|
{
|
||||||
|
if (this.major < other.major)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (this.major > other.major)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (this.minor < other.minor)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (this.minor > other.minor)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (this.patch < other.patch)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (this.patch > other.patch)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool LessEquals(SemanticVersion other)
|
||||||
|
{
|
||||||
|
if (this.major < other.major)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (this.major > other.major)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (this.minor < other.minor)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (this.minor > other.minor)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (this.patch < other.patch)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (this.patch > other.patch)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion Private
|
||||||
|
}
|
||||||
|
}
|
||||||
123
v2rayN/v2rayN/Common/SqliteHelper.cs
Normal file
123
v2rayN/v2rayN/Common/SqliteHelper.cs
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
using SQLite;
|
||||||
|
using System.Collections;
|
||||||
|
|
||||||
|
namespace v2rayN
|
||||||
|
{
|
||||||
|
public sealed class SQLiteHelper
|
||||||
|
{
|
||||||
|
private static readonly Lazy<SQLiteHelper> _instance = new(() => new());
|
||||||
|
public static SQLiteHelper Instance => _instance.Value;
|
||||||
|
private string _connstr;
|
||||||
|
private SQLiteConnection _db;
|
||||||
|
private SQLiteAsyncConnection _dbAsync;
|
||||||
|
private static readonly object objLock = new();
|
||||||
|
public readonly string _configDB = "guiNDB.db";
|
||||||
|
|
||||||
|
public SQLiteHelper()
|
||||||
|
{
|
||||||
|
_connstr = Utils.GetConfigPath(_configDB);
|
||||||
|
_db = new SQLiteConnection(_connstr, false);
|
||||||
|
_dbAsync = new SQLiteAsyncConnection(_connstr, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CreateTableResult CreateTable<T>()
|
||||||
|
{
|
||||||
|
return _db.CreateTable<T>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Insert(object model)
|
||||||
|
{
|
||||||
|
return _db.Insert(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int InsertAll(IEnumerable models)
|
||||||
|
{
|
||||||
|
lock (objLock)
|
||||||
|
{
|
||||||
|
return _db.InsertAll(models);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<int> InsertAsync(object model)
|
||||||
|
{
|
||||||
|
return await _dbAsync.InsertAsync(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Replace(object model)
|
||||||
|
{
|
||||||
|
lock (objLock)
|
||||||
|
{
|
||||||
|
return _db.InsertOrReplace(model);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<int> ReplaceAsync(object model)
|
||||||
|
{
|
||||||
|
return await _dbAsync.InsertOrReplaceAsync(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Update(object model)
|
||||||
|
{
|
||||||
|
lock (objLock)
|
||||||
|
{
|
||||||
|
return _db.Update(model);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<int> UpdateAsync(object model)
|
||||||
|
{
|
||||||
|
return await _dbAsync.UpdateAsync(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int UpdateAll(IEnumerable models)
|
||||||
|
{
|
||||||
|
lock (objLock)
|
||||||
|
{
|
||||||
|
return _db.UpdateAll(models);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Delete(object model)
|
||||||
|
{
|
||||||
|
lock (objLock)
|
||||||
|
{
|
||||||
|
return _db.Delete(model);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<int> DeleteAsync(object model)
|
||||||
|
{
|
||||||
|
return await _dbAsync.DeleteAsync(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<T> Query<T>(string sql) where T : new()
|
||||||
|
{
|
||||||
|
return _db.Query<T>(sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<List<T>> QueryAsync<T>(string sql) where T : new()
|
||||||
|
{
|
||||||
|
return await _dbAsync.QueryAsync<T>(sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Execute(string sql)
|
||||||
|
{
|
||||||
|
return _db.Execute(sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<int> ExecuteAsync(string sql)
|
||||||
|
{
|
||||||
|
return await _dbAsync.ExecuteAsync(sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TableQuery<T> Table<T>() where T : new()
|
||||||
|
{
|
||||||
|
return _db.Table<T>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public AsyncTableQuery<T> TableAsync<T>() where T : new()
|
||||||
|
{
|
||||||
|
return _dbAsync.Table<T>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
94
v2rayN/v2rayN/Common/StringEx.cs
Normal file
94
v2rayN/v2rayN/Common/StringEx.cs
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace v2rayN
|
||||||
|
{
|
||||||
|
internal static class StringEx
|
||||||
|
{
|
||||||
|
public static bool IsNullOrEmpty([NotNullWhen(false)] this string? value)
|
||||||
|
{
|
||||||
|
return string.IsNullOrEmpty(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool IsNullOrWhiteSpace([NotNullWhen(false)] this string? value)
|
||||||
|
{
|
||||||
|
return string.IsNullOrWhiteSpace(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool BeginWithAny(this string s, IEnumerable<char> chars)
|
||||||
|
{
|
||||||
|
if (s.IsNullOrEmpty()) return false;
|
||||||
|
return chars.Contains(s[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool IsWhiteSpace(this string value)
|
||||||
|
{
|
||||||
|
foreach (char c in value)
|
||||||
|
{
|
||||||
|
if (char.IsWhiteSpace(c)) continue;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<string> NonWhiteSpaceLines(this TextReader reader)
|
||||||
|
{
|
||||||
|
string? line;
|
||||||
|
while ((line = reader.ReadLine()) != null)
|
||||||
|
{
|
||||||
|
if (line.IsWhiteSpace()) continue;
|
||||||
|
yield return line;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string TrimEx(this string? value)
|
||||||
|
{
|
||||||
|
return value == null ? string.Empty : value.Trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string RemovePrefix(this string value, char prefix)
|
||||||
|
{
|
||||||
|
if (value.StartsWith(prefix))
|
||||||
|
{
|
||||||
|
return value.Substring(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string RemovePrefix(this string value, string prefix)
|
||||||
|
{
|
||||||
|
if (value.StartsWith(prefix))
|
||||||
|
{
|
||||||
|
return value.Substring(prefix.Length);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string UpperFirstChar(this string value)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(value))
|
||||||
|
{
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
return char.ToUpper(value[0]) + value.Substring(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string AppendQuotes(this string value)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(value))
|
||||||
|
{
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $"\"{value}\"";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
39
v2rayN/v2rayN/Common/UI.cs
Normal file
39
v2rayN/v2rayN/Common/UI.cs
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
using Microsoft.Win32;
|
||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
namespace v2rayN
|
||||||
|
{
|
||||||
|
internal class UI
|
||||||
|
{
|
||||||
|
private static readonly string caption = "v2rayN";
|
||||||
|
|
||||||
|
public static void Show(string msg)
|
||||||
|
{
|
||||||
|
MessageBox.Show(msg, caption, MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MessageBoxResult ShowYesNo(string msg)
|
||||||
|
{
|
||||||
|
return MessageBox.Show(msg, caption, MessageBoxButton.YesNo, MessageBoxImage.Question);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool? OpenFileDialog(out string fileName, string filter)
|
||||||
|
{
|
||||||
|
fileName = string.Empty;
|
||||||
|
|
||||||
|
var fileDialog = new OpenFileDialog
|
||||||
|
{
|
||||||
|
Multiselect = false,
|
||||||
|
Filter = filter
|
||||||
|
};
|
||||||
|
|
||||||
|
if (fileDialog.ShowDialog() != true)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
fileName = fileDialog.FileName;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
25
v2rayN/v2rayN/Converters/DelayColorConverter.cs
Normal file
25
v2rayN/v2rayN/Converters/DelayColorConverter.cs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Media;
|
||||||
|
|
||||||
|
namespace v2rayN.Converters
|
||||||
|
{
|
||||||
|
public class DelayColorConverter : IValueConverter
|
||||||
|
{
|
||||||
|
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
|
||||||
|
{
|
||||||
|
int.TryParse(value.ToString(), out var delay);
|
||||||
|
|
||||||
|
if (delay <= 0)
|
||||||
|
return new SolidColorBrush(Colors.Red);
|
||||||
|
if (delay <= 200)
|
||||||
|
return new SolidColorBrush(Colors.Green);
|
||||||
|
else
|
||||||
|
return new SolidColorBrush(Colors.IndianRed);
|
||||||
|
}
|
||||||
|
|
||||||
|
public object? ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
v2rayN/v2rayN/Converters/InverseBooleanConverter.cs
Normal file
24
v2rayN/v2rayN/Converters/InverseBooleanConverter.cs
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
using System.Globalization;
|
||||||
|
using System.Windows.Data;
|
||||||
|
|
||||||
|
namespace v2rayN.Converters
|
||||||
|
{
|
||||||
|
[ValueConversion(typeof(bool), typeof(bool))]
|
||||||
|
public class InverseBooleanConverter : IValueConverter
|
||||||
|
{
|
||||||
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
|
{
|
||||||
|
if (targetType != typeof(bool))
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("The target must be a boolean");
|
||||||
|
}
|
||||||
|
|
||||||
|
return !(bool)value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
27
v2rayN/v2rayN/Converters/MaterialDesignFonts.cs
Normal file
27
v2rayN/v2rayN/Converters/MaterialDesignFonts.cs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
using System.Windows.Media;
|
||||||
|
using v2rayN.Handler;
|
||||||
|
|
||||||
|
namespace v2rayN.Converters
|
||||||
|
{
|
||||||
|
public class MaterialDesignFonts
|
||||||
|
{
|
||||||
|
public static FontFamily MyFont { get; }
|
||||||
|
|
||||||
|
static MaterialDesignFonts()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var fontFamily = LazyConfig.Instance.GetConfig().uiItem.currentFontFamily;
|
||||||
|
if (!Utils.IsNullOrEmpty(fontFamily))
|
||||||
|
{
|
||||||
|
var fontPath = Utils.GetFontsPath();
|
||||||
|
MyFont = new FontFamily(new Uri(@$"file:///{fontPath}\"), $"./#{fontFamily}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
}
|
||||||
|
MyFont ??= new FontFamily("Microsoft YaHei");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
3
v2rayN/v2rayN/FodyWeavers.xml
Normal file
3
v2rayN/v2rayN/FodyWeavers.xml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
|
||||||
|
<ReactiveUI />
|
||||||
|
</Weavers>
|
||||||
178
v2rayN/v2rayN/Forms/AddServer2Form.Designer.cs
generated
178
v2rayN/v2rayN/Forms/AddServer2Form.Designer.cs
generated
@@ -1,178 +0,0 @@
|
|||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class AddServer2Form
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer2Form));
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.btnEdit = new System.Windows.Forms.Button();
|
|
||||||
this.cmbCoreType = new System.Windows.Forms.ComboBox();
|
|
||||||
this.labCoreType = new System.Windows.Forms.Label();
|
|
||||||
this.btnBrowse = new System.Windows.Forms.Button();
|
|
||||||
this.txtAddress = new System.Windows.Forms.TextBox();
|
|
||||||
this.label13 = new System.Windows.Forms.Label();
|
|
||||||
this.txtRemarks = new System.Windows.Forms.TextBox();
|
|
||||||
this.label6 = new System.Windows.Forms.Label();
|
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
|
||||||
this.groupBox1.SuspendLayout();
|
|
||||||
this.panel2.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// groupBox1
|
|
||||||
//
|
|
||||||
this.groupBox1.Controls.Add(this.btnEdit);
|
|
||||||
this.groupBox1.Controls.Add(this.cmbCoreType);
|
|
||||||
this.groupBox1.Controls.Add(this.labCoreType);
|
|
||||||
this.groupBox1.Controls.Add(this.btnBrowse);
|
|
||||||
this.groupBox1.Controls.Add(this.txtAddress);
|
|
||||||
this.groupBox1.Controls.Add(this.label13);
|
|
||||||
this.groupBox1.Controls.Add(this.txtRemarks);
|
|
||||||
this.groupBox1.Controls.Add(this.label6);
|
|
||||||
this.groupBox1.Controls.Add(this.label1);
|
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
|
||||||
this.groupBox1.TabStop = false;
|
|
||||||
//
|
|
||||||
// btnEdit
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnEdit, "btnEdit");
|
|
||||||
this.btnEdit.Name = "btnEdit";
|
|
||||||
this.btnEdit.UseVisualStyleBackColor = true;
|
|
||||||
this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click);
|
|
||||||
//
|
|
||||||
// cmbCoreType
|
|
||||||
//
|
|
||||||
this.cmbCoreType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbCoreType.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbCoreType, "cmbCoreType");
|
|
||||||
this.cmbCoreType.Name = "cmbCoreType";
|
|
||||||
//
|
|
||||||
// labCoreType
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labCoreType, "labCoreType");
|
|
||||||
this.labCoreType.Name = "labCoreType";
|
|
||||||
//
|
|
||||||
// btnBrowse
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnBrowse, "btnBrowse");
|
|
||||||
this.btnBrowse.Name = "btnBrowse";
|
|
||||||
this.btnBrowse.UseVisualStyleBackColor = true;
|
|
||||||
this.btnBrowse.Click += new System.EventHandler(this.btnBrowse_Click);
|
|
||||||
//
|
|
||||||
// txtAddress
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtAddress, "txtAddress");
|
|
||||||
this.txtAddress.Name = "txtAddress";
|
|
||||||
//
|
|
||||||
// label13
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label13, "label13");
|
|
||||||
this.label13.Name = "label13";
|
|
||||||
//
|
|
||||||
// txtRemarks
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtRemarks, "txtRemarks");
|
|
||||||
this.txtRemarks.Name = "txtRemarks";
|
|
||||||
//
|
|
||||||
// label6
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label6, "label6");
|
|
||||||
this.label6.Name = "label6";
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label1, "label1");
|
|
||||||
this.label1.Name = "label1";
|
|
||||||
//
|
|
||||||
// panel2
|
|
||||||
//
|
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Name = "panel2";
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel1, "panel1");
|
|
||||||
this.panel1.Name = "panel1";
|
|
||||||
//
|
|
||||||
// AddServer2Form
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.groupBox1);
|
|
||||||
this.Controls.Add(this.panel2);
|
|
||||||
this.Controls.Add(this.panel1);
|
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
|
||||||
this.Name = "AddServer2Form";
|
|
||||||
this.Load += new System.EventHandler(this.AddServer2Form_Load);
|
|
||||||
this.groupBox1.ResumeLayout(false);
|
|
||||||
this.groupBox1.PerformLayout();
|
|
||||||
this.panel2.ResumeLayout(false);
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.GroupBox groupBox1;
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.TextBox txtRemarks;
|
|
||||||
private System.Windows.Forms.Label label6;
|
|
||||||
private System.Windows.Forms.Label label1;
|
|
||||||
private System.Windows.Forms.Panel panel1;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.Label label13;
|
|
||||||
private System.Windows.Forms.TextBox txtAddress;
|
|
||||||
private System.Windows.Forms.Button btnBrowse;
|
|
||||||
private System.Windows.Forms.ComboBox cmbCoreType;
|
|
||||||
private System.Windows.Forms.Label labCoreType;
|
|
||||||
private System.Windows.Forms.Button btnEdit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,147 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.IO;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class AddServer2Form : BaseServerForm
|
|
||||||
{
|
|
||||||
|
|
||||||
public AddServer2Form()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AddServer2Form_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
cmbCoreType.Items.AddRange(Global.coreTypes.ToArray());
|
|
||||||
cmbCoreType.Items.Add("clash");
|
|
||||||
cmbCoreType.Items.Add("clash_meta");
|
|
||||||
cmbCoreType.Items.Add("hysteria");
|
|
||||||
cmbCoreType.Items.Add("naiveproxy");
|
|
||||||
cmbCoreType.Items.Add(string.Empty);
|
|
||||||
|
|
||||||
txtAddress.ReadOnly = true;
|
|
||||||
if (vmessItem != null)
|
|
||||||
{
|
|
||||||
BindingServer();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vmessItem = new VmessItem
|
|
||||||
{
|
|
||||||
groupId = groupId
|
|
||||||
};
|
|
||||||
ClearServer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 绑定数据
|
|
||||||
/// </summary>
|
|
||||||
private void BindingServer()
|
|
||||||
{
|
|
||||||
txtRemarks.Text = vmessItem.remarks;
|
|
||||||
txtAddress.Text = vmessItem.address;
|
|
||||||
|
|
||||||
cmbCoreType.Text = vmessItem.coreType == null ? string.Empty : vmessItem.coreType.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清除设置
|
|
||||||
/// </summary>
|
|
||||||
private void ClearServer()
|
|
||||||
{
|
|
||||||
txtRemarks.Text = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string remarks = txtRemarks.Text;
|
|
||||||
if (Utils.IsNullOrEmpty(remarks))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.PleaseFillRemarks);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Utils.IsNullOrEmpty(txtAddress.Text))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.FillServerAddressCustom);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
vmessItem.remarks = remarks;
|
|
||||||
if (Utils.IsNullOrEmpty(cmbCoreType.Text))
|
|
||||||
{
|
|
||||||
vmessItem.coreType = null;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vmessItem.coreType = (ECoreType)Enum.Parse(typeof(ECoreType), cmbCoreType.Text);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ConfigHandler.EditCustomServer(ref config, vmessItem) == 0)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(ResUI.OperationFailed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult = Utils.IsNullOrEmpty(vmessItem.indexId) ? DialogResult.Cancel : DialogResult.OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnBrowse_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.CustomServerTips);
|
|
||||||
|
|
||||||
OpenFileDialog fileDialog = new OpenFileDialog
|
|
||||||
{
|
|
||||||
Multiselect = false,
|
|
||||||
Filter = "Config|*.json|YAML|*.yaml|All|*.*"
|
|
||||||
};
|
|
||||||
if (fileDialog.ShowDialog() != DialogResult.OK)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
string fileName = fileDialog.FileName;
|
|
||||||
if (Utils.IsNullOrEmpty(fileName))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
vmessItem.address = fileName;
|
|
||||||
vmessItem.remarks = txtRemarks.Text;
|
|
||||||
|
|
||||||
if (ConfigHandler.AddCustomServer(ref config, vmessItem, false) == 0)
|
|
||||||
{
|
|
||||||
BindingServer();
|
|
||||||
UI.Show(ResUI.SuccessfullyImportedCustomServer);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(ResUI.FailedImportedCustomServer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnEdit_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
var address = txtAddress.Text;
|
|
||||||
if (Utils.IsNullOrEmpty(address))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.FillServerAddressCustom);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
address = Utils.GetConfigPath(address);
|
|
||||||
Process.Start(address);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,507 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>450, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>&Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
|
||||||
<value>btnClose</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="btnEdit.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnEdit.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>208, 110</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnEdit.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnEdit.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>43</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnEdit.Text" xml:space="preserve">
|
|
||||||
<value>&Edit</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnEdit.Name" xml:space="preserve">
|
|
||||||
<value>btnEdit</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnEdit.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnEdit.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnEdit.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbCoreType.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 157</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbCoreType.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>41</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbCoreType.Name" xml:space="preserve">
|
|
||||||
<value>cmbCoreType</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbCoreType.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbCoreType.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbCoreType.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 161</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>59, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>42</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.Text" xml:space="preserve">
|
|
||||||
<value>Core Type</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labCoreType.Name" xml:space="preserve">
|
|
||||||
<value>labCoreType</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labCoreType.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labCoreType.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labCoreType.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 110</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>40</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Text" xml:space="preserve">
|
|
||||||
<value>&Browse</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.Name" xml:space="preserve">
|
|
||||||
<value>btnBrowse</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 62</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>432, 37</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.Name" xml:space="preserve">
|
|
||||||
<value>txtAddress</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>446, 26</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>22</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Text" xml:space="preserve">
|
|
||||||
<value>* Fill in manually</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Name" xml:space="preserve">
|
|
||||||
<value>label13</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>313, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>11</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
|
||||||
<value>txtRemarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 27</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>95, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Text" xml:space="preserve">
|
|
||||||
<value>Alias (remarks)</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Name" xml:space="preserve">
|
|
||||||
<value>label6</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.ZOrder" xml:space="preserve">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 62</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>47, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>Address</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
|
||||||
<value>label1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 10</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>611, 189</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>Server</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Name" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 199</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>611, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>357, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>&OK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Top</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>611, 10</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Name" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>611, 259</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>Custom configuration server</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>AddServer2Form</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.BaseServerForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
@@ -1,150 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>自定义配置</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Text" xml:space="preserve">
|
|
||||||
<value>浏览(&B)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnEdit.Text" xml:space="preserve">
|
|
||||||
<value>编辑(&E)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.Text" xml:space="preserve">
|
|
||||||
<value>Core类型</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>地址(address)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Text" xml:space="preserve">
|
|
||||||
<value>*手填,方便识别管理</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Text" xml:space="preserve">
|
|
||||||
<value>别名(remarks)</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
488
v2rayN/v2rayN/Forms/AddServerForm.Designer.cs
generated
488
v2rayN/v2rayN/Forms/AddServerForm.Designer.cs
generated
@@ -1,488 +0,0 @@
|
|||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class AddServerForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServerForm));
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.panSocks = new System.Windows.Forms.Panel();
|
|
||||||
this.label17 = new System.Windows.Forms.Label();
|
|
||||||
this.txtSecurity4 = new System.Windows.Forms.TextBox();
|
|
||||||
this.label18 = new System.Windows.Forms.Label();
|
|
||||||
this.txtId4 = new System.Windows.Forms.TextBox();
|
|
||||||
this.panSs = new System.Windows.Forms.Panel();
|
|
||||||
this.txtId3 = new System.Windows.Forms.TextBox();
|
|
||||||
this.label15 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbSecurity3 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label16 = new System.Windows.Forms.Label();
|
|
||||||
this.panTrojan = new System.Windows.Forms.Panel();
|
|
||||||
this.label12 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbFlow6 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.txtId6 = new System.Windows.Forms.TextBox();
|
|
||||||
this.label14 = new System.Windows.Forms.Label();
|
|
||||||
this.panVless = new System.Windows.Forms.Panel();
|
|
||||||
this.label7 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbFlow5 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.txtId5 = new System.Windows.Forms.TextBox();
|
|
||||||
this.label9 = new System.Windows.Forms.Label();
|
|
||||||
this.label10 = new System.Windows.Forms.Label();
|
|
||||||
this.btnGUID5 = new System.Windows.Forms.Button();
|
|
||||||
this.cmbSecurity5 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label11 = new System.Windows.Forms.Label();
|
|
||||||
this.panVmess = new System.Windows.Forms.Panel();
|
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
|
||||||
this.txtId = new System.Windows.Forms.TextBox();
|
|
||||||
this.btnGUID = new System.Windows.Forms.Button();
|
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
|
||||||
this.label8 = new System.Windows.Forms.Label();
|
|
||||||
this.txtAlterId = new System.Windows.Forms.TextBox();
|
|
||||||
this.cmbSecurity = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label5 = new System.Windows.Forms.Label();
|
|
||||||
this.panAddr = new System.Windows.Forms.Panel();
|
|
||||||
this.label6 = new System.Windows.Forms.Label();
|
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
|
||||||
this.txtAddress = new System.Windows.Forms.TextBox();
|
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
|
||||||
this.txtPort = new System.Windows.Forms.TextBox();
|
|
||||||
this.txtRemarks = new System.Windows.Forms.TextBox();
|
|
||||||
this.panBottom = new System.Windows.Forms.Panel();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.panTop = new System.Windows.Forms.Panel();
|
|
||||||
this.panTran = new System.Windows.Forms.Panel();
|
|
||||||
this.transportControl = new v2rayN.Forms.ServerTransportControl();
|
|
||||||
this.cmbCoreType = new System.Windows.Forms.ComboBox();
|
|
||||||
this.labCoreType = new System.Windows.Forms.Label();
|
|
||||||
this.groupBox1.SuspendLayout();
|
|
||||||
this.panSocks.SuspendLayout();
|
|
||||||
this.panSs.SuspendLayout();
|
|
||||||
this.panTrojan.SuspendLayout();
|
|
||||||
this.panVless.SuspendLayout();
|
|
||||||
this.panVmess.SuspendLayout();
|
|
||||||
this.panAddr.SuspendLayout();
|
|
||||||
this.panBottom.SuspendLayout();
|
|
||||||
this.panTran.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// groupBox1
|
|
||||||
//
|
|
||||||
this.groupBox1.Controls.Add(this.panSocks);
|
|
||||||
this.groupBox1.Controls.Add(this.panSs);
|
|
||||||
this.groupBox1.Controls.Add(this.panTrojan);
|
|
||||||
this.groupBox1.Controls.Add(this.panVless);
|
|
||||||
this.groupBox1.Controls.Add(this.panVmess);
|
|
||||||
this.groupBox1.Controls.Add(this.panAddr);
|
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
|
||||||
this.groupBox1.TabStop = false;
|
|
||||||
//
|
|
||||||
// panSocks
|
|
||||||
//
|
|
||||||
this.panSocks.Controls.Add(this.label17);
|
|
||||||
this.panSocks.Controls.Add(this.txtSecurity4);
|
|
||||||
this.panSocks.Controls.Add(this.label18);
|
|
||||||
this.panSocks.Controls.Add(this.txtId4);
|
|
||||||
resources.ApplyResources(this.panSocks, "panSocks");
|
|
||||||
this.panSocks.Name = "panSocks";
|
|
||||||
//
|
|
||||||
// label17
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label17, "label17");
|
|
||||||
this.label17.Name = "label17";
|
|
||||||
//
|
|
||||||
// txtSecurity4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtSecurity4, "txtSecurity4");
|
|
||||||
this.txtSecurity4.Name = "txtSecurity4";
|
|
||||||
//
|
|
||||||
// label18
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label18, "label18");
|
|
||||||
this.label18.Name = "label18";
|
|
||||||
//
|
|
||||||
// txtId4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtId4, "txtId4");
|
|
||||||
this.txtId4.Name = "txtId4";
|
|
||||||
//
|
|
||||||
// panSs
|
|
||||||
//
|
|
||||||
this.panSs.Controls.Add(this.txtId3);
|
|
||||||
this.panSs.Controls.Add(this.label15);
|
|
||||||
this.panSs.Controls.Add(this.cmbSecurity3);
|
|
||||||
this.panSs.Controls.Add(this.label16);
|
|
||||||
resources.ApplyResources(this.panSs, "panSs");
|
|
||||||
this.panSs.Name = "panSs";
|
|
||||||
//
|
|
||||||
// txtId3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtId3, "txtId3");
|
|
||||||
this.txtId3.Name = "txtId3";
|
|
||||||
//
|
|
||||||
// label15
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label15, "label15");
|
|
||||||
this.label15.Name = "label15";
|
|
||||||
//
|
|
||||||
// cmbSecurity3
|
|
||||||
//
|
|
||||||
this.cmbSecurity3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbSecurity3.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbSecurity3, "cmbSecurity3");
|
|
||||||
this.cmbSecurity3.Name = "cmbSecurity3";
|
|
||||||
//
|
|
||||||
// label16
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label16, "label16");
|
|
||||||
this.label16.Name = "label16";
|
|
||||||
//
|
|
||||||
// panTrojan
|
|
||||||
//
|
|
||||||
this.panTrojan.Controls.Add(this.label12);
|
|
||||||
this.panTrojan.Controls.Add(this.cmbFlow6);
|
|
||||||
this.panTrojan.Controls.Add(this.txtId6);
|
|
||||||
this.panTrojan.Controls.Add(this.label14);
|
|
||||||
resources.ApplyResources(this.panTrojan, "panTrojan");
|
|
||||||
this.panTrojan.Name = "panTrojan";
|
|
||||||
//
|
|
||||||
// label12
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label12, "label12");
|
|
||||||
this.label12.Name = "label12";
|
|
||||||
//
|
|
||||||
// cmbFlow6
|
|
||||||
//
|
|
||||||
this.cmbFlow6.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbFlow6, "cmbFlow6");
|
|
||||||
this.cmbFlow6.Name = "cmbFlow6";
|
|
||||||
//
|
|
||||||
// txtId6
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtId6, "txtId6");
|
|
||||||
this.txtId6.Name = "txtId6";
|
|
||||||
//
|
|
||||||
// label14
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label14, "label14");
|
|
||||||
this.label14.Name = "label14";
|
|
||||||
//
|
|
||||||
// panVless
|
|
||||||
//
|
|
||||||
this.panVless.Controls.Add(this.label7);
|
|
||||||
this.panVless.Controls.Add(this.cmbFlow5);
|
|
||||||
this.panVless.Controls.Add(this.txtId5);
|
|
||||||
this.panVless.Controls.Add(this.label9);
|
|
||||||
this.panVless.Controls.Add(this.label10);
|
|
||||||
this.panVless.Controls.Add(this.btnGUID5);
|
|
||||||
this.panVless.Controls.Add(this.cmbSecurity5);
|
|
||||||
this.panVless.Controls.Add(this.label11);
|
|
||||||
resources.ApplyResources(this.panVless, "panVless");
|
|
||||||
this.panVless.Name = "panVless";
|
|
||||||
//
|
|
||||||
// label7
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label7, "label7");
|
|
||||||
this.label7.Name = "label7";
|
|
||||||
//
|
|
||||||
// cmbFlow5
|
|
||||||
//
|
|
||||||
this.cmbFlow5.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbFlow5, "cmbFlow5");
|
|
||||||
this.cmbFlow5.Name = "cmbFlow5";
|
|
||||||
//
|
|
||||||
// txtId5
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtId5, "txtId5");
|
|
||||||
this.txtId5.Name = "txtId5";
|
|
||||||
//
|
|
||||||
// label9
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label9, "label9");
|
|
||||||
this.label9.Name = "label9";
|
|
||||||
//
|
|
||||||
// label10
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label10, "label10");
|
|
||||||
this.label10.Name = "label10";
|
|
||||||
//
|
|
||||||
// btnGUID5
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnGUID5, "btnGUID5");
|
|
||||||
this.btnGUID5.Name = "btnGUID5";
|
|
||||||
this.btnGUID5.UseVisualStyleBackColor = true;
|
|
||||||
this.btnGUID5.Click += new System.EventHandler(this.btnGUID_Click);
|
|
||||||
//
|
|
||||||
// cmbSecurity5
|
|
||||||
//
|
|
||||||
this.cmbSecurity5.DropDownStyle = System.Windows.Forms.ComboBoxStyle.Simple;
|
|
||||||
this.cmbSecurity5.FormattingEnabled = true;
|
|
||||||
this.cmbSecurity5.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmbSecurity5.Items")});
|
|
||||||
resources.ApplyResources(this.cmbSecurity5, "cmbSecurity5");
|
|
||||||
this.cmbSecurity5.Name = "cmbSecurity5";
|
|
||||||
//
|
|
||||||
// label11
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label11, "label11");
|
|
||||||
this.label11.Name = "label11";
|
|
||||||
//
|
|
||||||
// panVmess
|
|
||||||
//
|
|
||||||
this.panVmess.Controls.Add(this.label3);
|
|
||||||
this.panVmess.Controls.Add(this.txtId);
|
|
||||||
this.panVmess.Controls.Add(this.btnGUID);
|
|
||||||
this.panVmess.Controls.Add(this.label4);
|
|
||||||
this.panVmess.Controls.Add(this.label8);
|
|
||||||
this.panVmess.Controls.Add(this.txtAlterId);
|
|
||||||
this.panVmess.Controls.Add(this.cmbSecurity);
|
|
||||||
this.panVmess.Controls.Add(this.label5);
|
|
||||||
resources.ApplyResources(this.panVmess, "panVmess");
|
|
||||||
this.panVmess.Name = "panVmess";
|
|
||||||
//
|
|
||||||
// label3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label3, "label3");
|
|
||||||
this.label3.Name = "label3";
|
|
||||||
//
|
|
||||||
// txtId
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtId, "txtId");
|
|
||||||
this.txtId.Name = "txtId";
|
|
||||||
//
|
|
||||||
// btnGUID
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnGUID, "btnGUID");
|
|
||||||
this.btnGUID.Name = "btnGUID";
|
|
||||||
this.btnGUID.UseVisualStyleBackColor = true;
|
|
||||||
this.btnGUID.Click += new System.EventHandler(this.btnGUID_Click);
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label4, "label4");
|
|
||||||
this.label4.Name = "label4";
|
|
||||||
//
|
|
||||||
// label8
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label8, "label8");
|
|
||||||
this.label8.Name = "label8";
|
|
||||||
//
|
|
||||||
// txtAlterId
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtAlterId, "txtAlterId");
|
|
||||||
this.txtAlterId.Name = "txtAlterId";
|
|
||||||
//
|
|
||||||
// cmbSecurity
|
|
||||||
//
|
|
||||||
this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbSecurity.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbSecurity, "cmbSecurity");
|
|
||||||
this.cmbSecurity.Name = "cmbSecurity";
|
|
||||||
//
|
|
||||||
// label5
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label5, "label5");
|
|
||||||
this.label5.Name = "label5";
|
|
||||||
//
|
|
||||||
// panAddr
|
|
||||||
//
|
|
||||||
this.panAddr.Controls.Add(this.cmbCoreType);
|
|
||||||
this.panAddr.Controls.Add(this.labCoreType);
|
|
||||||
this.panAddr.Controls.Add(this.label6);
|
|
||||||
this.panAddr.Controls.Add(this.label1);
|
|
||||||
this.panAddr.Controls.Add(this.txtAddress);
|
|
||||||
this.panAddr.Controls.Add(this.label2);
|
|
||||||
this.panAddr.Controls.Add(this.txtPort);
|
|
||||||
this.panAddr.Controls.Add(this.txtRemarks);
|
|
||||||
resources.ApplyResources(this.panAddr, "panAddr");
|
|
||||||
this.panAddr.Name = "panAddr";
|
|
||||||
//
|
|
||||||
// label6
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label6, "label6");
|
|
||||||
this.label6.Name = "label6";
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label1, "label1");
|
|
||||||
this.label1.Name = "label1";
|
|
||||||
//
|
|
||||||
// txtAddress
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtAddress, "txtAddress");
|
|
||||||
this.txtAddress.Name = "txtAddress";
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label2, "label2");
|
|
||||||
this.label2.Name = "label2";
|
|
||||||
//
|
|
||||||
// txtPort
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtPort, "txtPort");
|
|
||||||
this.txtPort.Name = "txtPort";
|
|
||||||
//
|
|
||||||
// txtRemarks
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtRemarks, "txtRemarks");
|
|
||||||
this.txtRemarks.Name = "txtRemarks";
|
|
||||||
//
|
|
||||||
// panBottom
|
|
||||||
//
|
|
||||||
this.panBottom.Controls.Add(this.btnClose);
|
|
||||||
this.panBottom.Controls.Add(this.btnOK);
|
|
||||||
resources.ApplyResources(this.panBottom, "panBottom");
|
|
||||||
this.panBottom.Name = "panBottom";
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// panTop
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panTop, "panTop");
|
|
||||||
this.panTop.Name = "panTop";
|
|
||||||
//
|
|
||||||
// panTran
|
|
||||||
//
|
|
||||||
this.panTran.Controls.Add(this.transportControl);
|
|
||||||
resources.ApplyResources(this.panTran, "panTran");
|
|
||||||
this.panTran.Name = "panTran";
|
|
||||||
//
|
|
||||||
// transportControl
|
|
||||||
//
|
|
||||||
this.transportControl.AllowXtls = false;
|
|
||||||
resources.ApplyResources(this.transportControl, "transportControl");
|
|
||||||
this.transportControl.Name = "transportControl";
|
|
||||||
//
|
|
||||||
// cmbCoreType
|
|
||||||
//
|
|
||||||
this.cmbCoreType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbCoreType.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbCoreType, "cmbCoreType");
|
|
||||||
this.cmbCoreType.Name = "cmbCoreType";
|
|
||||||
//
|
|
||||||
// labCoreType
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labCoreType, "labCoreType");
|
|
||||||
this.labCoreType.Name = "labCoreType";
|
|
||||||
//
|
|
||||||
// AddServerForm
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.groupBox1);
|
|
||||||
this.Controls.Add(this.panTran);
|
|
||||||
this.Controls.Add(this.panBottom);
|
|
||||||
this.Controls.Add(this.panTop);
|
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
|
||||||
this.Name = "AddServerForm";
|
|
||||||
this.Load += new System.EventHandler(this.AddServerForm_Load);
|
|
||||||
this.groupBox1.ResumeLayout(false);
|
|
||||||
this.panSocks.ResumeLayout(false);
|
|
||||||
this.panSocks.PerformLayout();
|
|
||||||
this.panSs.ResumeLayout(false);
|
|
||||||
this.panSs.PerformLayout();
|
|
||||||
this.panTrojan.ResumeLayout(false);
|
|
||||||
this.panTrojan.PerformLayout();
|
|
||||||
this.panVless.ResumeLayout(false);
|
|
||||||
this.panVless.PerformLayout();
|
|
||||||
this.panVmess.ResumeLayout(false);
|
|
||||||
this.panVmess.PerformLayout();
|
|
||||||
this.panAddr.ResumeLayout(false);
|
|
||||||
this.panAddr.PerformLayout();
|
|
||||||
this.panBottom.ResumeLayout(false);
|
|
||||||
this.panTran.ResumeLayout(false);
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.GroupBox groupBox1;
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.TextBox txtRemarks;
|
|
||||||
private System.Windows.Forms.Label label6;
|
|
||||||
private System.Windows.Forms.Label label5;
|
|
||||||
private System.Windows.Forms.TextBox txtAlterId;
|
|
||||||
private System.Windows.Forms.Label label4;
|
|
||||||
private System.Windows.Forms.TextBox txtId;
|
|
||||||
private System.Windows.Forms.Label label3;
|
|
||||||
private System.Windows.Forms.TextBox txtPort;
|
|
||||||
private System.Windows.Forms.Label label2;
|
|
||||||
private System.Windows.Forms.TextBox txtAddress;
|
|
||||||
private System.Windows.Forms.Label label1;
|
|
||||||
private System.Windows.Forms.ComboBox cmbSecurity;
|
|
||||||
private System.Windows.Forms.Label label8;
|
|
||||||
private System.Windows.Forms.Panel panTop;
|
|
||||||
private System.Windows.Forms.Panel panBottom;
|
|
||||||
private System.Windows.Forms.Button btnGUID;
|
|
||||||
private System.Windows.Forms.Panel panTran;
|
|
||||||
private ServerTransportControl transportControl;
|
|
||||||
private System.Windows.Forms.Panel panAddr;
|
|
||||||
private System.Windows.Forms.Panel panVmess;
|
|
||||||
private System.Windows.Forms.Panel panVless;
|
|
||||||
private System.Windows.Forms.Label label7;
|
|
||||||
private System.Windows.Forms.ComboBox cmbFlow5;
|
|
||||||
private System.Windows.Forms.TextBox txtId5;
|
|
||||||
private System.Windows.Forms.Label label9;
|
|
||||||
private System.Windows.Forms.Label label10;
|
|
||||||
private System.Windows.Forms.Button btnGUID5;
|
|
||||||
private System.Windows.Forms.ComboBox cmbSecurity5;
|
|
||||||
private System.Windows.Forms.Label label11;
|
|
||||||
private System.Windows.Forms.Panel panTrojan;
|
|
||||||
private System.Windows.Forms.Label label12;
|
|
||||||
private System.Windows.Forms.ComboBox cmbFlow6;
|
|
||||||
private System.Windows.Forms.TextBox txtId6;
|
|
||||||
private System.Windows.Forms.Label label14;
|
|
||||||
private System.Windows.Forms.Panel panSs;
|
|
||||||
private System.Windows.Forms.TextBox txtId3;
|
|
||||||
private System.Windows.Forms.Label label15;
|
|
||||||
private System.Windows.Forms.ComboBox cmbSecurity3;
|
|
||||||
private System.Windows.Forms.Label label16;
|
|
||||||
private System.Windows.Forms.Panel panSocks;
|
|
||||||
private System.Windows.Forms.Label label17;
|
|
||||||
private System.Windows.Forms.TextBox txtSecurity4;
|
|
||||||
private System.Windows.Forms.Label label18;
|
|
||||||
private System.Windows.Forms.TextBox txtId4;
|
|
||||||
private System.Windows.Forms.ComboBox cmbCoreType;
|
|
||||||
private System.Windows.Forms.Label labCoreType;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,285 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class AddServerForm : BaseServerForm
|
|
||||||
{
|
|
||||||
public AddServerForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AddServerForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Text = (eConfigType).ToString();
|
|
||||||
|
|
||||||
cmbCoreType.Items.AddRange(Global.coreTypes.ToArray());
|
|
||||||
cmbCoreType.Items.Add(string.Empty);
|
|
||||||
|
|
||||||
switch (eConfigType)
|
|
||||||
{
|
|
||||||
case EConfigType.VMess:
|
|
||||||
panVmess.Dock = DockStyle.Fill;
|
|
||||||
panVmess.Visible = true;
|
|
||||||
|
|
||||||
cmbSecurity.Items.AddRange(Global.vmessSecuritys.ToArray());
|
|
||||||
break;
|
|
||||||
case EConfigType.Shadowsocks:
|
|
||||||
panSs.Dock = DockStyle.Fill;
|
|
||||||
panSs.Visible = true;
|
|
||||||
//panTran.Visible = false;
|
|
||||||
//this.Height = this.Height - panTran.Height;
|
|
||||||
|
|
||||||
cmbSecurity3.Items.AddRange(LazyConfig.Instance.GetShadowsocksSecuritys().ToArray());
|
|
||||||
break;
|
|
||||||
case EConfigType.Socks:
|
|
||||||
panSocks.Dock = DockStyle.Fill;
|
|
||||||
panSocks.Visible = true;
|
|
||||||
panTran.Visible = false;
|
|
||||||
Height = Height - panTran.Height;
|
|
||||||
break;
|
|
||||||
case EConfigType.VLESS:
|
|
||||||
panVless.Dock = DockStyle.Fill;
|
|
||||||
panVless.Visible = true;
|
|
||||||
transportControl.AllowXtls = true;
|
|
||||||
|
|
||||||
cmbFlow5.Items.AddRange(Global.xtlsFlows.ToArray());
|
|
||||||
break;
|
|
||||||
case EConfigType.Trojan:
|
|
||||||
panTrojan.Dock = DockStyle.Fill;
|
|
||||||
panTrojan.Visible = true;
|
|
||||||
transportControl.AllowXtls = true;
|
|
||||||
|
|
||||||
cmbFlow6.Items.AddRange(Global.xtlsFlows.ToArray());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (vmessItem != null)
|
|
||||||
{
|
|
||||||
BindingServer();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vmessItem = new VmessItem
|
|
||||||
{
|
|
||||||
groupId = groupId
|
|
||||||
};
|
|
||||||
ClearServer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 绑定数据
|
|
||||||
/// </summary>
|
|
||||||
private void BindingServer()
|
|
||||||
{
|
|
||||||
txtRemarks.Text = vmessItem.remarks;
|
|
||||||
txtAddress.Text = vmessItem.address;
|
|
||||||
txtPort.Text = vmessItem.port.ToString();
|
|
||||||
|
|
||||||
switch (eConfigType)
|
|
||||||
{
|
|
||||||
case EConfigType.VMess:
|
|
||||||
txtId.Text = vmessItem.id;
|
|
||||||
txtAlterId.Text = vmessItem.alterId.ToString();
|
|
||||||
cmbSecurity.Text = vmessItem.security;
|
|
||||||
break;
|
|
||||||
case EConfigType.Shadowsocks:
|
|
||||||
txtId3.Text = vmessItem.id;
|
|
||||||
cmbSecurity3.Text = vmessItem.security;
|
|
||||||
break;
|
|
||||||
case EConfigType.Socks:
|
|
||||||
txtId4.Text = vmessItem.id;
|
|
||||||
txtSecurity4.Text = vmessItem.security;
|
|
||||||
break;
|
|
||||||
case EConfigType.VLESS:
|
|
||||||
txtId5.Text = vmessItem.id;
|
|
||||||
cmbFlow5.Text = vmessItem.flow;
|
|
||||||
cmbSecurity5.Text = vmessItem.security;
|
|
||||||
break;
|
|
||||||
case EConfigType.Trojan:
|
|
||||||
txtId6.Text = vmessItem.id;
|
|
||||||
cmbFlow6.Text = vmessItem.flow;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
cmbCoreType.Text = vmessItem.coreType == null ? string.Empty : vmessItem.coreType.ToString();
|
|
||||||
|
|
||||||
transportControl.BindingServer(vmessItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清除设置
|
|
||||||
/// </summary>
|
|
||||||
private void ClearServer()
|
|
||||||
{
|
|
||||||
txtRemarks.Text = "";
|
|
||||||
txtAddress.Text = "";
|
|
||||||
txtPort.Text = "";
|
|
||||||
|
|
||||||
switch (eConfigType)
|
|
||||||
{
|
|
||||||
case EConfigType.VMess:
|
|
||||||
txtId.Text = "";
|
|
||||||
txtAlterId.Text = "0";
|
|
||||||
cmbSecurity.Text = Global.DefaultSecurity;
|
|
||||||
break;
|
|
||||||
case EConfigType.Shadowsocks:
|
|
||||||
txtId3.Text = "";
|
|
||||||
cmbSecurity3.Text = Global.DefaultSecurity;
|
|
||||||
break;
|
|
||||||
case EConfigType.Socks:
|
|
||||||
txtId4.Text = "";
|
|
||||||
txtSecurity4.Text = "";
|
|
||||||
break;
|
|
||||||
case EConfigType.VLESS:
|
|
||||||
txtId5.Text = "";
|
|
||||||
cmbFlow5.Text = "";
|
|
||||||
cmbSecurity5.Text = Global.None;
|
|
||||||
break;
|
|
||||||
case EConfigType.Trojan:
|
|
||||||
txtId6.Text = "";
|
|
||||||
cmbFlow6.Text = "";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
transportControl.ClearServer(vmessItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string remarks = txtRemarks.Text;
|
|
||||||
string address = txtAddress.Text;
|
|
||||||
string port = txtPort.Text;
|
|
||||||
|
|
||||||
string id = string.Empty;
|
|
||||||
string alterId = string.Empty;
|
|
||||||
string security = string.Empty;
|
|
||||||
string flow = string.Empty;
|
|
||||||
|
|
||||||
switch (eConfigType)
|
|
||||||
{
|
|
||||||
case EConfigType.VMess:
|
|
||||||
id = txtId.Text;
|
|
||||||
alterId = txtAlterId.Text;
|
|
||||||
security = cmbSecurity.Text;
|
|
||||||
break;
|
|
||||||
case EConfigType.Shadowsocks:
|
|
||||||
id = txtId3.Text;
|
|
||||||
security = cmbSecurity3.Text;
|
|
||||||
break;
|
|
||||||
case EConfigType.Socks:
|
|
||||||
id = txtId4.Text;
|
|
||||||
security = txtSecurity4.Text;
|
|
||||||
break;
|
|
||||||
case EConfigType.VLESS:
|
|
||||||
id = txtId5.Text;
|
|
||||||
flow = cmbFlow5.Text;
|
|
||||||
security = cmbSecurity5.Text;
|
|
||||||
break;
|
|
||||||
case EConfigType.Trojan:
|
|
||||||
id = txtId6.Text;
|
|
||||||
flow = cmbFlow6.Text;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Utils.IsNullOrEmpty(address))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.FillServerAddress);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Utils.IsNullOrEmpty(port) || !Utils.IsNumberic(port))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.FillCorrectServerPort);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (eConfigType == EConfigType.Shadowsocks)
|
|
||||||
{
|
|
||||||
if (Utils.IsNullOrEmpty(id))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.FillPassword);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Utils.IsNullOrEmpty(security))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.PleaseSelectEncryption);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (eConfigType != EConfigType.Socks)
|
|
||||||
{
|
|
||||||
if (Utils.IsNullOrEmpty(id))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.FillUUID);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
transportControl.EndBindingServer();
|
|
||||||
|
|
||||||
vmessItem.remarks = remarks;
|
|
||||||
vmessItem.address = address;
|
|
||||||
vmessItem.port = Utils.ToInt(port);
|
|
||||||
vmessItem.id = id;
|
|
||||||
vmessItem.alterId = Utils.ToInt(alterId);
|
|
||||||
vmessItem.security = security;
|
|
||||||
|
|
||||||
if (Utils.IsNullOrEmpty(cmbCoreType.Text))
|
|
||||||
{
|
|
||||||
vmessItem.coreType = null;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vmessItem.coreType = (ECoreType)Enum.Parse(typeof(ECoreType), cmbCoreType.Text);
|
|
||||||
}
|
|
||||||
|
|
||||||
int ret = -1;
|
|
||||||
switch (eConfigType)
|
|
||||||
{
|
|
||||||
case EConfigType.VMess:
|
|
||||||
ret = ConfigHandler.AddServer(ref config, vmessItem);
|
|
||||||
break;
|
|
||||||
case EConfigType.Shadowsocks:
|
|
||||||
ret = ConfigHandler.AddShadowsocksServer(ref config, vmessItem);
|
|
||||||
break;
|
|
||||||
case EConfigType.Socks:
|
|
||||||
ret = ConfigHandler.AddSocksServer(ref config, vmessItem);
|
|
||||||
break;
|
|
||||||
case EConfigType.VLESS:
|
|
||||||
vmessItem.flow = flow;
|
|
||||||
ret = ConfigHandler.AddVlessServer(ref config, vmessItem);
|
|
||||||
break;
|
|
||||||
case EConfigType.Trojan:
|
|
||||||
vmessItem.flow = flow;
|
|
||||||
ret = ConfigHandler.AddTrojanServer(ref config, vmessItem);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret == 0)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(ResUI.OperationFailed);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnGUID_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
txtId.Text =
|
|
||||||
txtId5.Text = Utils.GetGUID();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,275 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>服务器</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>None</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>270, 156</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>115, 61</value>
|
|
||||||
</data>
|
|
||||||
<data name="label17.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>77, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label17.Text" xml:space="preserve">
|
|
||||||
<value>用户名(可选)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label18.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label18.Text" xml:space="preserve">
|
|
||||||
<value>密码(可选)</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>None</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>142, 147</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>137, 78</value>
|
|
||||||
</data>
|
|
||||||
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label15.Text" xml:space="preserve">
|
|
||||||
<value>密码(password)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>125, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label16.Text" xml:space="preserve">
|
|
||||||
<value>加密方式(encryption)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label12.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label12.Text" xml:space="preserve">
|
|
||||||
<value>密码(password)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label14.Text" xml:space="preserve">
|
|
||||||
<value>流控(flow)</value>
|
|
||||||
</data>
|
|
||||||
<data name="panVless.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>110, 52</value>
|
|
||||||
</data>
|
|
||||||
<data name="label7.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label7.Text" xml:space="preserve">
|
|
||||||
<value>用户ID(id)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label9.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label9.Text" xml:space="preserve">
|
|
||||||
<value>流控(flow)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label10.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>101, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label10.Text" xml:space="preserve">
|
|
||||||
<value>加密(encryption)</value>
|
|
||||||
</data>
|
|
||||||
<data name="button1.Text" xml:space="preserve">
|
|
||||||
<value>生成</value>
|
|
||||||
</data>
|
|
||||||
<data name="label11.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>71, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label11.Text" xml:space="preserve">
|
|
||||||
<value>*非空(none)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>用户ID(id)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnGUID.Text" xml:space="preserve">
|
|
||||||
<value>生成(&G)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>95, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>额外ID(alterId)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label8.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label8.Text" xml:space="preserve">
|
|
||||||
<value>*随便选,建议(auto)</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>126, 65</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>211, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>加密方式(security)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>83, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Text" xml:space="preserve">
|
|
||||||
<value>别名(remarks)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>83, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>地址(address)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>端口(port)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>编辑或添加[VMess]服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnGUID5.Text" xml:space="preserve">
|
|
||||||
<value>生成</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.Text" xml:space="preserve">
|
|
||||||
<value>Core类型</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
51
v2rayN/v2rayN/Forms/BaseForm.Designer.cs
generated
51
v2rayN/v2rayN/Forms/BaseForm.Designer.cs
generated
@@ -1,51 +0,0 @@
|
|||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class BaseForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BaseForm));
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// BaseForm
|
|
||||||
//
|
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.ClientSize = new System.Drawing.Size(292, 273);
|
|
||||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
|
||||||
this.MaximizeBox = false;
|
|
||||||
this.MinimizeBox = false;
|
|
||||||
this.Name = "BaseForm";
|
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
|
||||||
this.Text = "BaseForm";
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class BaseForm : Form
|
|
||||||
{
|
|
||||||
protected static Config config;
|
|
||||||
|
|
||||||
public BaseForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
LoadCustomIcon();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void LoadCustomIcon()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
string file = Utils.GetPath(Global.CustomIconName);
|
|
||||||
if (System.IO.File.Exists(file))
|
|
||||||
{
|
|
||||||
Icon = new System.Drawing.Icon(file);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Icon = Properties.Resources.NotifyIcon1;
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
Utils.SaveLog($"Loading custom icon failed: {e.Message}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
50
v2rayN/v2rayN/Forms/BaseServerForm.Designer.cs
generated
50
v2rayN/v2rayN/Forms/BaseServerForm.Designer.cs
generated
@@ -1,50 +0,0 @@
|
|||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class BaseServerForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BaseServerForm));
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// BaseServerForm
|
|
||||||
//
|
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.ClientSize = new System.Drawing.Size(292, 273);
|
|
||||||
this.MaximizeBox = false;
|
|
||||||
this.MinimizeBox = false;
|
|
||||||
this.Name = "BaseServerForm";
|
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
|
||||||
this.Text = "BaseServerForm";
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class BaseServerForm : BaseForm
|
|
||||||
{
|
|
||||||
public VmessItem vmessItem = null;
|
|
||||||
public string groupId;
|
|
||||||
public EConfigType eConfigType;
|
|
||||||
|
|
||||||
public BaseServerForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,121 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
</root>
|
|
||||||
186
v2rayN/v2rayN/Forms/GlobalHotkeySettingForm.Designer.cs
generated
186
v2rayN/v2rayN/Forms/GlobalHotkeySettingForm.Designer.cs
generated
@@ -1,186 +0,0 @@
|
|||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class GlobalHotkeySettingForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GlobalHotkeySettingForm));
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
|
||||||
this.btnReset = new System.Windows.Forms.Button();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
|
||||||
this.label6 = new System.Windows.Forms.Label();
|
|
||||||
this.label5 = new System.Windows.Forms.Label();
|
|
||||||
this.txtGlobalHotkey3 = new System.Windows.Forms.TextBox();
|
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
|
||||||
this.txtGlobalHotkey2 = new System.Windows.Forms.TextBox();
|
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
|
||||||
this.txtGlobalHotkey1 = new System.Windows.Forms.TextBox();
|
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
|
||||||
this.txtGlobalHotkey0 = new System.Windows.Forms.TextBox();
|
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
|
||||||
this.panel2.SuspendLayout();
|
|
||||||
this.panel1.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// panel2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Controls.Add(this.btnReset);
|
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
|
||||||
this.panel2.Name = "panel2";
|
|
||||||
//
|
|
||||||
// btnReset
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnReset, "btnReset");
|
|
||||||
this.btnReset.Name = "btnReset";
|
|
||||||
this.btnReset.UseVisualStyleBackColor = true;
|
|
||||||
this.btnReset.Click += new System.EventHandler(this.btnReset_Click);
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel1, "panel1");
|
|
||||||
this.panel1.Controls.Add(this.label6);
|
|
||||||
this.panel1.Controls.Add(this.label5);
|
|
||||||
this.panel1.Controls.Add(this.txtGlobalHotkey3);
|
|
||||||
this.panel1.Controls.Add(this.label4);
|
|
||||||
this.panel1.Controls.Add(this.txtGlobalHotkey2);
|
|
||||||
this.panel1.Controls.Add(this.label3);
|
|
||||||
this.panel1.Controls.Add(this.txtGlobalHotkey1);
|
|
||||||
this.panel1.Controls.Add(this.label1);
|
|
||||||
this.panel1.Controls.Add(this.txtGlobalHotkey0);
|
|
||||||
this.panel1.Controls.Add(this.label2);
|
|
||||||
this.panel1.Name = "panel1";
|
|
||||||
//
|
|
||||||
// label6
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label6, "label6");
|
|
||||||
this.label6.ForeColor = System.Drawing.Color.Red;
|
|
||||||
this.label6.Name = "label6";
|
|
||||||
//
|
|
||||||
// label5
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label5, "label5");
|
|
||||||
this.label5.ForeColor = System.Drawing.Color.Red;
|
|
||||||
this.label5.Name = "label5";
|
|
||||||
//
|
|
||||||
// txtGlobalHotkey3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtGlobalHotkey3, "txtGlobalHotkey3");
|
|
||||||
this.txtGlobalHotkey3.Name = "txtGlobalHotkey3";
|
|
||||||
this.txtGlobalHotkey3.ReadOnly = true;
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label4, "label4");
|
|
||||||
this.label4.Name = "label4";
|
|
||||||
//
|
|
||||||
// txtGlobalHotkey2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtGlobalHotkey2, "txtGlobalHotkey2");
|
|
||||||
this.txtGlobalHotkey2.Name = "txtGlobalHotkey2";
|
|
||||||
this.txtGlobalHotkey2.ReadOnly = true;
|
|
||||||
//
|
|
||||||
// label3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label3, "label3");
|
|
||||||
this.label3.Name = "label3";
|
|
||||||
//
|
|
||||||
// txtGlobalHotkey1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtGlobalHotkey1, "txtGlobalHotkey1");
|
|
||||||
this.txtGlobalHotkey1.Name = "txtGlobalHotkey1";
|
|
||||||
this.txtGlobalHotkey1.ReadOnly = true;
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label1, "label1");
|
|
||||||
this.label1.Name = "label1";
|
|
||||||
//
|
|
||||||
// txtGlobalHotkey0
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtGlobalHotkey0, "txtGlobalHotkey0");
|
|
||||||
this.txtGlobalHotkey0.Name = "txtGlobalHotkey0";
|
|
||||||
this.txtGlobalHotkey0.ReadOnly = true;
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label2, "label2");
|
|
||||||
this.label2.Name = "label2";
|
|
||||||
//
|
|
||||||
// GlobalHotkeySettingForm
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.panel1);
|
|
||||||
this.Controls.Add(this.panel2);
|
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
|
||||||
this.Name = "GlobalHotkeySettingForm";
|
|
||||||
this.Load += new System.EventHandler(this.GlobalHotkeySettingForm_Load);
|
|
||||||
this.panel2.ResumeLayout(false);
|
|
||||||
this.panel1.ResumeLayout(false);
|
|
||||||
this.panel1.PerformLayout();
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.Panel panel1;
|
|
||||||
private System.Windows.Forms.TextBox txtGlobalHotkey0;
|
|
||||||
private System.Windows.Forms.Label label2;
|
|
||||||
private System.Windows.Forms.TextBox txtGlobalHotkey3;
|
|
||||||
private System.Windows.Forms.Label label4;
|
|
||||||
private System.Windows.Forms.TextBox txtGlobalHotkey2;
|
|
||||||
private System.Windows.Forms.Label label3;
|
|
||||||
private System.Windows.Forms.TextBox txtGlobalHotkey1;
|
|
||||||
private System.Windows.Forms.Label label1;
|
|
||||||
private System.Windows.Forms.Label label5;
|
|
||||||
private System.Windows.Forms.Button btnReset;
|
|
||||||
private System.Windows.Forms.Label label6;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,139 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Base;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class GlobalHotkeySettingForm : BaseForm
|
|
||||||
{
|
|
||||||
List<KeyEventItem> lstKey;
|
|
||||||
public GlobalHotkeySettingForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void GlobalHotkeySettingForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (config.globalHotkeys == null)
|
|
||||||
{
|
|
||||||
config.globalHotkeys = new List<KeyEventItem>();
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (EGlobalHotkey it in Enum.GetValues(typeof(EGlobalHotkey)))
|
|
||||||
{
|
|
||||||
if (config.globalHotkeys.FindIndex(t => t.eGlobalHotkey == it) >= 0)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
config.globalHotkeys.Add(new KeyEventItem()
|
|
||||||
{
|
|
||||||
eGlobalHotkey = it,
|
|
||||||
Alt = false,
|
|
||||||
Control = false,
|
|
||||||
Shift = false,
|
|
||||||
KeyCode = null
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
lstKey = Utils.DeepCopy(config.globalHotkeys);
|
|
||||||
|
|
||||||
txtGlobalHotkey0.KeyDown += TxtGlobalHotkey_KeyDown;
|
|
||||||
txtGlobalHotkey1.KeyDown += TxtGlobalHotkey_KeyDown;
|
|
||||||
txtGlobalHotkey2.KeyDown += TxtGlobalHotkey_KeyDown;
|
|
||||||
txtGlobalHotkey3.KeyDown += TxtGlobalHotkey_KeyDown;
|
|
||||||
|
|
||||||
BindingData(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void TxtGlobalHotkey_KeyDown(object sender, KeyEventArgs e)
|
|
||||||
{
|
|
||||||
var txt = ((TextBox)sender);
|
|
||||||
var index = Utils.ToInt(txt.Name.Substring(txt.Name.Length - 1, 1));
|
|
||||||
|
|
||||||
lstKey[index].KeyCode = e.KeyCode;
|
|
||||||
lstKey[index].Alt = e.Alt;
|
|
||||||
lstKey[index].Control = e.Control;
|
|
||||||
lstKey[index].Shift = e.Shift;
|
|
||||||
|
|
||||||
BindingData(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void BindingData(int index)
|
|
||||||
{
|
|
||||||
for (int k = 0; k < lstKey.Count; k++)
|
|
||||||
{
|
|
||||||
if (index >= 0 && index != k)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var item = lstKey[k];
|
|
||||||
var keys = string.Empty;
|
|
||||||
|
|
||||||
if (item.Control)
|
|
||||||
{
|
|
||||||
keys += $"{Keys.Control.ToString()} + ";
|
|
||||||
}
|
|
||||||
if (item.Alt)
|
|
||||||
{
|
|
||||||
keys += $"{Keys.Alt.ToString()} + ";
|
|
||||||
}
|
|
||||||
if (item.Shift)
|
|
||||||
{
|
|
||||||
keys += $"{Keys.Shift.ToString()} + ";
|
|
||||||
}
|
|
||||||
if (item.KeyCode != null)
|
|
||||||
{
|
|
||||||
keys += $"{item.KeyCode.ToString()}";
|
|
||||||
}
|
|
||||||
|
|
||||||
panel1.Controls[$"txtGlobalHotkey{k}"].Text = keys;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
config.globalHotkeys = lstKey;
|
|
||||||
|
|
||||||
if (ConfigHandler.SaveConfig(ref config, false) == 0)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(ResUI.OperationFailed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnReset_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
lstKey.Clear();
|
|
||||||
foreach (EGlobalHotkey it in Enum.GetValues(typeof(EGlobalHotkey)))
|
|
||||||
{
|
|
||||||
if (lstKey.FindIndex(t => t.eGlobalHotkey == it) >= 0)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
lstKey.Add(new KeyEventItem()
|
|
||||||
{
|
|
||||||
eGlobalHotkey = it,
|
|
||||||
Alt = false,
|
|
||||||
Control = false,
|
|
||||||
Shift = false,
|
|
||||||
KeyCode = null
|
|
||||||
});
|
|
||||||
}
|
|
||||||
BindingData(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,537 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>Clear system proxy</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="btnReset.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnReset.Text" xml:space="preserve">
|
|
||||||
<value>&Reset</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnReset.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnReset.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>GlobalHotkeySettingForm</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
|
||||||
<value>label1</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>189, 138</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>34</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>37</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 215</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey1.ZOrder" xml:space="preserve">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>101, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey0.ZOrder" xml:space="preserve">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Text" xml:space="preserve">
|
|
||||||
<value>Take effect after restart</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey0.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>278, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey0.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>189, 18</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>11</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 103</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 190</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey3.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>278, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>527, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey0.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>32</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey2.Name" xml:space="preserve">
|
|
||||||
<value>txtGlobalHotkey2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Name" xml:space="preserve">
|
|
||||||
<value>label5</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>527, 242</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnReset.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>211, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
|
||||||
<value>9</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>40</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>71, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey1.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey0.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Name" xml:space="preserve">
|
|
||||||
<value>label4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey1.Name" xml:space="preserve">
|
|
||||||
<value>txtGlobalHotkey1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>33</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>Do not change system proxy</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>Set system proxy</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey3.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey0.Name" xml:space="preserve">
|
|
||||||
<value>txtGlobalHotkey0</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>39</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
|
||||||
<value>btnClose</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>303, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 242</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnReset.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnReset.Name" xml:space="preserve">
|
|
||||||
<value>btnReset</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnReset.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>189, 58</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>36</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>31</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>278, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>189, 99</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Name" xml:space="preserve">
|
|
||||||
<value>label2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Name" xml:space="preserve">
|
|
||||||
<value>label3</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>Set directly by pressing the keyboard</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>&Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 62</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>&OK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>Display GUI</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>35</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnReset.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 142</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey3.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>161, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey0.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey2.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>155, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>GlobalHotkey Setting</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>527, 302</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey3.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>38</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey3.Name" xml:space="preserve">
|
|
||||||
<value>txtGlobalHotkey3</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>278, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>396, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Name" xml:space="preserve">
|
|
||||||
<value>label6</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Name" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey2.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>25</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
|
||||||
@@ -1,166 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnReset.Text" xml:space="preserve">
|
|
||||||
<value>重置(&R)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Text" xml:space="preserve">
|
|
||||||
<value>重启后生效</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>直接按键盘进行设置</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>不改变系统代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>自动配置系统代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>77, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>清除系统代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>显示主界面</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>全局热键设置</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
105
v2rayN/v2rayN/Forms/GroupSettingControl.Designer.cs
generated
105
v2rayN/v2rayN/Forms/GroupSettingControl.Designer.cs
generated
@@ -1,105 +0,0 @@
|
|||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class GroupSettingControl
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 必需的设计器变量。
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清理所有正在使用的资源。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 组件设计器生成的代码
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 设计器支持所需的方法 - 不要修改
|
|
||||||
/// 使用代码编辑器修改此方法的内容。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GroupSettingControl));
|
|
||||||
this.grbMain = new System.Windows.Forms.GroupBox();
|
|
||||||
this.btnRemove = new System.Windows.Forms.Button();
|
|
||||||
this.txtRemarks = new System.Windows.Forms.TextBox();
|
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
|
||||||
this.numSort = new System.Windows.Forms.NumericUpDown();
|
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
|
||||||
this.grbMain.SuspendLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.numSort)).BeginInit();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// grbMain
|
|
||||||
//
|
|
||||||
this.grbMain.Controls.Add(this.label1);
|
|
||||||
this.grbMain.Controls.Add(this.numSort);
|
|
||||||
this.grbMain.Controls.Add(this.btnRemove);
|
|
||||||
this.grbMain.Controls.Add(this.txtRemarks);
|
|
||||||
this.grbMain.Controls.Add(this.label2);
|
|
||||||
resources.ApplyResources(this.grbMain, "grbMain");
|
|
||||||
this.grbMain.Name = "grbMain";
|
|
||||||
this.grbMain.TabStop = false;
|
|
||||||
//
|
|
||||||
// btnRemove
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnRemove, "btnRemove");
|
|
||||||
this.btnRemove.Name = "btnRemove";
|
|
||||||
this.btnRemove.UseVisualStyleBackColor = true;
|
|
||||||
this.btnRemove.Click += new System.EventHandler(this.btnRemove_Click);
|
|
||||||
//
|
|
||||||
// txtRemarks
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtRemarks, "txtRemarks");
|
|
||||||
this.txtRemarks.Name = "txtRemarks";
|
|
||||||
this.txtRemarks.Leave += new System.EventHandler(this.txtRemarks_Leave);
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label2, "label2");
|
|
||||||
this.label2.Name = "label2";
|
|
||||||
//
|
|
||||||
// numSort
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.numSort, "numSort");
|
|
||||||
this.numSort.Name = "numSort";
|
|
||||||
this.numSort.Leave += new System.EventHandler(this.txtRemarks_Leave);
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label1, "label1");
|
|
||||||
this.label1.Name = "label1";
|
|
||||||
//
|
|
||||||
// GroupSettingControl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.Controls.Add(this.grbMain);
|
|
||||||
this.Name = "GroupSettingControl";
|
|
||||||
this.Load += new System.EventHandler(this.GroupSettingControl_Load);
|
|
||||||
this.grbMain.ResumeLayout(false);
|
|
||||||
this.grbMain.PerformLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.numSort)).EndInit();
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.GroupBox grbMain;
|
|
||||||
private System.Windows.Forms.TextBox txtRemarks;
|
|
||||||
private System.Windows.Forms.Label label2;
|
|
||||||
private System.Windows.Forms.Button btnRemove;
|
|
||||||
private System.Windows.Forms.Label label1;
|
|
||||||
private System.Windows.Forms.NumericUpDown numSort;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Base;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class GroupSettingControl : UserControl
|
|
||||||
{
|
|
||||||
public event ChangeEventHandler OnButtonClicked;
|
|
||||||
|
|
||||||
|
|
||||||
public GroupItem groupItem
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
public GroupSettingControl()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void GroupSettingControl_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Height = grbMain.Height;
|
|
||||||
BindingSub();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void BindingSub()
|
|
||||||
{
|
|
||||||
if (groupItem != null)
|
|
||||||
{
|
|
||||||
txtRemarks.Text = groupItem.remarks.ToString();
|
|
||||||
numSort.Value = groupItem.sort;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void EndBindingSub()
|
|
||||||
{
|
|
||||||
if (groupItem != null)
|
|
||||||
{
|
|
||||||
groupItem.remarks = txtRemarks.Text.TrimEx();
|
|
||||||
groupItem.sort = Convert.ToInt32(numSort.Value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void txtRemarks_Leave(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
EndBindingSub();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnRemove_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (groupItem != null)
|
|
||||||
{
|
|
||||||
groupItem.remarks = string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
OnButtonClicked?.Invoke(sender, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,294 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 61</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>71, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>26</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>Sort number</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
|
||||||
<value>label1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="numSort.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 57</value>
|
|
||||||
</data>
|
|
||||||
<data name="numSort.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>120, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="numSort.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>25</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>numSort.Name" xml:space="preserve">
|
|
||||||
<value>numSort</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>numSort.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>numSort.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>numSort.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>525, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>24</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.Text" xml:space="preserve">
|
|
||||||
<value>Remove</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnRemove.Name" xml:space="preserve">
|
|
||||||
<value>btnRemove</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnRemove.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnRemove.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnRemove.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>292, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
|
||||||
<value>txtRemarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 25</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>47, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>Remarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Name" xml:space="preserve">
|
|
||||||
<value>label2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>619, 91</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.Text" xml:space="preserve">
|
|
||||||
<value>Group details</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>grbMain.Name" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>grbMain.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>grbMain.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>grbMain.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>619, 91</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>GroupSettingControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
@@ -1,136 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="btnRemove.Text" xml:space="preserve">
|
|
||||||
<value>移除</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>29, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>备注</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.Text" xml:space="preserve">
|
|
||||||
<value>分组详情</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>排序编号</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
97
v2rayN/v2rayN/Forms/GroupSettingForm.Designer.cs
generated
97
v2rayN/v2rayN/Forms/GroupSettingForm.Designer.cs
generated
@@ -1,97 +0,0 @@
|
|||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class GroupSettingForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GroupSettingForm));
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.panCon = new System.Windows.Forms.Panel();
|
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
|
||||||
this.btnAdd = new System.Windows.Forms.Button();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.panel2.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// panCon
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panCon, "panCon");
|
|
||||||
this.panCon.Name = "panCon";
|
|
||||||
//
|
|
||||||
// panel2
|
|
||||||
//
|
|
||||||
this.panel2.Controls.Add(this.btnAdd);
|
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Name = "panel2";
|
|
||||||
//
|
|
||||||
// btnAdd
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnAdd, "btnAdd");
|
|
||||||
this.btnAdd.Name = "btnAdd";
|
|
||||||
this.btnAdd.UseVisualStyleBackColor = true;
|
|
||||||
this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// GroupSettingForm
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.panCon);
|
|
||||||
this.Controls.Add(this.panel2);
|
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
|
||||||
this.Name = "GroupSettingForm";
|
|
||||||
this.Load += new System.EventHandler(this.GroupSettingForm_Load);
|
|
||||||
this.panel2.ResumeLayout(false);
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.Button btnAdd;
|
|
||||||
private System.Windows.Forms.Panel panCon;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,104 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class GroupSettingForm : BaseForm
|
|
||||||
{
|
|
||||||
List<GroupSettingControl> lstControls = new List<GroupSettingControl>();
|
|
||||||
|
|
||||||
public GroupSettingForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void GroupSettingForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (config.groupItem == null)
|
|
||||||
{
|
|
||||||
config.groupItem = new List<GroupItem>();
|
|
||||||
}
|
|
||||||
|
|
||||||
RefreshGroupsView();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 刷新列表
|
|
||||||
/// </summary>
|
|
||||||
private void RefreshGroupsView()
|
|
||||||
{
|
|
||||||
panCon.Controls.Clear();
|
|
||||||
lstControls.Clear();
|
|
||||||
|
|
||||||
for (int k = config.groupItem.Count - 1; k >= 0; k--)
|
|
||||||
{
|
|
||||||
GroupItem item = config.groupItem[k];
|
|
||||||
if (Utils.IsNullOrEmpty(item.remarks))
|
|
||||||
{
|
|
||||||
if (!Utils.IsNullOrEmpty(item.id))
|
|
||||||
{
|
|
||||||
ConfigHandler.RemoveGroupItem(ref config, item.id);
|
|
||||||
}
|
|
||||||
config.groupItem.RemoveAt(k);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (GroupItem item in config.groupItem)
|
|
||||||
{
|
|
||||||
GroupSettingControl control = new GroupSettingControl();
|
|
||||||
control.OnButtonClicked += Control_OnButtonClicked;
|
|
||||||
control.groupItem = item;
|
|
||||||
control.Dock = DockStyle.Top;
|
|
||||||
|
|
||||||
panCon.Controls.Add(control);
|
|
||||||
panCon.Controls.SetChildIndex(control, 0);
|
|
||||||
|
|
||||||
lstControls.Add(control);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Control_OnButtonClicked(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
RefreshGroupsView();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (ConfigHandler.SaveGroupItem(ref config) == 0)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(ResUI.OperationFailed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnAdd_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
AddGroup();
|
|
||||||
|
|
||||||
RefreshGroupsView();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void AddGroup()
|
|
||||||
{
|
|
||||||
GroupItem groupItem = new GroupItem
|
|
||||||
{
|
|
||||||
id = string.Empty,
|
|
||||||
remarks = "Group"
|
|
||||||
};
|
|
||||||
config.groupItem.Add(groupItem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,273 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="btnClose.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>448, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>&Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
|
||||||
<value>btnClose</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panCon.AutoScroll" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="panCon.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="panCon.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="panCon.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>614, 351</value>
|
|
||||||
</data>
|
|
||||||
<data name="panCon.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panCon.Name" xml:space="preserve">
|
|
||||||
<value>panCon</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panCon.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panCon.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panCon.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnAdd.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnAdd.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>47, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnAdd.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnAdd.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnAdd.Text" xml:space="preserve">
|
|
||||||
<value>&Add</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnAdd.Name" xml:space="preserve">
|
|
||||||
<value>btnAdd</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnAdd.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnAdd.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnAdd.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>355, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>&OK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 351</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>614, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>614, 411</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>Group settings</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>GroupSettingForm</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
@@ -1,132 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnAdd.Text" xml:space="preserve">
|
|
||||||
<value>添加(&A)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>服务器分组设置</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
977
v2rayN/v2rayN/Forms/MainForm.Designer.cs
generated
977
v2rayN/v2rayN/Forms/MainForm.Designer.cs
generated
@@ -1,977 +0,0 @@
|
|||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class MainForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 必需的设计器变量。
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清理所有正在使用的资源。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows 窗体设计器生成的代码
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 设计器支持所需的方法 - 不要
|
|
||||||
/// 使用代码编辑器修改此方法的内容。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
this.components = new System.ComponentModel.Container();
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
|
|
||||||
this.scServers = new System.Windows.Forms.SplitContainer();
|
|
||||||
this.lvServers = new v2rayN.Base.ListViewFlickerFree();
|
|
||||||
this.cmsLv = new System.Windows.Forms.ContextMenuStrip(this.components);
|
|
||||||
this.menuAddVmessServer = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuAddVlessServer = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuAddShadowsocksServer = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuAddSocksServer = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuAddTrojanServer = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuAddCustomServer = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuAddServers = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuScanScreen = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.menuRemoveServer = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuRemoveDuplicateServer = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuCopyServer = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuSetDefaultServer = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuServerFilter = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.menuMoveToGroup = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMoveEvent = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMoveTop = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMoveUp = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMoveDown = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMoveBottom = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuSelectAll = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.menuPingServer = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuTcpingServer = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuRealPingServer = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuSpeedServer = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuSortServerResult = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tsbTestMe = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuClearServerStatistics = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.menuExport2ClientConfig = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuExport2ServerConfig = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuExport2ShareUrl = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuExport2SubContent = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tsbServer = new System.Windows.Forms.ToolStripDropDownButton();
|
|
||||||
this.tabGroup = new System.Windows.Forms.TabControl();
|
|
||||||
this.qrCodeControl = new v2rayN.Forms.QRCodeControl();
|
|
||||||
this.scBig = new System.Windows.Forms.SplitContainer();
|
|
||||||
this.gbServers = new System.Windows.Forms.GroupBox();
|
|
||||||
this.mainMsgControl = new v2rayN.Forms.MainMsgControl();
|
|
||||||
this.notifyMain = new System.Windows.Forms.NotifyIcon(this.components);
|
|
||||||
this.cmsMain = new System.Windows.Forms.ContextMenuStrip(this.components);
|
|
||||||
this.menuSysAgentMode = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuKeepClear = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuGlobal = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuKeepNothing = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuRoutings = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuServers = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.menuAddServers2 = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuScanScreen2 = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuUpdateSubscriptions = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuUpdateSubViaProxy = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.menuExit = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
|
||||||
this.tsMain = new System.Windows.Forms.ToolStrip();
|
|
||||||
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.tsbSub = new System.Windows.Forms.ToolStripDropDownButton();
|
|
||||||
this.tsbSubSetting = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tsbSubUpdate = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tsbSubUpdateViaProxy = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tsbQRCodeSwitch = new System.Windows.Forms.ToolStripButton();
|
|
||||||
this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.tsbSetting = new System.Windows.Forms.ToolStripDropDownButton();
|
|
||||||
this.tsbOptionSetting = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tsbRoutingSetting = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tsbGlobalHotkeySetting = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tsbGroupSetting = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.tsbBackupGuiNConfig = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.tsbReload = new System.Windows.Forms.ToolStripButton();
|
|
||||||
this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.tsbCheckUpdate = new System.Windows.Forms.ToolStripDropDownButton();
|
|
||||||
this.tsbCheckUpdateN = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tsbCheckUpdateCore = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tsbCheckUpdateXrayCore = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator16 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.tsbCheckUpdateClashCore = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tsbCheckUpdateClashMetaCore = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator15 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.tsbCheckUpdateGeo = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.tsbHelp = new System.Windows.Forms.ToolStripDropDownButton();
|
|
||||||
this.tsbAbout = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tsbV2rayWebsite = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.tsbLanguageDef = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tsbLanguageZhHans = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tsbPromotion = new System.Windows.Forms.ToolStripButton();
|
|
||||||
this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.tsbClose = new System.Windows.Forms.ToolStripButton();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.scServers)).BeginInit();
|
|
||||||
this.scServers.Panel1.SuspendLayout();
|
|
||||||
this.scServers.Panel2.SuspendLayout();
|
|
||||||
this.scServers.SuspendLayout();
|
|
||||||
this.cmsLv.SuspendLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.scBig)).BeginInit();
|
|
||||||
this.scBig.Panel1.SuspendLayout();
|
|
||||||
this.scBig.Panel2.SuspendLayout();
|
|
||||||
this.scBig.SuspendLayout();
|
|
||||||
this.gbServers.SuspendLayout();
|
|
||||||
this.cmsMain.SuspendLayout();
|
|
||||||
this.tsMain.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// scServers
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.scServers, "scServers");
|
|
||||||
this.scServers.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
|
||||||
this.scServers.Name = "scServers";
|
|
||||||
//
|
|
||||||
// scServers.Panel1
|
|
||||||
//
|
|
||||||
this.scServers.Panel1.Controls.Add(this.lvServers);
|
|
||||||
this.scServers.Panel1.Controls.Add(this.tabGroup);
|
|
||||||
//
|
|
||||||
// scServers.Panel2
|
|
||||||
//
|
|
||||||
this.scServers.Panel2.Controls.Add(this.qrCodeControl);
|
|
||||||
this.scServers.TabStop = false;
|
|
||||||
//
|
|
||||||
// lvServers
|
|
||||||
//
|
|
||||||
this.lvServers.ContextMenuStrip = this.cmsLv;
|
|
||||||
resources.ApplyResources(this.lvServers, "lvServers");
|
|
||||||
this.lvServers.FullRowSelect = true;
|
|
||||||
this.lvServers.GridLines = true;
|
|
||||||
this.lvServers.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
|
||||||
this.lvServers.HideSelection = false;
|
|
||||||
this.lvServers.Items.AddRange(new System.Windows.Forms.ListViewItem[] {
|
|
||||||
((System.Windows.Forms.ListViewItem)(resources.GetObject("lvServers.Items")))});
|
|
||||||
this.lvServers.MultiSelect = false;
|
|
||||||
this.lvServers.Name = "lvServers";
|
|
||||||
this.lvServers.UseCompatibleStateImageBehavior = false;
|
|
||||||
this.lvServers.View = System.Windows.Forms.View.Details;
|
|
||||||
this.lvServers.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.lvServers_ColumnClick);
|
|
||||||
this.lvServers.SelectedIndexChanged += new System.EventHandler(this.lvServers_SelectedIndexChanged);
|
|
||||||
this.lvServers.Click += new System.EventHandler(this.lvServers_Click);
|
|
||||||
this.lvServers.DoubleClick += new System.EventHandler(this.lvServers_DoubleClick);
|
|
||||||
this.lvServers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lvServers_KeyDown);
|
|
||||||
//
|
|
||||||
// cmsLv
|
|
||||||
//
|
|
||||||
this.cmsLv.ImageScalingSize = new System.Drawing.Size(20, 20);
|
|
||||||
this.cmsLv.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.menuAddVmessServer,
|
|
||||||
this.menuAddVlessServer,
|
|
||||||
this.menuAddShadowsocksServer,
|
|
||||||
this.menuAddSocksServer,
|
|
||||||
this.menuAddTrojanServer,
|
|
||||||
this.menuAddCustomServer,
|
|
||||||
this.menuAddServers,
|
|
||||||
this.menuScanScreen,
|
|
||||||
this.toolStripSeparator1,
|
|
||||||
this.menuRemoveServer,
|
|
||||||
this.menuRemoveDuplicateServer,
|
|
||||||
this.menuCopyServer,
|
|
||||||
this.menuSetDefaultServer,
|
|
||||||
this.menuServerFilter,
|
|
||||||
this.toolStripSeparator3,
|
|
||||||
this.menuMoveToGroup,
|
|
||||||
this.menuMoveEvent,
|
|
||||||
this.menuSelectAll,
|
|
||||||
this.toolStripSeparator9,
|
|
||||||
this.menuPingServer,
|
|
||||||
this.menuTcpingServer,
|
|
||||||
this.menuRealPingServer,
|
|
||||||
this.menuSpeedServer,
|
|
||||||
this.menuSortServerResult,
|
|
||||||
this.tsbTestMe,
|
|
||||||
this.menuClearServerStatistics,
|
|
||||||
this.toolStripSeparator6,
|
|
||||||
this.menuExport2ClientConfig,
|
|
||||||
this.menuExport2ServerConfig,
|
|
||||||
this.menuExport2ShareUrl,
|
|
||||||
this.menuExport2SubContent});
|
|
||||||
this.cmsLv.Name = "cmsLv";
|
|
||||||
this.cmsLv.OwnerItem = this.tsbServer;
|
|
||||||
resources.ApplyResources(this.cmsLv, "cmsLv");
|
|
||||||
//
|
|
||||||
// menuAddVmessServer
|
|
||||||
//
|
|
||||||
this.menuAddVmessServer.Name = "menuAddVmessServer";
|
|
||||||
resources.ApplyResources(this.menuAddVmessServer, "menuAddVmessServer");
|
|
||||||
this.menuAddVmessServer.Click += new System.EventHandler(this.menuAddVmessServer_Click);
|
|
||||||
//
|
|
||||||
// menuAddVlessServer
|
|
||||||
//
|
|
||||||
this.menuAddVlessServer.Name = "menuAddVlessServer";
|
|
||||||
resources.ApplyResources(this.menuAddVlessServer, "menuAddVlessServer");
|
|
||||||
this.menuAddVlessServer.Click += new System.EventHandler(this.menuAddVlessServer_Click);
|
|
||||||
//
|
|
||||||
// menuAddShadowsocksServer
|
|
||||||
//
|
|
||||||
this.menuAddShadowsocksServer.Name = "menuAddShadowsocksServer";
|
|
||||||
resources.ApplyResources(this.menuAddShadowsocksServer, "menuAddShadowsocksServer");
|
|
||||||
this.menuAddShadowsocksServer.Click += new System.EventHandler(this.menuAddShadowsocksServer_Click);
|
|
||||||
//
|
|
||||||
// menuAddSocksServer
|
|
||||||
//
|
|
||||||
this.menuAddSocksServer.Name = "menuAddSocksServer";
|
|
||||||
resources.ApplyResources(this.menuAddSocksServer, "menuAddSocksServer");
|
|
||||||
this.menuAddSocksServer.Click += new System.EventHandler(this.menuAddSocksServer_Click);
|
|
||||||
//
|
|
||||||
// menuAddTrojanServer
|
|
||||||
//
|
|
||||||
this.menuAddTrojanServer.Name = "menuAddTrojanServer";
|
|
||||||
resources.ApplyResources(this.menuAddTrojanServer, "menuAddTrojanServer");
|
|
||||||
this.menuAddTrojanServer.Click += new System.EventHandler(this.menuAddTrojanServer_Click);
|
|
||||||
//
|
|
||||||
// menuAddCustomServer
|
|
||||||
//
|
|
||||||
this.menuAddCustomServer.Name = "menuAddCustomServer";
|
|
||||||
resources.ApplyResources(this.menuAddCustomServer, "menuAddCustomServer");
|
|
||||||
this.menuAddCustomServer.Click += new System.EventHandler(this.menuAddCustomServer_Click);
|
|
||||||
//
|
|
||||||
// menuAddServers
|
|
||||||
//
|
|
||||||
this.menuAddServers.Name = "menuAddServers";
|
|
||||||
resources.ApplyResources(this.menuAddServers, "menuAddServers");
|
|
||||||
this.menuAddServers.Click += new System.EventHandler(this.menuAddServers_Click);
|
|
||||||
//
|
|
||||||
// menuScanScreen
|
|
||||||
//
|
|
||||||
this.menuScanScreen.Name = "menuScanScreen";
|
|
||||||
resources.ApplyResources(this.menuScanScreen, "menuScanScreen");
|
|
||||||
this.menuScanScreen.Click += new System.EventHandler(this.menuScanScreen_Click);
|
|
||||||
//
|
|
||||||
// toolStripSeparator1
|
|
||||||
//
|
|
||||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
|
|
||||||
//
|
|
||||||
// menuRemoveServer
|
|
||||||
//
|
|
||||||
this.menuRemoveServer.Name = "menuRemoveServer";
|
|
||||||
resources.ApplyResources(this.menuRemoveServer, "menuRemoveServer");
|
|
||||||
this.menuRemoveServer.Click += new System.EventHandler(this.menuRemoveServer_Click);
|
|
||||||
//
|
|
||||||
// menuRemoveDuplicateServer
|
|
||||||
//
|
|
||||||
this.menuRemoveDuplicateServer.Name = "menuRemoveDuplicateServer";
|
|
||||||
resources.ApplyResources(this.menuRemoveDuplicateServer, "menuRemoveDuplicateServer");
|
|
||||||
this.menuRemoveDuplicateServer.Click += new System.EventHandler(this.menuRemoveDuplicateServer_Click);
|
|
||||||
//
|
|
||||||
// menuCopyServer
|
|
||||||
//
|
|
||||||
this.menuCopyServer.Name = "menuCopyServer";
|
|
||||||
resources.ApplyResources(this.menuCopyServer, "menuCopyServer");
|
|
||||||
this.menuCopyServer.Click += new System.EventHandler(this.menuCopyServer_Click);
|
|
||||||
//
|
|
||||||
// menuSetDefaultServer
|
|
||||||
//
|
|
||||||
this.menuSetDefaultServer.Name = "menuSetDefaultServer";
|
|
||||||
resources.ApplyResources(this.menuSetDefaultServer, "menuSetDefaultServer");
|
|
||||||
this.menuSetDefaultServer.Click += new System.EventHandler(this.menuSetDefaultServer_Click);
|
|
||||||
//
|
|
||||||
// menuServerFilter
|
|
||||||
//
|
|
||||||
this.menuServerFilter.Name = "menuServerFilter";
|
|
||||||
resources.ApplyResources(this.menuServerFilter, "menuServerFilter");
|
|
||||||
this.menuServerFilter.Click += new System.EventHandler(this.menuServerFilter_Click);
|
|
||||||
//
|
|
||||||
// toolStripSeparator3
|
|
||||||
//
|
|
||||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3");
|
|
||||||
//
|
|
||||||
// menuMoveToGroup
|
|
||||||
//
|
|
||||||
this.menuMoveToGroup.Name = "menuMoveToGroup";
|
|
||||||
resources.ApplyResources(this.menuMoveToGroup, "menuMoveToGroup");
|
|
||||||
this.menuMoveToGroup.Click += new System.EventHandler(this.menuMoveToGroup_Click);
|
|
||||||
//
|
|
||||||
// menuMoveEvent
|
|
||||||
//
|
|
||||||
this.menuMoveEvent.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.menuMoveTop,
|
|
||||||
this.menuMoveUp,
|
|
||||||
this.menuMoveDown,
|
|
||||||
this.menuMoveBottom});
|
|
||||||
this.menuMoveEvent.Name = "menuMoveEvent";
|
|
||||||
resources.ApplyResources(this.menuMoveEvent, "menuMoveEvent");
|
|
||||||
//
|
|
||||||
// menuMoveTop
|
|
||||||
//
|
|
||||||
this.menuMoveTop.Name = "menuMoveTop";
|
|
||||||
resources.ApplyResources(this.menuMoveTop, "menuMoveTop");
|
|
||||||
this.menuMoveTop.Click += new System.EventHandler(this.menuMoveTop_Click);
|
|
||||||
//
|
|
||||||
// menuMoveUp
|
|
||||||
//
|
|
||||||
this.menuMoveUp.Name = "menuMoveUp";
|
|
||||||
resources.ApplyResources(this.menuMoveUp, "menuMoveUp");
|
|
||||||
this.menuMoveUp.Click += new System.EventHandler(this.menuMoveUp_Click);
|
|
||||||
//
|
|
||||||
// menuMoveDown
|
|
||||||
//
|
|
||||||
this.menuMoveDown.Name = "menuMoveDown";
|
|
||||||
resources.ApplyResources(this.menuMoveDown, "menuMoveDown");
|
|
||||||
this.menuMoveDown.Click += new System.EventHandler(this.menuMoveDown_Click);
|
|
||||||
//
|
|
||||||
// menuMoveBottom
|
|
||||||
//
|
|
||||||
this.menuMoveBottom.Name = "menuMoveBottom";
|
|
||||||
resources.ApplyResources(this.menuMoveBottom, "menuMoveBottom");
|
|
||||||
this.menuMoveBottom.Click += new System.EventHandler(this.menuMoveBottom_Click);
|
|
||||||
//
|
|
||||||
// menuSelectAll
|
|
||||||
//
|
|
||||||
this.menuSelectAll.Name = "menuSelectAll";
|
|
||||||
resources.ApplyResources(this.menuSelectAll, "menuSelectAll");
|
|
||||||
this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click);
|
|
||||||
//
|
|
||||||
// toolStripSeparator9
|
|
||||||
//
|
|
||||||
this.toolStripSeparator9.Name = "toolStripSeparator9";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator9, "toolStripSeparator9");
|
|
||||||
//
|
|
||||||
// menuPingServer
|
|
||||||
//
|
|
||||||
this.menuPingServer.Name = "menuPingServer";
|
|
||||||
resources.ApplyResources(this.menuPingServer, "menuPingServer");
|
|
||||||
this.menuPingServer.Click += new System.EventHandler(this.menuPingServer_Click);
|
|
||||||
//
|
|
||||||
// menuTcpingServer
|
|
||||||
//
|
|
||||||
this.menuTcpingServer.Name = "menuTcpingServer";
|
|
||||||
resources.ApplyResources(this.menuTcpingServer, "menuTcpingServer");
|
|
||||||
this.menuTcpingServer.Click += new System.EventHandler(this.menuTcpingServer_Click);
|
|
||||||
//
|
|
||||||
// menuRealPingServer
|
|
||||||
//
|
|
||||||
this.menuRealPingServer.Name = "menuRealPingServer";
|
|
||||||
resources.ApplyResources(this.menuRealPingServer, "menuRealPingServer");
|
|
||||||
this.menuRealPingServer.Click += new System.EventHandler(this.menuRealPingServer_Click);
|
|
||||||
//
|
|
||||||
// menuSpeedServer
|
|
||||||
//
|
|
||||||
this.menuSpeedServer.Name = "menuSpeedServer";
|
|
||||||
resources.ApplyResources(this.menuSpeedServer, "menuSpeedServer");
|
|
||||||
this.menuSpeedServer.Click += new System.EventHandler(this.menuSpeedServer_Click);
|
|
||||||
//
|
|
||||||
// menuSortServerResult
|
|
||||||
//
|
|
||||||
this.menuSortServerResult.Name = "menuSortServerResult";
|
|
||||||
resources.ApplyResources(this.menuSortServerResult, "menuSortServerResult");
|
|
||||||
this.menuSortServerResult.Click += new System.EventHandler(this.menuSortServerResult_Click);
|
|
||||||
//
|
|
||||||
// tsbTestMe
|
|
||||||
//
|
|
||||||
this.tsbTestMe.Name = "tsbTestMe";
|
|
||||||
resources.ApplyResources(this.tsbTestMe, "tsbTestMe");
|
|
||||||
this.tsbTestMe.Click += new System.EventHandler(this.tsbTestMe_Click);
|
|
||||||
//
|
|
||||||
// menuClearServerStatistics
|
|
||||||
//
|
|
||||||
this.menuClearServerStatistics.Name = "menuClearServerStatistics";
|
|
||||||
resources.ApplyResources(this.menuClearServerStatistics, "menuClearServerStatistics");
|
|
||||||
this.menuClearServerStatistics.Click += new System.EventHandler(this.menuClearStatistic_Click);
|
|
||||||
//
|
|
||||||
// toolStripSeparator6
|
|
||||||
//
|
|
||||||
this.toolStripSeparator6.Name = "toolStripSeparator6";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator6, "toolStripSeparator6");
|
|
||||||
//
|
|
||||||
// menuExport2ClientConfig
|
|
||||||
//
|
|
||||||
this.menuExport2ClientConfig.Name = "menuExport2ClientConfig";
|
|
||||||
resources.ApplyResources(this.menuExport2ClientConfig, "menuExport2ClientConfig");
|
|
||||||
this.menuExport2ClientConfig.Click += new System.EventHandler(this.menuExport2ClientConfig_Click);
|
|
||||||
//
|
|
||||||
// menuExport2ServerConfig
|
|
||||||
//
|
|
||||||
this.menuExport2ServerConfig.Name = "menuExport2ServerConfig";
|
|
||||||
resources.ApplyResources(this.menuExport2ServerConfig, "menuExport2ServerConfig");
|
|
||||||
this.menuExport2ServerConfig.Click += new System.EventHandler(this.menuExport2ServerConfig_Click);
|
|
||||||
//
|
|
||||||
// menuExport2ShareUrl
|
|
||||||
//
|
|
||||||
this.menuExport2ShareUrl.Name = "menuExport2ShareUrl";
|
|
||||||
resources.ApplyResources(this.menuExport2ShareUrl, "menuExport2ShareUrl");
|
|
||||||
this.menuExport2ShareUrl.Click += new System.EventHandler(this.menuExport2ShareUrl_Click);
|
|
||||||
//
|
|
||||||
// menuExport2SubContent
|
|
||||||
//
|
|
||||||
this.menuExport2SubContent.Name = "menuExport2SubContent";
|
|
||||||
resources.ApplyResources(this.menuExport2SubContent, "menuExport2SubContent");
|
|
||||||
this.menuExport2SubContent.Click += new System.EventHandler(this.menuExport2SubContent_Click);
|
|
||||||
//
|
|
||||||
// tsbServer
|
|
||||||
//
|
|
||||||
this.tsbServer.DropDown = this.cmsLv;
|
|
||||||
this.tsbServer.Image = global::v2rayN.Properties.Resources.server;
|
|
||||||
resources.ApplyResources(this.tsbServer, "tsbServer");
|
|
||||||
this.tsbServer.Name = "tsbServer";
|
|
||||||
//
|
|
||||||
// tabGroup
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.tabGroup, "tabGroup");
|
|
||||||
this.tabGroup.Name = "tabGroup";
|
|
||||||
this.tabGroup.SelectedIndex = 0;
|
|
||||||
this.tabGroup.SelectedIndexChanged += new System.EventHandler(this.tabGroup_SelectedIndexChanged);
|
|
||||||
//
|
|
||||||
// qrCodeControl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.qrCodeControl, "qrCodeControl");
|
|
||||||
this.qrCodeControl.Name = "qrCodeControl";
|
|
||||||
//
|
|
||||||
// scBig
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.scBig, "scBig");
|
|
||||||
this.scBig.Name = "scBig";
|
|
||||||
//
|
|
||||||
// scBig.Panel1
|
|
||||||
//
|
|
||||||
this.scBig.Panel1.Controls.Add(this.gbServers);
|
|
||||||
//
|
|
||||||
// scBig.Panel2
|
|
||||||
//
|
|
||||||
this.scBig.Panel2.Controls.Add(this.mainMsgControl);
|
|
||||||
//
|
|
||||||
// gbServers
|
|
||||||
//
|
|
||||||
this.gbServers.Controls.Add(this.scServers);
|
|
||||||
resources.ApplyResources(this.gbServers, "gbServers");
|
|
||||||
this.gbServers.Name = "gbServers";
|
|
||||||
this.gbServers.TabStop = false;
|
|
||||||
//
|
|
||||||
// mainMsgControl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.mainMsgControl, "mainMsgControl");
|
|
||||||
this.mainMsgControl.Name = "mainMsgControl";
|
|
||||||
//
|
|
||||||
// notifyMain
|
|
||||||
//
|
|
||||||
this.notifyMain.ContextMenuStrip = this.cmsMain;
|
|
||||||
resources.ApplyResources(this.notifyMain, "notifyMain");
|
|
||||||
this.notifyMain.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyMain_MouseClick);
|
|
||||||
//
|
|
||||||
// cmsMain
|
|
||||||
//
|
|
||||||
this.cmsMain.ImageScalingSize = new System.Drawing.Size(20, 20);
|
|
||||||
resources.ApplyResources(this.cmsMain, "cmsMain");
|
|
||||||
this.cmsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.menuSysAgentMode,
|
|
||||||
this.menuRoutings,
|
|
||||||
this.menuServers,
|
|
||||||
this.toolStripSeparator13,
|
|
||||||
this.menuAddServers2,
|
|
||||||
this.menuScanScreen2,
|
|
||||||
this.menuUpdateSubscriptions,
|
|
||||||
this.menuUpdateSubViaProxy,
|
|
||||||
this.toolStripSeparator2,
|
|
||||||
this.menuExit});
|
|
||||||
this.cmsMain.Name = "contextMenuStrip1";
|
|
||||||
this.cmsMain.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;
|
|
||||||
this.cmsMain.ShowCheckMargin = true;
|
|
||||||
this.cmsMain.ShowImageMargin = false;
|
|
||||||
//
|
|
||||||
// menuSysAgentMode
|
|
||||||
//
|
|
||||||
this.menuSysAgentMode.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.menuKeepClear,
|
|
||||||
this.menuGlobal,
|
|
||||||
this.menuKeepNothing});
|
|
||||||
this.menuSysAgentMode.Name = "menuSysAgentMode";
|
|
||||||
resources.ApplyResources(this.menuSysAgentMode, "menuSysAgentMode");
|
|
||||||
//
|
|
||||||
// menuKeepClear
|
|
||||||
//
|
|
||||||
this.menuKeepClear.Name = "menuKeepClear";
|
|
||||||
resources.ApplyResources(this.menuKeepClear, "menuKeepClear");
|
|
||||||
this.menuKeepClear.Click += new System.EventHandler(this.menuKeepClear_Click);
|
|
||||||
//
|
|
||||||
// menuGlobal
|
|
||||||
//
|
|
||||||
this.menuGlobal.Name = "menuGlobal";
|
|
||||||
resources.ApplyResources(this.menuGlobal, "menuGlobal");
|
|
||||||
this.menuGlobal.Click += new System.EventHandler(this.menuGlobal_Click);
|
|
||||||
//
|
|
||||||
// menuKeepNothing
|
|
||||||
//
|
|
||||||
this.menuKeepNothing.Name = "menuKeepNothing";
|
|
||||||
resources.ApplyResources(this.menuKeepNothing, "menuKeepNothing");
|
|
||||||
this.menuKeepNothing.Click += new System.EventHandler(this.menuKeepNothing_Click);
|
|
||||||
//
|
|
||||||
// menuRoutings
|
|
||||||
//
|
|
||||||
this.menuRoutings.Name = "menuRoutings";
|
|
||||||
resources.ApplyResources(this.menuRoutings, "menuRoutings");
|
|
||||||
//
|
|
||||||
// menuServers
|
|
||||||
//
|
|
||||||
this.menuServers.Name = "menuServers";
|
|
||||||
resources.ApplyResources(this.menuServers, "menuServers");
|
|
||||||
//
|
|
||||||
// toolStripSeparator13
|
|
||||||
//
|
|
||||||
this.toolStripSeparator13.Name = "toolStripSeparator13";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator13, "toolStripSeparator13");
|
|
||||||
//
|
|
||||||
// menuAddServers2
|
|
||||||
//
|
|
||||||
this.menuAddServers2.Name = "menuAddServers2";
|
|
||||||
resources.ApplyResources(this.menuAddServers2, "menuAddServers2");
|
|
||||||
this.menuAddServers2.Click += new System.EventHandler(this.menuAddServers_Click);
|
|
||||||
//
|
|
||||||
// menuScanScreen2
|
|
||||||
//
|
|
||||||
this.menuScanScreen2.Name = "menuScanScreen2";
|
|
||||||
resources.ApplyResources(this.menuScanScreen2, "menuScanScreen2");
|
|
||||||
this.menuScanScreen2.Click += new System.EventHandler(this.menuScanScreen_Click);
|
|
||||||
//
|
|
||||||
// menuUpdateSubscriptions
|
|
||||||
//
|
|
||||||
this.menuUpdateSubscriptions.Name = "menuUpdateSubscriptions";
|
|
||||||
resources.ApplyResources(this.menuUpdateSubscriptions, "menuUpdateSubscriptions");
|
|
||||||
this.menuUpdateSubscriptions.Click += new System.EventHandler(this.menuUpdateSubscriptions_Click);
|
|
||||||
//
|
|
||||||
// menuUpdateSubViaProxy
|
|
||||||
//
|
|
||||||
this.menuUpdateSubViaProxy.Name = "menuUpdateSubViaProxy";
|
|
||||||
resources.ApplyResources(this.menuUpdateSubViaProxy, "menuUpdateSubViaProxy");
|
|
||||||
this.menuUpdateSubViaProxy.Click += new System.EventHandler(this.menuUpdateSubViaProxy_Click);
|
|
||||||
//
|
|
||||||
// toolStripSeparator2
|
|
||||||
//
|
|
||||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2");
|
|
||||||
//
|
|
||||||
// menuExit
|
|
||||||
//
|
|
||||||
this.menuExit.Name = "menuExit";
|
|
||||||
resources.ApplyResources(this.menuExit, "menuExit");
|
|
||||||
this.menuExit.Click += new System.EventHandler(this.menuExit_Click);
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel1, "panel1");
|
|
||||||
this.panel1.Name = "panel1";
|
|
||||||
//
|
|
||||||
// tsMain
|
|
||||||
//
|
|
||||||
this.tsMain.ImageScalingSize = new System.Drawing.Size(32, 32);
|
|
||||||
this.tsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.tsbServer,
|
|
||||||
this.toolStripSeparator4,
|
|
||||||
this.tsbSub,
|
|
||||||
this.tsbQRCodeSwitch,
|
|
||||||
this.toolStripSeparator8,
|
|
||||||
this.tsbSetting,
|
|
||||||
this.toolStripSeparator5,
|
|
||||||
this.tsbReload,
|
|
||||||
this.toolStripSeparator7,
|
|
||||||
this.tsbCheckUpdate,
|
|
||||||
this.toolStripSeparator10,
|
|
||||||
this.tsbHelp,
|
|
||||||
this.tsbPromotion,
|
|
||||||
this.toolStripSeparator11,
|
|
||||||
this.tsbClose});
|
|
||||||
resources.ApplyResources(this.tsMain, "tsMain");
|
|
||||||
this.tsMain.Name = "tsMain";
|
|
||||||
this.tsMain.TabStop = true;
|
|
||||||
//
|
|
||||||
// toolStripSeparator4
|
|
||||||
//
|
|
||||||
this.toolStripSeparator4.Name = "toolStripSeparator4";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4");
|
|
||||||
//
|
|
||||||
// tsbSub
|
|
||||||
//
|
|
||||||
this.tsbSub.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.tsbSubSetting,
|
|
||||||
this.tsbSubUpdate,
|
|
||||||
this.tsbSubUpdateViaProxy});
|
|
||||||
this.tsbSub.Image = global::v2rayN.Properties.Resources.sub;
|
|
||||||
resources.ApplyResources(this.tsbSub, "tsbSub");
|
|
||||||
this.tsbSub.Name = "tsbSub";
|
|
||||||
//
|
|
||||||
// tsbSubSetting
|
|
||||||
//
|
|
||||||
this.tsbSubSetting.Name = "tsbSubSetting";
|
|
||||||
resources.ApplyResources(this.tsbSubSetting, "tsbSubSetting");
|
|
||||||
this.tsbSubSetting.Click += new System.EventHandler(this.tsbSubSetting_Click);
|
|
||||||
//
|
|
||||||
// tsbSubUpdate
|
|
||||||
//
|
|
||||||
this.tsbSubUpdate.Name = "tsbSubUpdate";
|
|
||||||
resources.ApplyResources(this.tsbSubUpdate, "tsbSubUpdate");
|
|
||||||
this.tsbSubUpdate.Click += new System.EventHandler(this.tsbSubUpdate_Click);
|
|
||||||
//
|
|
||||||
// tsbSubUpdateViaProxy
|
|
||||||
//
|
|
||||||
this.tsbSubUpdateViaProxy.Name = "tsbSubUpdateViaProxy";
|
|
||||||
resources.ApplyResources(this.tsbSubUpdateViaProxy, "tsbSubUpdateViaProxy");
|
|
||||||
this.tsbSubUpdateViaProxy.Click += new System.EventHandler(this.tsbSubUpdateViaProxy_Click);
|
|
||||||
//
|
|
||||||
// tsbQRCodeSwitch
|
|
||||||
//
|
|
||||||
this.tsbQRCodeSwitch.CheckOnClick = true;
|
|
||||||
this.tsbQRCodeSwitch.ForeColor = System.Drawing.Color.Black;
|
|
||||||
this.tsbQRCodeSwitch.Image = global::v2rayN.Properties.Resources.share;
|
|
||||||
resources.ApplyResources(this.tsbQRCodeSwitch, "tsbQRCodeSwitch");
|
|
||||||
this.tsbQRCodeSwitch.Name = "tsbQRCodeSwitch";
|
|
||||||
this.tsbQRCodeSwitch.CheckedChanged += new System.EventHandler(this.tsbQRCodeSwitch_CheckedChanged);
|
|
||||||
//
|
|
||||||
// toolStripSeparator8
|
|
||||||
//
|
|
||||||
this.toolStripSeparator8.Name = "toolStripSeparator8";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator8, "toolStripSeparator8");
|
|
||||||
//
|
|
||||||
// tsbSetting
|
|
||||||
//
|
|
||||||
this.tsbSetting.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.tsbOptionSetting,
|
|
||||||
this.tsbRoutingSetting,
|
|
||||||
this.tsbGlobalHotkeySetting,
|
|
||||||
this.tsbGroupSetting,
|
|
||||||
this.toolStripSeparator14,
|
|
||||||
this.tsbBackupGuiNConfig});
|
|
||||||
this.tsbSetting.Image = global::v2rayN.Properties.Resources.option;
|
|
||||||
resources.ApplyResources(this.tsbSetting, "tsbSetting");
|
|
||||||
this.tsbSetting.Name = "tsbSetting";
|
|
||||||
//
|
|
||||||
// tsbOptionSetting
|
|
||||||
//
|
|
||||||
this.tsbOptionSetting.Name = "tsbOptionSetting";
|
|
||||||
resources.ApplyResources(this.tsbOptionSetting, "tsbOptionSetting");
|
|
||||||
this.tsbOptionSetting.Click += new System.EventHandler(this.tsbOptionSetting_Click);
|
|
||||||
//
|
|
||||||
// tsbRoutingSetting
|
|
||||||
//
|
|
||||||
this.tsbRoutingSetting.Name = "tsbRoutingSetting";
|
|
||||||
resources.ApplyResources(this.tsbRoutingSetting, "tsbRoutingSetting");
|
|
||||||
this.tsbRoutingSetting.Click += new System.EventHandler(this.tsbRoutingSetting_Click);
|
|
||||||
//
|
|
||||||
// tsbGlobalHotkeySetting
|
|
||||||
//
|
|
||||||
this.tsbGlobalHotkeySetting.Name = "tsbGlobalHotkeySetting";
|
|
||||||
resources.ApplyResources(this.tsbGlobalHotkeySetting, "tsbGlobalHotkeySetting");
|
|
||||||
this.tsbGlobalHotkeySetting.Click += new System.EventHandler(this.tsbGlobalHotkeySetting_Click);
|
|
||||||
//
|
|
||||||
// tsbGroupSetting
|
|
||||||
//
|
|
||||||
this.tsbGroupSetting.Name = "tsbGroupSetting";
|
|
||||||
resources.ApplyResources(this.tsbGroupSetting, "tsbGroupSetting");
|
|
||||||
this.tsbGroupSetting.Click += new System.EventHandler(this.tsbGroupSetting_Click);
|
|
||||||
//
|
|
||||||
// toolStripSeparator14
|
|
||||||
//
|
|
||||||
this.toolStripSeparator14.Name = "toolStripSeparator14";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator14, "toolStripSeparator14");
|
|
||||||
//
|
|
||||||
// tsbBackupGuiNConfig
|
|
||||||
//
|
|
||||||
this.tsbBackupGuiNConfig.Name = "tsbBackupGuiNConfig";
|
|
||||||
resources.ApplyResources(this.tsbBackupGuiNConfig, "tsbBackupGuiNConfig");
|
|
||||||
this.tsbBackupGuiNConfig.Click += new System.EventHandler(this.tsbBackupGuiNConfig_Click);
|
|
||||||
//
|
|
||||||
// toolStripSeparator5
|
|
||||||
//
|
|
||||||
this.toolStripSeparator5.Name = "toolStripSeparator5";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator5, "toolStripSeparator5");
|
|
||||||
//
|
|
||||||
// tsbReload
|
|
||||||
//
|
|
||||||
this.tsbReload.Image = global::v2rayN.Properties.Resources.restart;
|
|
||||||
resources.ApplyResources(this.tsbReload, "tsbReload");
|
|
||||||
this.tsbReload.Name = "tsbReload";
|
|
||||||
this.tsbReload.Click += new System.EventHandler(this.tsbReload_Click);
|
|
||||||
//
|
|
||||||
// toolStripSeparator7
|
|
||||||
//
|
|
||||||
this.toolStripSeparator7.Name = "toolStripSeparator7";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator7, "toolStripSeparator7");
|
|
||||||
//
|
|
||||||
// tsbCheckUpdate
|
|
||||||
//
|
|
||||||
this.tsbCheckUpdate.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.tsbCheckUpdateN,
|
|
||||||
this.tsbCheckUpdateCore,
|
|
||||||
this.tsbCheckUpdateXrayCore,
|
|
||||||
this.toolStripSeparator16,
|
|
||||||
this.tsbCheckUpdateClashCore,
|
|
||||||
this.tsbCheckUpdateClashMetaCore,
|
|
||||||
this.toolStripSeparator15,
|
|
||||||
this.tsbCheckUpdateGeo});
|
|
||||||
this.tsbCheckUpdate.Image = global::v2rayN.Properties.Resources.checkupdate;
|
|
||||||
resources.ApplyResources(this.tsbCheckUpdate, "tsbCheckUpdate");
|
|
||||||
this.tsbCheckUpdate.Name = "tsbCheckUpdate";
|
|
||||||
//
|
|
||||||
// tsbCheckUpdateN
|
|
||||||
//
|
|
||||||
this.tsbCheckUpdateN.Name = "tsbCheckUpdateN";
|
|
||||||
resources.ApplyResources(this.tsbCheckUpdateN, "tsbCheckUpdateN");
|
|
||||||
this.tsbCheckUpdateN.Click += new System.EventHandler(this.tsbCheckUpdateN_Click);
|
|
||||||
//
|
|
||||||
// tsbCheckUpdateCore
|
|
||||||
//
|
|
||||||
this.tsbCheckUpdateCore.Name = "tsbCheckUpdateCore";
|
|
||||||
resources.ApplyResources(this.tsbCheckUpdateCore, "tsbCheckUpdateCore");
|
|
||||||
this.tsbCheckUpdateCore.Click += new System.EventHandler(this.tsbCheckUpdateCore_Click);
|
|
||||||
//
|
|
||||||
// tsbCheckUpdateXrayCore
|
|
||||||
//
|
|
||||||
this.tsbCheckUpdateXrayCore.Name = "tsbCheckUpdateXrayCore";
|
|
||||||
resources.ApplyResources(this.tsbCheckUpdateXrayCore, "tsbCheckUpdateXrayCore");
|
|
||||||
this.tsbCheckUpdateXrayCore.Click += new System.EventHandler(this.tsbCheckUpdateXrayCore_Click);
|
|
||||||
//
|
|
||||||
// toolStripSeparator16
|
|
||||||
//
|
|
||||||
this.toolStripSeparator16.Name = "toolStripSeparator16";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator16, "toolStripSeparator16");
|
|
||||||
//
|
|
||||||
// tsbCheckUpdateClashCore
|
|
||||||
//
|
|
||||||
this.tsbCheckUpdateClashCore.Name = "tsbCheckUpdateClashCore";
|
|
||||||
resources.ApplyResources(this.tsbCheckUpdateClashCore, "tsbCheckUpdateClashCore");
|
|
||||||
this.tsbCheckUpdateClashCore.Click += new System.EventHandler(this.tsbCheckUpdateClashCore_Click);
|
|
||||||
//
|
|
||||||
// tsbCheckUpdateClashMetaCore
|
|
||||||
//
|
|
||||||
this.tsbCheckUpdateClashMetaCore.Name = "tsbCheckUpdateClashMetaCore";
|
|
||||||
resources.ApplyResources(this.tsbCheckUpdateClashMetaCore, "tsbCheckUpdateClashMetaCore");
|
|
||||||
this.tsbCheckUpdateClashMetaCore.Click += new System.EventHandler(this.tsbCheckUpdateClashMetaCore_Click);
|
|
||||||
//
|
|
||||||
// toolStripSeparator15
|
|
||||||
//
|
|
||||||
this.toolStripSeparator15.Name = "toolStripSeparator15";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator15, "toolStripSeparator15");
|
|
||||||
//
|
|
||||||
// tsbCheckUpdateGeo
|
|
||||||
//
|
|
||||||
this.tsbCheckUpdateGeo.Name = "tsbCheckUpdateGeo";
|
|
||||||
resources.ApplyResources(this.tsbCheckUpdateGeo, "tsbCheckUpdateGeo");
|
|
||||||
this.tsbCheckUpdateGeo.Click += new System.EventHandler(this.tsbCheckUpdateGeo_Click);
|
|
||||||
//
|
|
||||||
// toolStripSeparator10
|
|
||||||
//
|
|
||||||
this.toolStripSeparator10.Name = "toolStripSeparator10";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator10, "toolStripSeparator10");
|
|
||||||
//
|
|
||||||
// tsbHelp
|
|
||||||
//
|
|
||||||
this.tsbHelp.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.tsbAbout,
|
|
||||||
this.tsbV2rayWebsite,
|
|
||||||
this.toolStripSeparator12,
|
|
||||||
this.tsbLanguageDef,
|
|
||||||
this.tsbLanguageZhHans});
|
|
||||||
this.tsbHelp.Image = global::v2rayN.Properties.Resources.help;
|
|
||||||
resources.ApplyResources(this.tsbHelp, "tsbHelp");
|
|
||||||
this.tsbHelp.Name = "tsbHelp";
|
|
||||||
//
|
|
||||||
// tsbAbout
|
|
||||||
//
|
|
||||||
this.tsbAbout.Name = "tsbAbout";
|
|
||||||
resources.ApplyResources(this.tsbAbout, "tsbAbout");
|
|
||||||
this.tsbAbout.Click += new System.EventHandler(this.tsbAbout_Click);
|
|
||||||
//
|
|
||||||
// tsbV2rayWebsite
|
|
||||||
//
|
|
||||||
this.tsbV2rayWebsite.Name = "tsbV2rayWebsite";
|
|
||||||
resources.ApplyResources(this.tsbV2rayWebsite, "tsbV2rayWebsite");
|
|
||||||
this.tsbV2rayWebsite.Click += new System.EventHandler(this.tsbV2rayWebsite_Click);
|
|
||||||
//
|
|
||||||
// toolStripSeparator12
|
|
||||||
//
|
|
||||||
this.toolStripSeparator12.Name = "toolStripSeparator12";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator12, "toolStripSeparator12");
|
|
||||||
//
|
|
||||||
// tsbLanguageDef
|
|
||||||
//
|
|
||||||
this.tsbLanguageDef.Name = "tsbLanguageDef";
|
|
||||||
resources.ApplyResources(this.tsbLanguageDef, "tsbLanguageDef");
|
|
||||||
this.tsbLanguageDef.Click += new System.EventHandler(this.tsbLanguageDef_Click);
|
|
||||||
//
|
|
||||||
// tsbLanguageZhHans
|
|
||||||
//
|
|
||||||
this.tsbLanguageZhHans.Name = "tsbLanguageZhHans";
|
|
||||||
resources.ApplyResources(this.tsbLanguageZhHans, "tsbLanguageZhHans");
|
|
||||||
this.tsbLanguageZhHans.Click += new System.EventHandler(this.tsbLanguageZhHans_Click);
|
|
||||||
//
|
|
||||||
// tsbPromotion
|
|
||||||
//
|
|
||||||
this.tsbPromotion.ForeColor = System.Drawing.Color.Black;
|
|
||||||
this.tsbPromotion.Image = global::v2rayN.Properties.Resources.promotion;
|
|
||||||
resources.ApplyResources(this.tsbPromotion, "tsbPromotion");
|
|
||||||
this.tsbPromotion.Name = "tsbPromotion";
|
|
||||||
this.tsbPromotion.Click += new System.EventHandler(this.tsbPromotion_Click);
|
|
||||||
//
|
|
||||||
// toolStripSeparator11
|
|
||||||
//
|
|
||||||
this.toolStripSeparator11.Name = "toolStripSeparator11";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator11, "toolStripSeparator11");
|
|
||||||
//
|
|
||||||
// tsbClose
|
|
||||||
//
|
|
||||||
this.tsbClose.Image = global::v2rayN.Properties.Resources.minimize;
|
|
||||||
resources.ApplyResources(this.tsbClose, "tsbClose");
|
|
||||||
this.tsbClose.Name = "tsbClose";
|
|
||||||
this.tsbClose.Click += new System.EventHandler(this.tsbClose_Click);
|
|
||||||
//
|
|
||||||
// MainForm
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.Controls.Add(this.scBig);
|
|
||||||
this.Controls.Add(this.panel1);
|
|
||||||
this.Controls.Add(this.tsMain);
|
|
||||||
this.MaximizeBox = true;
|
|
||||||
this.MinimizeBox = true;
|
|
||||||
this.Name = "MainForm";
|
|
||||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
|
|
||||||
this.Load += new System.EventHandler(this.MainForm_Load);
|
|
||||||
this.Shown += new System.EventHandler(this.MainForm_Shown);
|
|
||||||
this.VisibleChanged += new System.EventHandler(this.MainForm_VisibleChanged);
|
|
||||||
this.Resize += new System.EventHandler(this.MainForm_Resize);
|
|
||||||
this.scServers.Panel1.ResumeLayout(false);
|
|
||||||
this.scServers.Panel2.ResumeLayout(false);
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.scServers)).EndInit();
|
|
||||||
this.scServers.ResumeLayout(false);
|
|
||||||
this.cmsLv.ResumeLayout(false);
|
|
||||||
this.scBig.Panel1.ResumeLayout(false);
|
|
||||||
this.scBig.Panel2.ResumeLayout(false);
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.scBig)).EndInit();
|
|
||||||
this.scBig.ResumeLayout(false);
|
|
||||||
this.gbServers.ResumeLayout(false);
|
|
||||||
this.cmsMain.ResumeLayout(false);
|
|
||||||
this.tsMain.ResumeLayout(false);
|
|
||||||
this.tsMain.PerformLayout();
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
this.PerformLayout();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.GroupBox gbServers;
|
|
||||||
private v2rayN.Base.ListViewFlickerFree lvServers;
|
|
||||||
private System.Windows.Forms.NotifyIcon notifyMain;
|
|
||||||
private System.Windows.Forms.ContextMenuStrip cmsMain;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuExit;
|
|
||||||
private System.Windows.Forms.Panel panel1;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuServers;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
|
|
||||||
private System.Windows.Forms.ContextMenuStrip cmsLv;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuAddVmessServer;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuRemoveServer;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuSetDefaultServer;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuCopyServer;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuPingServer;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuExport2ClientConfig;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuExport2ServerConfig;
|
|
||||||
private System.Windows.Forms.ToolStrip tsMain;
|
|
||||||
private System.Windows.Forms.ToolStripDropDownButton tsbServer;
|
|
||||||
private System.Windows.Forms.ToolStripButton tsbClose;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator7;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator9;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuSysAgentMode;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuGlobal;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuKeepClear;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuAddCustomServer;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuAddShadowsocksServer;
|
|
||||||
private System.Windows.Forms.SplitContainer scServers;
|
|
||||||
private QRCodeControl qrCodeControl;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator10;
|
|
||||||
private System.Windows.Forms.ToolStripDropDownButton tsbCheckUpdate;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateN;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateCore;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuAddServers;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuExport2ShareUrl;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuSpeedServer;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator11;
|
|
||||||
private System.Windows.Forms.ToolStripDropDownButton tsbHelp;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbAbout;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuAddServers2;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuScanScreen;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuScanScreen2;
|
|
||||||
private System.Windows.Forms.ToolStripDropDownButton tsbSub;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator8;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbSubSetting;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbSubUpdate;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuSelectAll;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuExport2SubContent;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator12;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbLanguageDef;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbLanguageZhHans;
|
|
||||||
private System.Windows.Forms.ToolStripButton tsbPromotion;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuAddSocksServer;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuRemoveDuplicateServer;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuTcpingServer;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuRealPingServer;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuUpdateSubscriptions;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbV2rayWebsite;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuKeepNothing;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbTestMe;
|
|
||||||
private System.Windows.Forms.ToolStripButton tsbReload;
|
|
||||||
private System.Windows.Forms.ToolStripButton tsbQRCodeSwitch;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuAddVlessServer;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuAddTrojanServer;
|
|
||||||
private System.Windows.Forms.ToolStripDropDownButton tsbSetting;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbOptionSetting;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbRoutingSetting;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateXrayCore;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuClearServerStatistics;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuRoutings;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator13;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator14;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbBackupGuiNConfig;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator15;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateGeo;
|
|
||||||
private System.Windows.Forms.SplitContainer scBig;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbSubUpdateViaProxy;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuUpdateSubViaProxy;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbGlobalHotkeySetting;
|
|
||||||
private System.Windows.Forms.TabControl tabGroup;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbGroupSetting;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMoveToGroup;
|
|
||||||
private MainMsgControl mainMsgControl;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMoveEvent;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMoveTop;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMoveUp;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMoveDown;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMoveBottom;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuServerFilter;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateClashCore;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsbCheckUpdateClashMetaCore;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator16;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuSortServerResult;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,573 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="menuAddVmessServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddVmessServer.Text" xml:space="preserve">
|
|
||||||
<value>添加[VMess]服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddVlessServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddVlessServer.Text" xml:space="preserve">
|
|
||||||
<value>添加[VLESS]服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddShadowsocksServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddShadowsocksServer.Text" xml:space="preserve">
|
|
||||||
<value>添加[Shadowsocks]服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddSocksServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddSocksServer.Text" xml:space="preserve">
|
|
||||||
<value>添加[Socks]服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddTrojanServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddTrojanServer.Text" xml:space="preserve">
|
|
||||||
<value>添加[Trojan]服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddCustomServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddCustomServer.Text" xml:space="preserve">
|
|
||||||
<value>添加自定义配置服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddServers.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddServers.Text" xml:space="preserve">
|
|
||||||
<value>从剪贴板导入批量URL (Ctrl+V)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuScanScreen.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuScanScreen.Text" xml:space="preserve">
|
|
||||||
<value>扫描屏幕上的二维码 (Ctrl+S)</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>297, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemoveServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemoveServer.Text" xml:space="preserve">
|
|
||||||
<value>移除所选服务器(多选) (Delete)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemoveDuplicateServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemoveDuplicateServer.Text" xml:space="preserve">
|
|
||||||
<value>移除重复的服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuCopyServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuCopyServer.Text" xml:space="preserve">
|
|
||||||
<value>克隆所选服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSetDefaultServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSetDefaultServer.Text" xml:space="preserve">
|
|
||||||
<value>设为活动服务器 (Enter)</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>297, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Text" xml:space="preserve">
|
|
||||||
<value>上移至顶 (T)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Text" xml:space="preserve">
|
|
||||||
<value>上移 (U)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Text" xml:space="preserve">
|
|
||||||
<value>下移 (D)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveBottom.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveBottom.Text" xml:space="preserve">
|
|
||||||
<value>下移至底 (B)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Text" xml:space="preserve">
|
|
||||||
<value>全选 (Ctrl+A)</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator9.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>297, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuPingServer.Text" xml:space="preserve">
|
|
||||||
<value>测试服务器延迟Ping(多选) (Ctrl+P)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuTcpingServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuTcpingServer.Text" xml:space="preserve">
|
|
||||||
<value>测试服务器延迟Tcping(多选) (Ctrl+O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRealPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRealPingServer.Text" xml:space="preserve">
|
|
||||||
<value>测试服务器真连接延迟(多选) (Ctrl+R)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSpeedServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSpeedServer.Text" xml:space="preserve">
|
|
||||||
<value>测试服务器速度(多选) (Ctrl+T)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbTestMe.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbTestMe.Text" xml:space="preserve">
|
|
||||||
<value>测试当前服务状态</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuClearServerStatistics.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuClearServerStatistics.Text" xml:space="preserve">
|
|
||||||
<value>清除所有服务统计数据</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>297, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExport2ClientConfig.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExport2ClientConfig.Text" xml:space="preserve">
|
|
||||||
<value>导出所选服务器为客户端配置</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExport2ServerConfig.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExport2ServerConfig.Text" xml:space="preserve">
|
|
||||||
<value>导出所选服务器为服务端配置</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExport2ShareUrl.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExport2ShareUrl.Text" xml:space="preserve">
|
|
||||||
<value>批量导出分享URL至剪贴板(多选) (Ctrl+C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExport2SubContent.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExport2SubContent.Text" xml:space="preserve">
|
|
||||||
<value>批量导出订阅内容至剪贴板(多选)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>73, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbServer.Text" xml:space="preserve">
|
|
||||||
<value> 服务器 </value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>301, 622</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvServers.Items" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
|
||||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0
|
|
||||||
ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu
|
|
||||||
PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA
|
|
||||||
BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5
|
|
||||||
bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz
|
|
||||||
dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA
|
|
||||||
CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5
|
|
||||||
bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3
|
|
||||||
////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0
|
|
||||||
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopy.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopyAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxClear.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxAddRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxFilter.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>222, 136</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
|
||||||
<value>网速显示未启用</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeepClear.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>172, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeepClear.Text" xml:space="preserve">
|
|
||||||
<value>清除系统代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuGlobal.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>172, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuGlobal.Text" xml:space="preserve">
|
|
||||||
<value>自动配置系统代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeepNothing.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>172, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeepNothing.Text" xml:space="preserve">
|
|
||||||
<value>不改变系统代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>260, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSysAgentMode.Text" xml:space="preserve">
|
|
||||||
<value>系统代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRoutings.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>260, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRoutings.Text" xml:space="preserve">
|
|
||||||
<value>路由</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServers.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>260, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServers.Text" xml:space="preserve">
|
|
||||||
<value>服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServers2.ToolTipText" xml:space="preserve">
|
|
||||||
<value>服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator13.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>257, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddServers2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>260, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddServers2.Text" xml:space="preserve">
|
|
||||||
<value>从剪贴板导入批量URL</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuScanScreen2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>260, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuScanScreen2.Text" xml:space="preserve">
|
|
||||||
<value>扫描屏幕上的二维码</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuUpdateSubscriptions.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>260, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuUpdateSubscriptions.Text" xml:space="preserve">
|
|
||||||
<value>更新订阅(不通过代理)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuUpdateSubViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>260, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuUpdateSubViaProxy.Text" xml:space="preserve">
|
|
||||||
<value>更新订阅(通过代理)</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>257, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExit.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>260, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExit.Text" xml:space="preserve">
|
|
||||||
<value>退出</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>261, 221</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>180, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubSetting.Text" xml:space="preserve">
|
|
||||||
<value>订阅设置</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>180, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubUpdate.Text" xml:space="preserve">
|
|
||||||
<value>更新订阅(不通过代理)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubUpdateViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>180, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubUpdateViaProxy.Text" xml:space="preserve">
|
|
||||||
<value>更新订阅(通过代理)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSub.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>61, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSub.Text" xml:space="preserve">
|
|
||||||
<value> 订阅 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbQRCodeSwitch.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>52, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbQRCodeSwitch.Text" xml:space="preserve">
|
|
||||||
<value> 分享 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbOptionSetting.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbOptionSetting.Text" xml:space="preserve">
|
|
||||||
<value>参数设置</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbRoutingSetting.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbRoutingSetting.Text" xml:space="preserve">
|
|
||||||
<value>路由设置</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbGlobalHotkeySetting.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbGlobalHotkeySetting.Text" xml:space="preserve">
|
|
||||||
<value>全局热键设置</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbGroupSetting.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbGroupSetting.Text" xml:space="preserve">
|
|
||||||
<value>服务器分组设置</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator14.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>186, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbBackupGuiNConfig.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbBackupGuiNConfig.Text" xml:space="preserve">
|
|
||||||
<value>备份v2rayN配置文件</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSetting.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>61, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSetting.Text" xml:space="preserve">
|
|
||||||
<value> 设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbReload.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>76, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbReload.Text" xml:space="preserve">
|
|
||||||
<value> 重启服务 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateN.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>168, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateN.Text" xml:space="preserve">
|
|
||||||
<value>v2rayN</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>168, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateCore.Text" xml:space="preserve">
|
|
||||||
<value>v2fly-Core</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateXrayCore.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>168, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateXrayCore.Text" xml:space="preserve">
|
|
||||||
<value>Xray-Core</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator15.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>165, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateGeoSite.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>168, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateGeoIP.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>168, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>85, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdate.Text" xml:space="preserve">
|
|
||||||
<value> 检查更新 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbAbout.Text" xml:space="preserve">
|
|
||||||
<value>v2rayN 项目</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbV2rayWebsite.Text" xml:space="preserve">
|
|
||||||
<value>V2Ray 官网</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbHelp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>69, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbHelp.Text" xml:space="preserve">
|
|
||||||
<value> 帮助 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbPromotion.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>68, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbPromotion.Text" xml:space="preserve">
|
|
||||||
<value> 推广 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>76, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbClose.Text" xml:space="preserve">
|
|
||||||
<value> 关闭窗口 </value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveToGroup.Text" xml:space="preserve">
|
|
||||||
<value>移至分组</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveEvent.Text" xml:space="preserve">
|
|
||||||
<value>上下移至</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServerFilter.Text" xml:space="preserve">
|
|
||||||
<value>设置服务器过滤器 (Ctrl+F)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateClashCore.Text" xml:space="preserve">
|
|
||||||
<value>Update clash Core</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateClashMetaCore.Text" xml:space="preserve">
|
|
||||||
<value>Update Clash.Meta Core</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSortServerResult.Text" xml:space="preserve">
|
|
||||||
<value>按测试结果排序 (Ctrl+E)</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
204
v2rayN/v2rayN/Forms/MainMsgControl.Designer.cs
generated
204
v2rayN/v2rayN/Forms/MainMsgControl.Designer.cs
generated
@@ -1,204 +0,0 @@
|
|||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class MainMsgControl
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 必需的设计器变量。
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清理所有正在使用的资源。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 组件设计器生成的代码
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 设计器支持所需的方法 - 不要修改
|
|
||||||
/// 使用代码编辑器修改此方法的内容。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
this.components = new System.ComponentModel.Container();
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainMsgControl));
|
|
||||||
this.txtMsgBox = new System.Windows.Forms.TextBox();
|
|
||||||
this.cmsMsgBox = new System.Windows.Forms.ContextMenuStrip(this.components);
|
|
||||||
this.menuMsgBoxSelectAll = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxCopy = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxCopyAll = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxClear = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxAddRoutingRule = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxFilter = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.gbMsgTitle = new System.Windows.Forms.GroupBox();
|
|
||||||
this.ssMain = new System.Windows.Forms.StatusStrip();
|
|
||||||
this.toolSslInboundInfo = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslBlank1 = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslRoutingRule = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslBlank2 = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslServerSpeed = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslBlank4 = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.cmsMsgBox.SuspendLayout();
|
|
||||||
this.gbMsgTitle.SuspendLayout();
|
|
||||||
this.ssMain.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// txtMsgBox
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtMsgBox, "txtMsgBox");
|
|
||||||
this.txtMsgBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(49)))), ((int)(((byte)(52)))));
|
|
||||||
this.txtMsgBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
|
||||||
this.txtMsgBox.ContextMenuStrip = this.cmsMsgBox;
|
|
||||||
this.txtMsgBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(226)))), ((int)(((byte)(228)))));
|
|
||||||
this.txtMsgBox.Name = "txtMsgBox";
|
|
||||||
this.txtMsgBox.ReadOnly = true;
|
|
||||||
this.txtMsgBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtMsgBox_KeyDown);
|
|
||||||
//
|
|
||||||
// cmsMsgBox
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmsMsgBox, "cmsMsgBox");
|
|
||||||
this.cmsMsgBox.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.menuMsgBoxSelectAll,
|
|
||||||
this.menuMsgBoxCopy,
|
|
||||||
this.menuMsgBoxCopyAll,
|
|
||||||
this.menuMsgBoxClear,
|
|
||||||
this.menuMsgBoxAddRoutingRule,
|
|
||||||
this.menuMsgBoxFilter});
|
|
||||||
this.cmsMsgBox.Name = "cmsMsgBox";
|
|
||||||
//
|
|
||||||
// menuMsgBoxSelectAll
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMsgBoxSelectAll, "menuMsgBoxSelectAll");
|
|
||||||
this.menuMsgBoxSelectAll.Name = "menuMsgBoxSelectAll";
|
|
||||||
this.menuMsgBoxSelectAll.Click += new System.EventHandler(this.menuMsgBoxSelectAll_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxCopy
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMsgBoxCopy, "menuMsgBoxCopy");
|
|
||||||
this.menuMsgBoxCopy.Name = "menuMsgBoxCopy";
|
|
||||||
this.menuMsgBoxCopy.Click += new System.EventHandler(this.menuMsgBoxCopy_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxCopyAll
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMsgBoxCopyAll, "menuMsgBoxCopyAll");
|
|
||||||
this.menuMsgBoxCopyAll.Name = "menuMsgBoxCopyAll";
|
|
||||||
this.menuMsgBoxCopyAll.Click += new System.EventHandler(this.menuMsgBoxCopyAll_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxClear
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMsgBoxClear, "menuMsgBoxClear");
|
|
||||||
this.menuMsgBoxClear.Name = "menuMsgBoxClear";
|
|
||||||
this.menuMsgBoxClear.Click += new System.EventHandler(this.menuMsgBoxClear_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxAddRoutingRule
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMsgBoxAddRoutingRule, "menuMsgBoxAddRoutingRule");
|
|
||||||
this.menuMsgBoxAddRoutingRule.Name = "menuMsgBoxAddRoutingRule";
|
|
||||||
this.menuMsgBoxAddRoutingRule.Click += new System.EventHandler(this.menuMsgBoxAddRoutingRule_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxFilter
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMsgBoxFilter, "menuMsgBoxFilter");
|
|
||||||
this.menuMsgBoxFilter.Name = "menuMsgBoxFilter";
|
|
||||||
this.menuMsgBoxFilter.Click += new System.EventHandler(this.menuMsgBoxFilter_Click);
|
|
||||||
//
|
|
||||||
// gbMsgTitle
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.gbMsgTitle, "gbMsgTitle");
|
|
||||||
this.gbMsgTitle.Controls.Add(this.txtMsgBox);
|
|
||||||
this.gbMsgTitle.Controls.Add(this.ssMain);
|
|
||||||
this.gbMsgTitle.Name = "gbMsgTitle";
|
|
||||||
this.gbMsgTitle.TabStop = false;
|
|
||||||
//
|
|
||||||
// ssMain
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.ssMain, "ssMain");
|
|
||||||
this.ssMain.ImageScalingSize = new System.Drawing.Size(20, 20);
|
|
||||||
this.ssMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.toolSslInboundInfo,
|
|
||||||
this.toolSslBlank1,
|
|
||||||
this.toolSslRoutingRule,
|
|
||||||
this.toolSslBlank2,
|
|
||||||
this.toolSslServerSpeed,
|
|
||||||
this.toolSslBlank4});
|
|
||||||
this.ssMain.Name = "ssMain";
|
|
||||||
this.ssMain.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.ssMain_ItemClicked);
|
|
||||||
//
|
|
||||||
// toolSslInboundInfo
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolSslInboundInfo, "toolSslInboundInfo");
|
|
||||||
this.toolSslInboundInfo.Name = "toolSslInboundInfo";
|
|
||||||
//
|
|
||||||
// toolSslBlank1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolSslBlank1, "toolSslBlank1");
|
|
||||||
this.toolSslBlank1.Name = "toolSslBlank1";
|
|
||||||
this.toolSslBlank1.Spring = true;
|
|
||||||
//
|
|
||||||
// toolSslRoutingRule
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolSslRoutingRule, "toolSslRoutingRule");
|
|
||||||
this.toolSslRoutingRule.Name = "toolSslRoutingRule";
|
|
||||||
//
|
|
||||||
// toolSslBlank2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolSslBlank2, "toolSslBlank2");
|
|
||||||
this.toolSslBlank2.Name = "toolSslBlank2";
|
|
||||||
this.toolSslBlank2.Spring = true;
|
|
||||||
//
|
|
||||||
// toolSslServerSpeed
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolSslServerSpeed, "toolSslServerSpeed");
|
|
||||||
this.toolSslServerSpeed.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
|
||||||
this.toolSslServerSpeed.Name = "toolSslServerSpeed";
|
|
||||||
//
|
|
||||||
// toolSslBlank4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolSslBlank4, "toolSslBlank4");
|
|
||||||
this.toolSslBlank4.Name = "toolSslBlank4";
|
|
||||||
//
|
|
||||||
// MainMsgControl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.Controls.Add(this.gbMsgTitle);
|
|
||||||
this.Name = "MainMsgControl";
|
|
||||||
this.Load += new System.EventHandler(this.MainMsgControl_Load);
|
|
||||||
this.cmsMsgBox.ResumeLayout(false);
|
|
||||||
this.gbMsgTitle.ResumeLayout(false);
|
|
||||||
this.gbMsgTitle.PerformLayout();
|
|
||||||
this.ssMain.ResumeLayout(false);
|
|
||||||
this.ssMain.PerformLayout();
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.TextBox txtMsgBox;
|
|
||||||
private System.Windows.Forms.ContextMenuStrip cmsMsgBox;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxSelectAll;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxCopy;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxCopyAll;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxClear;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxAddRoutingRule;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxFilter;
|
|
||||||
private System.Windows.Forms.GroupBox gbMsgTitle;
|
|
||||||
private System.Windows.Forms.StatusStrip ssMain;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslInboundInfo;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank1;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslRoutingRule;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank2;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslServerSpeed;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,205 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Data;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Base;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class MainMsgControl : UserControl
|
|
||||||
{
|
|
||||||
private string _msgFilter = string.Empty;
|
|
||||||
delegate void AppendTextDelegate(string text);
|
|
||||||
|
|
||||||
public MainMsgControl()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void MainMsgControl_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 提示信息
|
|
||||||
|
|
||||||
public void AppendText(string text)
|
|
||||||
{
|
|
||||||
if (txtMsgBox.InvokeRequired)
|
|
||||||
{
|
|
||||||
Invoke(new AppendTextDelegate(AppendText), text);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!Utils.IsNullOrEmpty(_msgFilter))
|
|
||||||
{
|
|
||||||
if (!Regex.IsMatch(text, _msgFilter))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//this.txtMsgBox.AppendText(text);
|
|
||||||
ShowMsg(text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 提示信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="msg"></param>
|
|
||||||
private void ShowMsg(string msg)
|
|
||||||
{
|
|
||||||
if (txtMsgBox.Lines.Length > 999)
|
|
||||||
{
|
|
||||||
ClearMsg();
|
|
||||||
}
|
|
||||||
txtMsgBox.AppendText(msg);
|
|
||||||
if (!msg.EndsWith(Environment.NewLine))
|
|
||||||
{
|
|
||||||
txtMsgBox.AppendText(Environment.NewLine);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清除信息
|
|
||||||
/// </summary>
|
|
||||||
public void ClearMsg()
|
|
||||||
{
|
|
||||||
txtMsgBox.Invoke((Action)delegate
|
|
||||||
{
|
|
||||||
txtMsgBox.Clear();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DisplayToolStatus(Config config)
|
|
||||||
{
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
sb.Append($"{ResUI.LabLocal}:");
|
|
||||||
sb.Append($"[{Global.InboundSocks}:{config.GetLocalPort(Global.InboundSocks)}]");
|
|
||||||
sb.Append(" | ");
|
|
||||||
if (config.sysProxyType == ESysProxyType.ForcedChange)
|
|
||||||
{
|
|
||||||
sb.Append($"[{Global.InboundHttp}({ResUI.SystemProxy}):{config.GetLocalPort(Global.InboundHttp)}]");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sb.Append($"[{Global.InboundHttp}:{config.GetLocalPort(Global.InboundHttp)}]");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config.inbound[0].allowLANConn)
|
|
||||||
{
|
|
||||||
sb.Append($" {ResUI.LabLAN}:");
|
|
||||||
sb.Append($"[{Global.InboundSocks}:{config.GetLocalPort(Global.InboundSocks2)}]");
|
|
||||||
sb.Append(" | ");
|
|
||||||
sb.Append($"[{Global.InboundHttp}:{config.GetLocalPort(Global.InboundHttp2)}]");
|
|
||||||
}
|
|
||||||
|
|
||||||
SetToolSslInfo("inbound", sb.ToString());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetToolSslInfo(string type, string value)
|
|
||||||
{
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case "speed":
|
|
||||||
toolSslServerSpeed.Text = value;
|
|
||||||
break;
|
|
||||||
case "inbound":
|
|
||||||
toolSslInboundInfo.Text = value;
|
|
||||||
break;
|
|
||||||
case "routing":
|
|
||||||
toolSslRoutingRule.Text = value;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ScrollToCaret()
|
|
||||||
{
|
|
||||||
txtMsgBox.ScrollToCaret();
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
#region MsgBoxMenu
|
|
||||||
private void menuMsgBoxSelectAll_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
txtMsgBox.Focus();
|
|
||||||
txtMsgBox.SelectAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuMsgBoxCopy_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
var data = txtMsgBox.SelectedText.TrimEx();
|
|
||||||
Utils.SetClipboardData(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuMsgBoxCopyAll_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
var data = txtMsgBox.Text;
|
|
||||||
Utils.SetClipboardData(data);
|
|
||||||
}
|
|
||||||
private void menuMsgBoxClear_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
txtMsgBox.Clear();
|
|
||||||
}
|
|
||||||
private void menuMsgBoxAddRoutingRule_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
menuMsgBoxCopy_Click(null, null);
|
|
||||||
var fm = new RoutingSettingForm();
|
|
||||||
fm.ShowDialog();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void txtMsgBox_KeyDown(object sender, KeyEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.Control)
|
|
||||||
{
|
|
||||||
switch (e.KeyCode)
|
|
||||||
{
|
|
||||||
case Keys.A:
|
|
||||||
menuMsgBoxSelectAll_Click(null, null);
|
|
||||||
break;
|
|
||||||
case Keys.C:
|
|
||||||
menuMsgBoxCopy_Click(null, null);
|
|
||||||
break;
|
|
||||||
case Keys.V:
|
|
||||||
menuMsgBoxAddRoutingRule_Click(null, null);
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
private void menuMsgBoxFilter_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
var fm = new MsgFilterSetForm();
|
|
||||||
fm.MsgFilter = _msgFilter;
|
|
||||||
fm.ShowDefFilter = true;
|
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
_msgFilter = fm.MsgFilter;
|
|
||||||
gbMsgTitle.Text = string.Format(ResUI.MsgInformationTitle, _msgFilter);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ssMain_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
|
|
||||||
{
|
|
||||||
if (!Utils.IsNullOrEmpty(e.ClickedItem.Text))
|
|
||||||
{
|
|
||||||
Utils.SetClipboardData(e.ClickedItem.Text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,384 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name=">>toolSslRoutingRule.Name" xml:space="preserve">
|
|
||||||
<value>toolSslRoutingRule</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>gbMsgTitle.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxSelectAll.Text" xml:space="preserve">
|
|
||||||
<value>Select All (Ctrl+A)</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>ssMain.Name" xml:space="preserve">
|
|
||||||
<value>ssMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxSelectAll.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxSelectAll</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="toolSslServerSpeed.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>False</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxClear.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslServerSpeed.Name" xml:space="preserve">
|
|
||||||
<value>toolSslServerSpeed</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="menuMsgBoxSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxCopyAll.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxCopyAll</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.MaxLength" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>gbMsgTitle.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="ssMain.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>3, 221</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxAddRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxFilter.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslInboundInfo.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>0, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslInboundInfo.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>80, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslInboundInfo.Name" xml:space="preserve">
|
|
||||||
<value>toolSslInboundInfo</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgBox.Name" xml:space="preserve">
|
|
||||||
<value>txtMsgBox</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>0, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxFilter.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank1.Font" type="System.Drawing.Font, System.Drawing">
|
|
||||||
<value>微软雅黑, 8pt</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopy.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>ssMain.Parent" xml:space="preserve">
|
|
||||||
<value>gbMsgTitle</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopyAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslRoutingRule.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxAddRoutingRule.Text" xml:space="preserve">
|
|
||||||
<value>Add Routing Rule (Ctrl+V)</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
|
|
||||||
<value>MiddleRight</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.Font" type="System.Drawing.Font, System.Drawing">
|
|
||||||
<value>微软雅黑, 8pt</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbMsgTitle.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>696, 246</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslInboundInfo.Text" xml:space="preserve">
|
|
||||||
<value>InboundInfo</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxAddRoutingRule.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxClear.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxClear</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbMsgTitle.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxCopy.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>3, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank4.Name" xml:space="preserve">
|
|
||||||
<value>toolSslBlank4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgBox.Parent" xml:space="preserve">
|
|
||||||
<value>gbMsgTitle</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbMsgTitle.Text" xml:space="preserve">
|
|
||||||
<value>Informations</value>
|
|
||||||
</data>
|
|
||||||
<data name="ssMain.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>172, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxClear.Text" xml:space="preserve">
|
|
||||||
<value>Clear All</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="txtMsgBox.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
|
|
||||||
<value>Vertical</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>gbMsgTitle.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="ssMain.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>690, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmsMsgBox.Name" xml:space="preserve">
|
|
||||||
<value>cmsMsgBox</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmsMsgBox.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>ssMain.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbMsgTitle.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>690, 204</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxClear.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>172, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank4.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>MainMsgControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbMsgTitle.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>696, 246</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank1.Name" xml:space="preserve">
|
|
||||||
<value>toolSslBlank1</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.RightToLeft" type="System.Windows.Forms.RightToLeft, System.Windows.Forms">
|
|
||||||
<value>No</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopyAll.Text" xml:space="preserve">
|
|
||||||
<value>Copy All</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>250, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="ssMain.Text" xml:space="preserve">
|
|
||||||
<value>statusStrip1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxAddRoutingRule.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxAddRoutingRule</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank2.Name" xml:space="preserve">
|
|
||||||
<value>toolSslBlank2</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxFilter.Text" xml:space="preserve">
|
|
||||||
<value>Set message filters</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
|
||||||
<value>SPEED Disabled</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgBox.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>gbMsgTitle.Name" xml:space="preserve">
|
|
||||||
<value>gbMsgTitle</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxFilter.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxFilter</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>ssMain.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxSelectAll.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxCopy.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxCopy</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgBox.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslServerSpeed.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopy.Text" xml:space="preserve">
|
|
||||||
<value>Copy (Ctrl+C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>228, 136</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxCopyAll.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="ssMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>131, 18</value>
|
|
||||||
</metadata>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<metadata name="cmsMsgBox.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>17, 17</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
|
||||||
@@ -1,172 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="menuMsgBoxSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxSelectAll.Text" xml:space="preserve">
|
|
||||||
<value>全选 (Ctrl+A)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopy.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopy.Text" xml:space="preserve">
|
|
||||||
<value>复制 (Ctrl+C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopyAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopyAll.Text" xml:space="preserve">
|
|
||||||
<value>复制所有</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxClear.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxClear.Text" xml:space="preserve">
|
|
||||||
<value>清除所有</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxAddRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxAddRoutingRule.Text" xml:space="preserve">
|
|
||||||
<value>快速添加路由规则 (Ctrl+V)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxFilter.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxFilter.Text" xml:space="preserve">
|
|
||||||
<value>设置信息过滤器</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>222, 136</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>157, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>157, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbMsgTitle.Text" xml:space="preserve">
|
|
||||||
<value>信息</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
|
||||||
<value>网速显示未启用</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
129
v2rayN/v2rayN/Forms/MsgFilterSetForm.Designer.cs
generated
129
v2rayN/v2rayN/Forms/MsgFilterSetForm.Designer.cs
generated
@@ -1,129 +0,0 @@
|
|||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class MsgFilterSetForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MsgFilterSetForm));
|
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.btnFilderProxy = new System.Windows.Forms.Button();
|
|
||||||
this.btnFilterDirect = new System.Windows.Forms.Button();
|
|
||||||
this.txtMsgFilter = new System.Windows.Forms.TextBox();
|
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.btnClear = new System.Windows.Forms.Button();
|
|
||||||
this.groupBox1.SuspendLayout();
|
|
||||||
this.panel2.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// groupBox1
|
|
||||||
//
|
|
||||||
this.groupBox1.Controls.Add(this.btnFilderProxy);
|
|
||||||
this.groupBox1.Controls.Add(this.btnFilterDirect);
|
|
||||||
this.groupBox1.Controls.Add(this.txtMsgFilter);
|
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
|
||||||
this.groupBox1.TabStop = false;
|
|
||||||
//
|
|
||||||
// btnFilderProxy
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnFilderProxy, "btnFilderProxy");
|
|
||||||
this.btnFilderProxy.Name = "btnFilderProxy";
|
|
||||||
this.btnFilderProxy.UseVisualStyleBackColor = true;
|
|
||||||
this.btnFilderProxy.Click += new System.EventHandler(this.btnFilderProxy_Click);
|
|
||||||
//
|
|
||||||
// btnFilterDirect
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnFilterDirect, "btnFilterDirect");
|
|
||||||
this.btnFilterDirect.Name = "btnFilterDirect";
|
|
||||||
this.btnFilterDirect.UseVisualStyleBackColor = true;
|
|
||||||
this.btnFilterDirect.Click += new System.EventHandler(this.btnFilterDirect_Click);
|
|
||||||
//
|
|
||||||
// txtMsgFilter
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtMsgFilter, "txtMsgFilter");
|
|
||||||
this.txtMsgFilter.Name = "txtMsgFilter";
|
|
||||||
//
|
|
||||||
// panel2
|
|
||||||
//
|
|
||||||
this.panel2.Controls.Add(this.btnClear);
|
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Name = "panel2";
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// btnClear
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnClear, "btnClear");
|
|
||||||
this.btnClear.Name = "btnClear";
|
|
||||||
this.btnClear.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClear.Click += new System.EventHandler(this.btnClear_Click);
|
|
||||||
//
|
|
||||||
// MsgFilterSetForm
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.groupBox1);
|
|
||||||
this.Controls.Add(this.panel2);
|
|
||||||
this.Name = "MsgFilterSetForm";
|
|
||||||
this.Load += new System.EventHandler(this.MsgFilterSetForm_Load);
|
|
||||||
this.groupBox1.ResumeLayout(false);
|
|
||||||
this.groupBox1.PerformLayout();
|
|
||||||
this.panel2.ResumeLayout(false);
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.GroupBox groupBox1;
|
|
||||||
private System.Windows.Forms.TextBox txtMsgFilter;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.Button btnFilderProxy;
|
|
||||||
private System.Windows.Forms.Button btnFilterDirect;
|
|
||||||
private System.Windows.Forms.Button btnClear;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Data;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class MsgFilterSetForm : BaseForm
|
|
||||||
{
|
|
||||||
public string MsgFilter { get; set; }
|
|
||||||
public bool ShowDefFilter { get; set; }
|
|
||||||
|
|
||||||
public MsgFilterSetForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void MsgFilterSetForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
txtMsgFilter.Text = MsgFilter;
|
|
||||||
btnFilderProxy.Visible =
|
|
||||||
btnFilterDirect.Visible = ShowDefFilter;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
MsgFilter = txtMsgFilter.Text;
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnFilderProxy_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
txtMsgFilter.Text = "^(?!.*proxy).*$";
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnFilterDirect_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
txtMsgFilter.Text = "^(?!.*direct).*$";
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClear_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
MsgFilter = string.Empty;
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,381 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name=">>btnFilderProxy.Name" xml:space="preserve">
|
|
||||||
<value>btnFilderProxy</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilderProxy.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilderProxy.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilderProxy.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilterDirect.Name" xml:space="preserve">
|
|
||||||
<value>btnFilterDirect</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilterDirect.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilterDirect.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilterDirect.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.Name" xml:space="preserve">
|
|
||||||
<value>txtMsgFilter</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>490, 76</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>Filter</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Name" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilderProxy.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>157, 47</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilderProxy.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>95, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilderProxy.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>13</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilderProxy.Text" xml:space="preserve">
|
|
||||||
<value>Filter Proxy</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilderProxy.Name" xml:space="preserve">
|
|
||||||
<value>btnFilderProxy</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilderProxy.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilderProxy.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilderProxy.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilterDirect.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilterDirect.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>41, 47</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilterDirect.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>95, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilterDirect.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>12</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilterDirect.Text" xml:space="preserve">
|
|
||||||
<value>Filter Direct</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilterDirect.Name" xml:space="preserve">
|
|
||||||
<value>btnFilterDirect</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilterDirect.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilterDirect.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilterDirect.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgFilter.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>41, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgFilter.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>409, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgFilter.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>11</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.Name" xml:space="preserve">
|
|
||||||
<value>txtMsgFilter</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClear.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClear.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>211, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClear.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClear.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>14</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClear.Text" xml:space="preserve">
|
|
||||||
<value>Clear</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClear.Name" xml:space="preserve">
|
|
||||||
<value>btnClear</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClear.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClear.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClear.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>396, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>&Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
|
||||||
<value>btnClose</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>303, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>&OK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 76</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>490, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>9</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>490, 136</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>MsgFilterSetForm</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>MsgFilterSetForm</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
@@ -1,141 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>过滤器</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>设置过滤器</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilderProxy.Text" xml:space="preserve">
|
|
||||||
<value>过滤Proxy</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilterDirect.Text" xml:space="preserve">
|
|
||||||
<value>过滤Direct</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClear.Text" xml:space="preserve">
|
|
||||||
<value>清空</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
750
v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
generated
750
v2rayN/v2rayN/Forms/OptionSettingForm.Designer.cs
generated
@@ -1,750 +0,0 @@
|
|||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class OptionSettingForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OptionSettingForm));
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
|
||||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.label16 = new System.Windows.Forms.Label();
|
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
|
||||||
this.txtpass = new System.Windows.Forms.TextBox();
|
|
||||||
this.txtuser = new System.Windows.Forms.TextBox();
|
|
||||||
this.chkdefAllowInsecure = new System.Windows.Forms.CheckBox();
|
|
||||||
this.chkAllowLANConn = new System.Windows.Forms.CheckBox();
|
|
||||||
this.chksniffingEnabled = new System.Windows.Forms.CheckBox();
|
|
||||||
this.chkmuxEnabled = new System.Windows.Forms.CheckBox();
|
|
||||||
this.cmbprotocol = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
|
||||||
this.chkudpEnabled = new System.Windows.Forms.CheckBox();
|
|
||||||
this.chklogEnabled = new System.Windows.Forms.CheckBox();
|
|
||||||
this.cmbloglevel = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label5 = new System.Windows.Forms.Label();
|
|
||||||
this.txtlocalPort = new System.Windows.Forms.TextBox();
|
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
|
||||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
|
||||||
this.linkDnsObjectDoc = new System.Windows.Forms.LinkLabel();
|
|
||||||
this.txtremoteDNS = new System.Windows.Forms.TextBox();
|
|
||||||
this.label14 = new System.Windows.Forms.Label();
|
|
||||||
this.tabPage6 = new System.Windows.Forms.TabPage();
|
|
||||||
this.chkKcpcongestion = new System.Windows.Forms.CheckBox();
|
|
||||||
this.txtKcpwriteBufferSize = new System.Windows.Forms.TextBox();
|
|
||||||
this.label10 = new System.Windows.Forms.Label();
|
|
||||||
this.txtKcpreadBufferSize = new System.Windows.Forms.TextBox();
|
|
||||||
this.label11 = new System.Windows.Forms.Label();
|
|
||||||
this.txtKcpdownlinkCapacity = new System.Windows.Forms.TextBox();
|
|
||||||
this.label8 = new System.Windows.Forms.Label();
|
|
||||||
this.txtKcpuplinkCapacity = new System.Windows.Forms.TextBox();
|
|
||||||
this.label9 = new System.Windows.Forms.Label();
|
|
||||||
this.txtKcptti = new System.Windows.Forms.TextBox();
|
|
||||||
this.label7 = new System.Windows.Forms.Label();
|
|
||||||
this.txtKcpmtu = new System.Windows.Forms.TextBox();
|
|
||||||
this.label6 = new System.Windows.Forms.Label();
|
|
||||||
this.tabPage7 = new System.Windows.Forms.TabPage();
|
|
||||||
this.numStatisticsFreshRate = new System.Windows.Forms.NumericUpDown();
|
|
||||||
this.txttrayMenuServersLimit = new System.Windows.Forms.TextBox();
|
|
||||||
this.label17 = new System.Windows.Forms.Label();
|
|
||||||
this.txtautoUpdateSubInterval = new System.Windows.Forms.TextBox();
|
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
|
||||||
this.chkEnableSecurityProtocolTls13 = new System.Windows.Forms.CheckBox();
|
|
||||||
this.chkEnableAutoAdjustMainLvColWidth = new System.Windows.Forms.CheckBox();
|
|
||||||
this.btnSetLoopback = new System.Windows.Forms.Button();
|
|
||||||
this.txtautoUpdateInterval = new System.Windows.Forms.TextBox();
|
|
||||||
this.label15 = new System.Windows.Forms.Label();
|
|
||||||
this.chkIgnoreGeoUpdateCore = new System.Windows.Forms.CheckBox();
|
|
||||||
this.chkKeepOlderDedupl = new System.Windows.Forms.CheckBox();
|
|
||||||
this.lbFreshrate = new System.Windows.Forms.Label();
|
|
||||||
this.chkEnableStatistics = new System.Windows.Forms.CheckBox();
|
|
||||||
this.chkAutoRun = new System.Windows.Forms.CheckBox();
|
|
||||||
this.tabPageCoreType = new System.Windows.Forms.TabPage();
|
|
||||||
this.cmbCoreType6 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.labCoreType6 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbCoreType5 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.labCoreType5 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbCoreType4 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.labCoreType4 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbCoreType3 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.labCoreType3 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbCoreType2 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.labCoreType2 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbCoreType1 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.labCoreType1 = new System.Windows.Forms.Label();
|
|
||||||
this.tabPage3 = new System.Windows.Forms.TabPage();
|
|
||||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.label18 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbSystemProxyAdvancedProtocol = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label13 = new System.Windows.Forms.Label();
|
|
||||||
this.label12 = new System.Windows.Forms.Label();
|
|
||||||
this.txtsystemProxyExceptions = new System.Windows.Forms.TextBox();
|
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
|
||||||
this.tabControl1.SuspendLayout();
|
|
||||||
this.tabPage1.SuspendLayout();
|
|
||||||
this.groupBox1.SuspendLayout();
|
|
||||||
this.tabPage2.SuspendLayout();
|
|
||||||
this.tabPage6.SuspendLayout();
|
|
||||||
this.tabPage7.SuspendLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.numStatisticsFreshRate)).BeginInit();
|
|
||||||
this.tabPageCoreType.SuspendLayout();
|
|
||||||
this.tabPage3.SuspendLayout();
|
|
||||||
this.groupBox2.SuspendLayout();
|
|
||||||
this.panel2.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// tabControl1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.tabControl1, "tabControl1");
|
|
||||||
this.tabControl1.Controls.Add(this.tabPage1);
|
|
||||||
this.tabControl1.Controls.Add(this.tabPage2);
|
|
||||||
this.tabControl1.Controls.Add(this.tabPage6);
|
|
||||||
this.tabControl1.Controls.Add(this.tabPage7);
|
|
||||||
this.tabControl1.Controls.Add(this.tabPageCoreType);
|
|
||||||
this.tabControl1.Controls.Add(this.tabPage3);
|
|
||||||
this.tabControl1.Name = "tabControl1";
|
|
||||||
this.tabControl1.SelectedIndex = 0;
|
|
||||||
//
|
|
||||||
// tabPage1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.tabPage1, "tabPage1");
|
|
||||||
this.tabPage1.Controls.Add(this.groupBox1);
|
|
||||||
this.tabPage1.Name = "tabPage1";
|
|
||||||
this.tabPage1.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// groupBox1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Controls.Add(this.label16);
|
|
||||||
this.groupBox1.Controls.Add(this.label4);
|
|
||||||
this.groupBox1.Controls.Add(this.txtpass);
|
|
||||||
this.groupBox1.Controls.Add(this.txtuser);
|
|
||||||
this.groupBox1.Controls.Add(this.chkdefAllowInsecure);
|
|
||||||
this.groupBox1.Controls.Add(this.chkAllowLANConn);
|
|
||||||
this.groupBox1.Controls.Add(this.chksniffingEnabled);
|
|
||||||
this.groupBox1.Controls.Add(this.chkmuxEnabled);
|
|
||||||
this.groupBox1.Controls.Add(this.cmbprotocol);
|
|
||||||
this.groupBox1.Controls.Add(this.label1);
|
|
||||||
this.groupBox1.Controls.Add(this.chkudpEnabled);
|
|
||||||
this.groupBox1.Controls.Add(this.chklogEnabled);
|
|
||||||
this.groupBox1.Controls.Add(this.cmbloglevel);
|
|
||||||
this.groupBox1.Controls.Add(this.label5);
|
|
||||||
this.groupBox1.Controls.Add(this.txtlocalPort);
|
|
||||||
this.groupBox1.Controls.Add(this.label2);
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
|
||||||
this.groupBox1.TabStop = false;
|
|
||||||
//
|
|
||||||
// label16
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label16, "label16");
|
|
||||||
this.label16.Name = "label16";
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label4, "label4");
|
|
||||||
this.label4.Name = "label4";
|
|
||||||
//
|
|
||||||
// txtpass
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtpass, "txtpass");
|
|
||||||
this.txtpass.Name = "txtpass";
|
|
||||||
//
|
|
||||||
// txtuser
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtuser, "txtuser");
|
|
||||||
this.txtuser.Name = "txtuser";
|
|
||||||
//
|
|
||||||
// chkdefAllowInsecure
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkdefAllowInsecure, "chkdefAllowInsecure");
|
|
||||||
this.chkdefAllowInsecure.Name = "chkdefAllowInsecure";
|
|
||||||
this.chkdefAllowInsecure.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// chkAllowLANConn
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkAllowLANConn, "chkAllowLANConn");
|
|
||||||
this.chkAllowLANConn.Name = "chkAllowLANConn";
|
|
||||||
this.chkAllowLANConn.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// chksniffingEnabled
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chksniffingEnabled, "chksniffingEnabled");
|
|
||||||
this.chksniffingEnabled.Name = "chksniffingEnabled";
|
|
||||||
this.chksniffingEnabled.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// chkmuxEnabled
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkmuxEnabled, "chkmuxEnabled");
|
|
||||||
this.chkmuxEnabled.Name = "chkmuxEnabled";
|
|
||||||
this.chkmuxEnabled.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// cmbprotocol
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmbprotocol, "cmbprotocol");
|
|
||||||
this.cmbprotocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbprotocol.FormattingEnabled = true;
|
|
||||||
this.cmbprotocol.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmbprotocol.Items"),
|
|
||||||
resources.GetString("cmbprotocol.Items1")});
|
|
||||||
this.cmbprotocol.Name = "cmbprotocol";
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label1, "label1");
|
|
||||||
this.label1.Name = "label1";
|
|
||||||
//
|
|
||||||
// chkudpEnabled
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkudpEnabled, "chkudpEnabled");
|
|
||||||
this.chkudpEnabled.Name = "chkudpEnabled";
|
|
||||||
this.chkudpEnabled.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// chklogEnabled
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chklogEnabled, "chklogEnabled");
|
|
||||||
this.chklogEnabled.Name = "chklogEnabled";
|
|
||||||
this.chklogEnabled.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// cmbloglevel
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmbloglevel, "cmbloglevel");
|
|
||||||
this.cmbloglevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbloglevel.FormattingEnabled = true;
|
|
||||||
this.cmbloglevel.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmbloglevel.Items"),
|
|
||||||
resources.GetString("cmbloglevel.Items1"),
|
|
||||||
resources.GetString("cmbloglevel.Items2"),
|
|
||||||
resources.GetString("cmbloglevel.Items3"),
|
|
||||||
resources.GetString("cmbloglevel.Items4")});
|
|
||||||
this.cmbloglevel.Name = "cmbloglevel";
|
|
||||||
//
|
|
||||||
// label5
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label5, "label5");
|
|
||||||
this.label5.Name = "label5";
|
|
||||||
//
|
|
||||||
// txtlocalPort
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtlocalPort, "txtlocalPort");
|
|
||||||
this.txtlocalPort.Name = "txtlocalPort";
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label2, "label2");
|
|
||||||
this.label2.Name = "label2";
|
|
||||||
//
|
|
||||||
// tabPage2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.tabPage2, "tabPage2");
|
|
||||||
this.tabPage2.Controls.Add(this.linkDnsObjectDoc);
|
|
||||||
this.tabPage2.Controls.Add(this.txtremoteDNS);
|
|
||||||
this.tabPage2.Controls.Add(this.label14);
|
|
||||||
this.tabPage2.Name = "tabPage2";
|
|
||||||
this.tabPage2.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// linkDnsObjectDoc
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.linkDnsObjectDoc, "linkDnsObjectDoc");
|
|
||||||
this.linkDnsObjectDoc.Name = "linkDnsObjectDoc";
|
|
||||||
this.linkDnsObjectDoc.TabStop = true;
|
|
||||||
this.linkDnsObjectDoc.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkDnsObjectDoc_LinkClicked);
|
|
||||||
//
|
|
||||||
// txtremoteDNS
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtremoteDNS, "txtremoteDNS");
|
|
||||||
this.txtremoteDNS.Name = "txtremoteDNS";
|
|
||||||
//
|
|
||||||
// label14
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label14, "label14");
|
|
||||||
this.label14.Name = "label14";
|
|
||||||
//
|
|
||||||
// tabPage6
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.tabPage6, "tabPage6");
|
|
||||||
this.tabPage6.Controls.Add(this.chkKcpcongestion);
|
|
||||||
this.tabPage6.Controls.Add(this.txtKcpwriteBufferSize);
|
|
||||||
this.tabPage6.Controls.Add(this.label10);
|
|
||||||
this.tabPage6.Controls.Add(this.txtKcpreadBufferSize);
|
|
||||||
this.tabPage6.Controls.Add(this.label11);
|
|
||||||
this.tabPage6.Controls.Add(this.txtKcpdownlinkCapacity);
|
|
||||||
this.tabPage6.Controls.Add(this.label8);
|
|
||||||
this.tabPage6.Controls.Add(this.txtKcpuplinkCapacity);
|
|
||||||
this.tabPage6.Controls.Add(this.label9);
|
|
||||||
this.tabPage6.Controls.Add(this.txtKcptti);
|
|
||||||
this.tabPage6.Controls.Add(this.label7);
|
|
||||||
this.tabPage6.Controls.Add(this.txtKcpmtu);
|
|
||||||
this.tabPage6.Controls.Add(this.label6);
|
|
||||||
this.tabPage6.Name = "tabPage6";
|
|
||||||
this.tabPage6.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// chkKcpcongestion
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkKcpcongestion, "chkKcpcongestion");
|
|
||||||
this.chkKcpcongestion.Name = "chkKcpcongestion";
|
|
||||||
this.chkKcpcongestion.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// txtKcpwriteBufferSize
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtKcpwriteBufferSize, "txtKcpwriteBufferSize");
|
|
||||||
this.txtKcpwriteBufferSize.Name = "txtKcpwriteBufferSize";
|
|
||||||
//
|
|
||||||
// label10
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label10, "label10");
|
|
||||||
this.label10.Name = "label10";
|
|
||||||
//
|
|
||||||
// txtKcpreadBufferSize
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtKcpreadBufferSize, "txtKcpreadBufferSize");
|
|
||||||
this.txtKcpreadBufferSize.Name = "txtKcpreadBufferSize";
|
|
||||||
//
|
|
||||||
// label11
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label11, "label11");
|
|
||||||
this.label11.Name = "label11";
|
|
||||||
//
|
|
||||||
// txtKcpdownlinkCapacity
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtKcpdownlinkCapacity, "txtKcpdownlinkCapacity");
|
|
||||||
this.txtKcpdownlinkCapacity.Name = "txtKcpdownlinkCapacity";
|
|
||||||
//
|
|
||||||
// label8
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label8, "label8");
|
|
||||||
this.label8.Name = "label8";
|
|
||||||
//
|
|
||||||
// txtKcpuplinkCapacity
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtKcpuplinkCapacity, "txtKcpuplinkCapacity");
|
|
||||||
this.txtKcpuplinkCapacity.Name = "txtKcpuplinkCapacity";
|
|
||||||
//
|
|
||||||
// label9
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label9, "label9");
|
|
||||||
this.label9.Name = "label9";
|
|
||||||
//
|
|
||||||
// txtKcptti
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtKcptti, "txtKcptti");
|
|
||||||
this.txtKcptti.Name = "txtKcptti";
|
|
||||||
//
|
|
||||||
// label7
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label7, "label7");
|
|
||||||
this.label7.Name = "label7";
|
|
||||||
//
|
|
||||||
// txtKcpmtu
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtKcpmtu, "txtKcpmtu");
|
|
||||||
this.txtKcpmtu.Name = "txtKcpmtu";
|
|
||||||
//
|
|
||||||
// label6
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label6, "label6");
|
|
||||||
this.label6.Name = "label6";
|
|
||||||
//
|
|
||||||
// tabPage7
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.tabPage7, "tabPage7");
|
|
||||||
this.tabPage7.Controls.Add(this.numStatisticsFreshRate);
|
|
||||||
this.tabPage7.Controls.Add(this.txttrayMenuServersLimit);
|
|
||||||
this.tabPage7.Controls.Add(this.label17);
|
|
||||||
this.tabPage7.Controls.Add(this.txtautoUpdateSubInterval);
|
|
||||||
this.tabPage7.Controls.Add(this.label3);
|
|
||||||
this.tabPage7.Controls.Add(this.chkEnableSecurityProtocolTls13);
|
|
||||||
this.tabPage7.Controls.Add(this.chkEnableAutoAdjustMainLvColWidth);
|
|
||||||
this.tabPage7.Controls.Add(this.btnSetLoopback);
|
|
||||||
this.tabPage7.Controls.Add(this.txtautoUpdateInterval);
|
|
||||||
this.tabPage7.Controls.Add(this.label15);
|
|
||||||
this.tabPage7.Controls.Add(this.chkIgnoreGeoUpdateCore);
|
|
||||||
this.tabPage7.Controls.Add(this.chkKeepOlderDedupl);
|
|
||||||
this.tabPage7.Controls.Add(this.lbFreshrate);
|
|
||||||
this.tabPage7.Controls.Add(this.chkEnableStatistics);
|
|
||||||
this.tabPage7.Controls.Add(this.chkAutoRun);
|
|
||||||
this.tabPage7.Name = "tabPage7";
|
|
||||||
this.tabPage7.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// numStatisticsFreshRate
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.numStatisticsFreshRate, "numStatisticsFreshRate");
|
|
||||||
this.numStatisticsFreshRate.Name = "numStatisticsFreshRate";
|
|
||||||
//
|
|
||||||
// txttrayMenuServersLimit
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txttrayMenuServersLimit, "txttrayMenuServersLimit");
|
|
||||||
this.txttrayMenuServersLimit.Name = "txttrayMenuServersLimit";
|
|
||||||
//
|
|
||||||
// label17
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label17, "label17");
|
|
||||||
this.label17.Name = "label17";
|
|
||||||
//
|
|
||||||
// txtautoUpdateSubInterval
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtautoUpdateSubInterval, "txtautoUpdateSubInterval");
|
|
||||||
this.txtautoUpdateSubInterval.Name = "txtautoUpdateSubInterval";
|
|
||||||
//
|
|
||||||
// label3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label3, "label3");
|
|
||||||
this.label3.Name = "label3";
|
|
||||||
//
|
|
||||||
// chkEnableSecurityProtocolTls13
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkEnableSecurityProtocolTls13, "chkEnableSecurityProtocolTls13");
|
|
||||||
this.chkEnableSecurityProtocolTls13.Name = "chkEnableSecurityProtocolTls13";
|
|
||||||
this.chkEnableSecurityProtocolTls13.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// chkEnableAutoAdjustMainLvColWidth
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkEnableAutoAdjustMainLvColWidth, "chkEnableAutoAdjustMainLvColWidth");
|
|
||||||
this.chkEnableAutoAdjustMainLvColWidth.Name = "chkEnableAutoAdjustMainLvColWidth";
|
|
||||||
this.chkEnableAutoAdjustMainLvColWidth.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// btnSetLoopback
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnSetLoopback, "btnSetLoopback");
|
|
||||||
this.btnSetLoopback.Name = "btnSetLoopback";
|
|
||||||
this.btnSetLoopback.UseVisualStyleBackColor = true;
|
|
||||||
this.btnSetLoopback.Click += new System.EventHandler(this.btnSetLoopback_Click);
|
|
||||||
//
|
|
||||||
// txtautoUpdateInterval
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtautoUpdateInterval, "txtautoUpdateInterval");
|
|
||||||
this.txtautoUpdateInterval.Name = "txtautoUpdateInterval";
|
|
||||||
//
|
|
||||||
// label15
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label15, "label15");
|
|
||||||
this.label15.Name = "label15";
|
|
||||||
//
|
|
||||||
// chkIgnoreGeoUpdateCore
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkIgnoreGeoUpdateCore, "chkIgnoreGeoUpdateCore");
|
|
||||||
this.chkIgnoreGeoUpdateCore.Name = "chkIgnoreGeoUpdateCore";
|
|
||||||
this.chkIgnoreGeoUpdateCore.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// chkKeepOlderDedupl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkKeepOlderDedupl, "chkKeepOlderDedupl");
|
|
||||||
this.chkKeepOlderDedupl.Name = "chkKeepOlderDedupl";
|
|
||||||
this.chkKeepOlderDedupl.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// lbFreshrate
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.lbFreshrate, "lbFreshrate");
|
|
||||||
this.lbFreshrate.Name = "lbFreshrate";
|
|
||||||
//
|
|
||||||
// chkEnableStatistics
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkEnableStatistics, "chkEnableStatistics");
|
|
||||||
this.chkEnableStatistics.Name = "chkEnableStatistics";
|
|
||||||
this.chkEnableStatistics.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// chkAutoRun
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkAutoRun, "chkAutoRun");
|
|
||||||
this.chkAutoRun.Name = "chkAutoRun";
|
|
||||||
this.chkAutoRun.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// tabPageCoreType
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.tabPageCoreType, "tabPageCoreType");
|
|
||||||
this.tabPageCoreType.Controls.Add(this.cmbCoreType6);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.labCoreType6);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.cmbCoreType5);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.labCoreType5);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.cmbCoreType4);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.labCoreType4);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.cmbCoreType3);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.labCoreType3);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.cmbCoreType2);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.labCoreType2);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.cmbCoreType1);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.labCoreType1);
|
|
||||||
this.tabPageCoreType.Name = "tabPageCoreType";
|
|
||||||
this.tabPageCoreType.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// cmbCoreType6
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmbCoreType6, "cmbCoreType6");
|
|
||||||
this.cmbCoreType6.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbCoreType6.FormattingEnabled = true;
|
|
||||||
this.cmbCoreType6.Name = "cmbCoreType6";
|
|
||||||
//
|
|
||||||
// labCoreType6
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labCoreType6, "labCoreType6");
|
|
||||||
this.labCoreType6.Name = "labCoreType6";
|
|
||||||
//
|
|
||||||
// cmbCoreType5
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmbCoreType5, "cmbCoreType5");
|
|
||||||
this.cmbCoreType5.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbCoreType5.FormattingEnabled = true;
|
|
||||||
this.cmbCoreType5.Name = "cmbCoreType5";
|
|
||||||
//
|
|
||||||
// labCoreType5
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labCoreType5, "labCoreType5");
|
|
||||||
this.labCoreType5.Name = "labCoreType5";
|
|
||||||
//
|
|
||||||
// cmbCoreType4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmbCoreType4, "cmbCoreType4");
|
|
||||||
this.cmbCoreType4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbCoreType4.FormattingEnabled = true;
|
|
||||||
this.cmbCoreType4.Name = "cmbCoreType4";
|
|
||||||
//
|
|
||||||
// labCoreType4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labCoreType4, "labCoreType4");
|
|
||||||
this.labCoreType4.Name = "labCoreType4";
|
|
||||||
//
|
|
||||||
// cmbCoreType3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmbCoreType3, "cmbCoreType3");
|
|
||||||
this.cmbCoreType3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbCoreType3.FormattingEnabled = true;
|
|
||||||
this.cmbCoreType3.Name = "cmbCoreType3";
|
|
||||||
//
|
|
||||||
// labCoreType3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labCoreType3, "labCoreType3");
|
|
||||||
this.labCoreType3.Name = "labCoreType3";
|
|
||||||
//
|
|
||||||
// cmbCoreType2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmbCoreType2, "cmbCoreType2");
|
|
||||||
this.cmbCoreType2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbCoreType2.FormattingEnabled = true;
|
|
||||||
this.cmbCoreType2.Name = "cmbCoreType2";
|
|
||||||
//
|
|
||||||
// labCoreType2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labCoreType2, "labCoreType2");
|
|
||||||
this.labCoreType2.Name = "labCoreType2";
|
|
||||||
//
|
|
||||||
// cmbCoreType1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmbCoreType1, "cmbCoreType1");
|
|
||||||
this.cmbCoreType1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbCoreType1.FormattingEnabled = true;
|
|
||||||
this.cmbCoreType1.Name = "cmbCoreType1";
|
|
||||||
//
|
|
||||||
// labCoreType1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labCoreType1, "labCoreType1");
|
|
||||||
this.labCoreType1.Name = "labCoreType1";
|
|
||||||
//
|
|
||||||
// tabPage3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.tabPage3, "tabPage3");
|
|
||||||
this.tabPage3.Controls.Add(this.groupBox2);
|
|
||||||
this.tabPage3.Name = "tabPage3";
|
|
||||||
this.tabPage3.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// groupBox2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
|
||||||
this.groupBox2.Controls.Add(this.label18);
|
|
||||||
this.groupBox2.Controls.Add(this.cmbSystemProxyAdvancedProtocol);
|
|
||||||
this.groupBox2.Controls.Add(this.label13);
|
|
||||||
this.groupBox2.Controls.Add(this.label12);
|
|
||||||
this.groupBox2.Controls.Add(this.txtsystemProxyExceptions);
|
|
||||||
this.groupBox2.Name = "groupBox2";
|
|
||||||
this.groupBox2.TabStop = false;
|
|
||||||
//
|
|
||||||
// label18
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label18, "label18");
|
|
||||||
this.label18.Name = "label18";
|
|
||||||
//
|
|
||||||
// cmbSystemProxyAdvancedProtocol
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmbSystemProxyAdvancedProtocol, "cmbSystemProxyAdvancedProtocol");
|
|
||||||
this.cmbSystemProxyAdvancedProtocol.FormattingEnabled = true;
|
|
||||||
this.cmbSystemProxyAdvancedProtocol.Name = "cmbSystemProxyAdvancedProtocol";
|
|
||||||
//
|
|
||||||
// label13
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label13, "label13");
|
|
||||||
this.label13.Name = "label13";
|
|
||||||
//
|
|
||||||
// label12
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label12, "label12");
|
|
||||||
this.label12.Name = "label12";
|
|
||||||
//
|
|
||||||
// txtsystemProxyExceptions
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtsystemProxyExceptions, "txtsystemProxyExceptions");
|
|
||||||
this.txtsystemProxyExceptions.Name = "txtsystemProxyExceptions";
|
|
||||||
//
|
|
||||||
// panel2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
|
||||||
this.panel2.Name = "panel2";
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel1, "panel1");
|
|
||||||
this.panel1.Name = "panel1";
|
|
||||||
//
|
|
||||||
// OptionSettingForm
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.tabControl1);
|
|
||||||
this.Controls.Add(this.panel2);
|
|
||||||
this.Controls.Add(this.panel1);
|
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
|
||||||
this.Name = "OptionSettingForm";
|
|
||||||
this.Load += new System.EventHandler(this.OptionSettingForm_Load);
|
|
||||||
this.tabControl1.ResumeLayout(false);
|
|
||||||
this.tabPage1.ResumeLayout(false);
|
|
||||||
this.groupBox1.ResumeLayout(false);
|
|
||||||
this.groupBox1.PerformLayout();
|
|
||||||
this.tabPage2.ResumeLayout(false);
|
|
||||||
this.tabPage2.PerformLayout();
|
|
||||||
this.tabPage6.ResumeLayout(false);
|
|
||||||
this.tabPage6.PerformLayout();
|
|
||||||
this.tabPage7.ResumeLayout(false);
|
|
||||||
this.tabPage7.PerformLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.numStatisticsFreshRate)).EndInit();
|
|
||||||
this.tabPageCoreType.ResumeLayout(false);
|
|
||||||
this.tabPageCoreType.PerformLayout();
|
|
||||||
this.tabPage3.ResumeLayout(false);
|
|
||||||
this.groupBox2.ResumeLayout(false);
|
|
||||||
this.groupBox2.PerformLayout();
|
|
||||||
this.panel2.ResumeLayout(false);
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox1;
|
|
||||||
private System.Windows.Forms.ComboBox cmbloglevel;
|
|
||||||
private System.Windows.Forms.Label label5;
|
|
||||||
private System.Windows.Forms.TextBox txtlocalPort;
|
|
||||||
private System.Windows.Forms.Label label2;
|
|
||||||
private System.Windows.Forms.CheckBox chklogEnabled;
|
|
||||||
private System.Windows.Forms.CheckBox chkudpEnabled;
|
|
||||||
private System.Windows.Forms.Panel panel1;
|
|
||||||
private System.Windows.Forms.TabControl tabControl1;
|
|
||||||
private System.Windows.Forms.TabPage tabPage1;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.ComboBox cmbprotocol;
|
|
||||||
private System.Windows.Forms.Label label1;
|
|
||||||
private System.Windows.Forms.CheckBox chkmuxEnabled;
|
|
||||||
private System.Windows.Forms.TabPage tabPage6;
|
|
||||||
private System.Windows.Forms.TextBox txtKcpmtu;
|
|
||||||
private System.Windows.Forms.Label label6;
|
|
||||||
private System.Windows.Forms.TextBox txtKcptti;
|
|
||||||
private System.Windows.Forms.Label label7;
|
|
||||||
private System.Windows.Forms.TextBox txtKcpwriteBufferSize;
|
|
||||||
private System.Windows.Forms.Label label10;
|
|
||||||
private System.Windows.Forms.TextBox txtKcpreadBufferSize;
|
|
||||||
private System.Windows.Forms.Label label11;
|
|
||||||
private System.Windows.Forms.TextBox txtKcpdownlinkCapacity;
|
|
||||||
private System.Windows.Forms.Label label8;
|
|
||||||
private System.Windows.Forms.TextBox txtKcpuplinkCapacity;
|
|
||||||
private System.Windows.Forms.Label label9;
|
|
||||||
private System.Windows.Forms.CheckBox chkKcpcongestion;
|
|
||||||
private System.Windows.Forms.TabPage tabPage7;
|
|
||||||
private System.Windows.Forms.CheckBox chkAutoRun;
|
|
||||||
private System.Windows.Forms.CheckBox chkAllowLANConn;
|
|
||||||
private System.Windows.Forms.CheckBox chksniffingEnabled;
|
|
||||||
private System.Windows.Forms.CheckBox chkEnableStatistics;
|
|
||||||
private System.Windows.Forms.Label lbFreshrate;
|
|
||||||
private System.Windows.Forms.CheckBox chkKeepOlderDedupl;
|
|
||||||
private System.Windows.Forms.CheckBox chkdefAllowInsecure;
|
|
||||||
private System.Windows.Forms.TabPage tabPage2;
|
|
||||||
private System.Windows.Forms.LinkLabel linkDnsObjectDoc;
|
|
||||||
private System.Windows.Forms.TextBox txtremoteDNS;
|
|
||||||
private System.Windows.Forms.Label label14;
|
|
||||||
private System.Windows.Forms.CheckBox chkIgnoreGeoUpdateCore;
|
|
||||||
private System.Windows.Forms.TabPage tabPage3;
|
|
||||||
private System.Windows.Forms.TextBox txtsystemProxyExceptions;
|
|
||||||
private System.Windows.Forms.Label label12;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox2;
|
|
||||||
private System.Windows.Forms.Label label13;
|
|
||||||
private System.Windows.Forms.TextBox txtautoUpdateInterval;
|
|
||||||
private System.Windows.Forms.Label label15;
|
|
||||||
private System.Windows.Forms.Button btnSetLoopback;
|
|
||||||
private System.Windows.Forms.CheckBox chkEnableAutoAdjustMainLvColWidth;
|
|
||||||
private System.Windows.Forms.CheckBox chkEnableSecurityProtocolTls13;
|
|
||||||
private System.Windows.Forms.TabPage tabPageCoreType;
|
|
||||||
private System.Windows.Forms.ComboBox cmbCoreType1;
|
|
||||||
private System.Windows.Forms.Label labCoreType1;
|
|
||||||
private System.Windows.Forms.ComboBox cmbCoreType6;
|
|
||||||
private System.Windows.Forms.Label labCoreType6;
|
|
||||||
private System.Windows.Forms.ComboBox cmbCoreType5;
|
|
||||||
private System.Windows.Forms.Label labCoreType5;
|
|
||||||
private System.Windows.Forms.ComboBox cmbCoreType4;
|
|
||||||
private System.Windows.Forms.Label labCoreType4;
|
|
||||||
private System.Windows.Forms.ComboBox cmbCoreType3;
|
|
||||||
private System.Windows.Forms.Label labCoreType3;
|
|
||||||
private System.Windows.Forms.ComboBox cmbCoreType2;
|
|
||||||
private System.Windows.Forms.Label labCoreType2;
|
|
||||||
private System.Windows.Forms.Label label16;
|
|
||||||
private System.Windows.Forms.Label label4;
|
|
||||||
private System.Windows.Forms.TextBox txtpass;
|
|
||||||
private System.Windows.Forms.TextBox txtuser;
|
|
||||||
private System.Windows.Forms.TextBox txtautoUpdateSubInterval;
|
|
||||||
private System.Windows.Forms.Label label3;
|
|
||||||
private System.Windows.Forms.TextBox txttrayMenuServersLimit;
|
|
||||||
private System.Windows.Forms.Label label17;
|
|
||||||
private System.Windows.Forms.ComboBox cmbSystemProxyAdvancedProtocol;
|
|
||||||
private System.Windows.Forms.Label label18;
|
|
||||||
private System.Windows.Forms.NumericUpDown numStatisticsFreshRate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,331 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Base;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class OptionSettingForm : BaseForm
|
|
||||||
{
|
|
||||||
public OptionSettingForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OptionSettingForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
cmbSystemProxyAdvancedProtocol.Items.AddRange(Global.IEProxyProtocols.ToArray());
|
|
||||||
|
|
||||||
InitBase();
|
|
||||||
|
|
||||||
InitKCP();
|
|
||||||
|
|
||||||
InitGUI();
|
|
||||||
|
|
||||||
InitCoreType();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 初始化基础设置
|
|
||||||
/// </summary>
|
|
||||||
private void InitBase()
|
|
||||||
{
|
|
||||||
//日志
|
|
||||||
chklogEnabled.Checked = config.logEnabled;
|
|
||||||
cmbloglevel.Text = config.loglevel;
|
|
||||||
|
|
||||||
//Mux
|
|
||||||
chkmuxEnabled.Checked = config.muxEnabled;
|
|
||||||
|
|
||||||
//本地监听
|
|
||||||
if (config.inbound.Count > 0)
|
|
||||||
{
|
|
||||||
txtlocalPort.Text = config.inbound[0].localPort.ToString();
|
|
||||||
cmbprotocol.Text = config.inbound[0].protocol.ToString();
|
|
||||||
chkudpEnabled.Checked = config.inbound[0].udpEnabled;
|
|
||||||
chksniffingEnabled.Checked = config.inbound[0].sniffingEnabled;
|
|
||||||
chkAllowLANConn.Checked = config.inbound[0].allowLANConn;
|
|
||||||
txtuser.Text = config.inbound[0].user;
|
|
||||||
txtpass.Text = config.inbound[0].pass;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//remoteDNS
|
|
||||||
txtremoteDNS.Text = config.remoteDNS;
|
|
||||||
|
|
||||||
chkdefAllowInsecure.Checked = config.defAllowInsecure;
|
|
||||||
|
|
||||||
txtsystemProxyExceptions.Text = config.systemProxyExceptions;
|
|
||||||
|
|
||||||
cmbSystemProxyAdvancedProtocol.Text = config.systemProxyAdvancedProtocol;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 初始化KCP设置
|
|
||||||
/// </summary>
|
|
||||||
private void InitKCP()
|
|
||||||
{
|
|
||||||
txtKcpmtu.Text = config.kcpItem.mtu.ToString();
|
|
||||||
txtKcptti.Text = config.kcpItem.tti.ToString();
|
|
||||||
txtKcpuplinkCapacity.Text = config.kcpItem.uplinkCapacity.ToString();
|
|
||||||
txtKcpdownlinkCapacity.Text = config.kcpItem.downlinkCapacity.ToString();
|
|
||||||
txtKcpreadBufferSize.Text = config.kcpItem.readBufferSize.ToString();
|
|
||||||
txtKcpwriteBufferSize.Text = config.kcpItem.writeBufferSize.ToString();
|
|
||||||
chkKcpcongestion.Checked = config.kcpItem.congestion;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 初始化v2rayN GUI设置
|
|
||||||
/// </summary>
|
|
||||||
private void InitGUI()
|
|
||||||
{
|
|
||||||
//开机自动启动
|
|
||||||
chkAutoRun.Checked = Utils.IsAutoRun();
|
|
||||||
|
|
||||||
chkEnableStatistics.Checked = config.enableStatistics;
|
|
||||||
numStatisticsFreshRate.Value = config.statisticsFreshRate;
|
|
||||||
chkKeepOlderDedupl.Checked = config.keepOlderDedupl;
|
|
||||||
|
|
||||||
chkIgnoreGeoUpdateCore.Checked = config.ignoreGeoUpdateCore;
|
|
||||||
chkEnableAutoAdjustMainLvColWidth.Checked = config.uiItem.enableAutoAdjustMainLvColWidth;
|
|
||||||
chkEnableSecurityProtocolTls13.Checked = config.enableSecurityProtocolTls13;
|
|
||||||
|
|
||||||
txtautoUpdateInterval.Text = config.autoUpdateInterval.ToString();
|
|
||||||
txtautoUpdateSubInterval.Text = config.autoUpdateSubInterval.ToString();
|
|
||||||
txttrayMenuServersLimit.Text = config.trayMenuServersLimit.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void InitCoreType()
|
|
||||||
{
|
|
||||||
if (config.coreTypeItem == null)
|
|
||||||
{
|
|
||||||
config.coreTypeItem = new List<CoreTypeItem>();
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (EConfigType it in Enum.GetValues(typeof(EConfigType)))
|
|
||||||
{
|
|
||||||
if (config.coreTypeItem.FindIndex(t => t.configType == it) >= 0)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
config.coreTypeItem.Add(new CoreTypeItem()
|
|
||||||
{
|
|
||||||
configType = it,
|
|
||||||
coreType = ECoreType.Xray
|
|
||||||
});
|
|
||||||
}
|
|
||||||
for (int k = 1; k <= config.coreTypeItem.Count; k++)
|
|
||||||
{
|
|
||||||
var item = config.coreTypeItem[k - 1];
|
|
||||||
((ComboBox)tabPageCoreType.Controls[$"cmbCoreType{k}"]).Items.AddRange(Global.coreTypes.ToArray());
|
|
||||||
tabPageCoreType.Controls[$"labCoreType{k}"].Text = item.configType.ToString();
|
|
||||||
tabPageCoreType.Controls[$"cmbCoreType{k}"].Text = item.coreType.ToString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (SaveBase() != 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (SaveKCP() != 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (SaveGUI() != 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (SaveCoreType() != 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ConfigHandler.SaveConfig(ref config) == 0)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(ResUI.OperationFailed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 保存基础设置
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
private int SaveBase()
|
|
||||||
{
|
|
||||||
//日志
|
|
||||||
bool logEnabled = chklogEnabled.Checked;
|
|
||||||
string loglevel = cmbloglevel.Text.TrimEx();
|
|
||||||
|
|
||||||
//Mux
|
|
||||||
bool muxEnabled = chkmuxEnabled.Checked;
|
|
||||||
|
|
||||||
//本地监听
|
|
||||||
string localPort = txtlocalPort.Text.TrimEx();
|
|
||||||
string protocol = cmbprotocol.Text.TrimEx();
|
|
||||||
bool udpEnabled = chkudpEnabled.Checked;
|
|
||||||
bool sniffingEnabled = chksniffingEnabled.Checked;
|
|
||||||
bool allowLANConn = chkAllowLANConn.Checked;
|
|
||||||
if (Utils.IsNullOrEmpty(localPort) || !Utils.IsNumberic(localPort))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.FillLocalListeningPort);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (Utils.IsNullOrEmpty(protocol))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.PleaseSelectProtocol);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
var remoteDNS = txtremoteDNS.Text.TrimEx();
|
|
||||||
var obj = Utils.ParseJson(remoteDNS);
|
|
||||||
if (obj != null && obj.ContainsKey("servers"))
|
|
||||||
{
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (remoteDNS.Contains("{") || remoteDNS.Contains("}"))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.FillCorrectDNSText);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
config.inbound[0].localPort = Utils.ToInt(localPort);
|
|
||||||
config.inbound[0].protocol = protocol;
|
|
||||||
config.inbound[0].udpEnabled = udpEnabled;
|
|
||||||
config.inbound[0].sniffingEnabled = sniffingEnabled;
|
|
||||||
config.inbound[0].allowLANConn = allowLANConn;
|
|
||||||
config.inbound[0].user = txtuser.Text;
|
|
||||||
config.inbound[0].pass = txtpass.Text;
|
|
||||||
|
|
||||||
if (config.inbound.Count > 1)
|
|
||||||
{
|
|
||||||
config.inbound.RemoveAt(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//日志
|
|
||||||
config.logEnabled = logEnabled;
|
|
||||||
config.loglevel = loglevel;
|
|
||||||
|
|
||||||
//Mux
|
|
||||||
config.muxEnabled = muxEnabled;
|
|
||||||
|
|
||||||
//remoteDNS
|
|
||||||
config.remoteDNS = txtremoteDNS.Text.TrimEx();
|
|
||||||
|
|
||||||
config.defAllowInsecure = chkdefAllowInsecure.Checked;
|
|
||||||
|
|
||||||
config.systemProxyExceptions = txtsystemProxyExceptions.Text.TrimEx();
|
|
||||||
|
|
||||||
config.systemProxyAdvancedProtocol = cmbSystemProxyAdvancedProtocol.Text.TrimEx();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 保存KCP设置
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
private int SaveKCP()
|
|
||||||
{
|
|
||||||
string mtu = txtKcpmtu.Text.TrimEx();
|
|
||||||
string tti = txtKcptti.Text.TrimEx();
|
|
||||||
string uplinkCapacity = txtKcpuplinkCapacity.Text.TrimEx();
|
|
||||||
string downlinkCapacity = txtKcpdownlinkCapacity.Text.TrimEx();
|
|
||||||
string readBufferSize = txtKcpreadBufferSize.Text.TrimEx();
|
|
||||||
string writeBufferSize = txtKcpwriteBufferSize.Text.TrimEx();
|
|
||||||
bool congestion = chkKcpcongestion.Checked;
|
|
||||||
|
|
||||||
if (Utils.IsNullOrEmpty(mtu) || !Utils.IsNumberic(mtu)
|
|
||||||
|| Utils.IsNullOrEmpty(tti) || !Utils.IsNumberic(tti)
|
|
||||||
|| Utils.IsNullOrEmpty(uplinkCapacity) || !Utils.IsNumberic(uplinkCapacity)
|
|
||||||
|| Utils.IsNullOrEmpty(downlinkCapacity) || !Utils.IsNumberic(downlinkCapacity)
|
|
||||||
|| Utils.IsNullOrEmpty(readBufferSize) || !Utils.IsNumberic(readBufferSize)
|
|
||||||
|| Utils.IsNullOrEmpty(writeBufferSize) || !Utils.IsNumberic(writeBufferSize))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.FillKcpParameters);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
config.kcpItem.mtu = Utils.ToInt(mtu);
|
|
||||||
config.kcpItem.tti = Utils.ToInt(tti);
|
|
||||||
config.kcpItem.uplinkCapacity = Utils.ToInt(uplinkCapacity);
|
|
||||||
config.kcpItem.downlinkCapacity = Utils.ToInt(downlinkCapacity);
|
|
||||||
config.kcpItem.readBufferSize = Utils.ToInt(readBufferSize);
|
|
||||||
config.kcpItem.writeBufferSize = Utils.ToInt(writeBufferSize);
|
|
||||||
config.kcpItem.congestion = congestion;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 保存GUI设置
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
private int SaveGUI()
|
|
||||||
{
|
|
||||||
//开机自动启动
|
|
||||||
Utils.SetAutoRun(chkAutoRun.Checked);
|
|
||||||
|
|
||||||
bool lastEnableStatistics = config.enableStatistics;
|
|
||||||
config.enableStatistics = chkEnableStatistics.Checked;
|
|
||||||
config.statisticsFreshRate = Convert.ToInt32(numStatisticsFreshRate.Value);
|
|
||||||
|
|
||||||
config.keepOlderDedupl = chkKeepOlderDedupl.Checked;
|
|
||||||
|
|
||||||
config.ignoreGeoUpdateCore = chkIgnoreGeoUpdateCore.Checked;
|
|
||||||
config.uiItem.enableAutoAdjustMainLvColWidth = chkEnableAutoAdjustMainLvColWidth.Checked;
|
|
||||||
config.enableSecurityProtocolTls13 = chkEnableSecurityProtocolTls13.Checked;
|
|
||||||
|
|
||||||
config.autoUpdateInterval = Utils.ToInt(txtautoUpdateInterval.Text);
|
|
||||||
config.autoUpdateSubInterval = Utils.ToInt(txtautoUpdateSubInterval.Text);
|
|
||||||
config.trayMenuServersLimit = Utils.ToInt(txttrayMenuServersLimit.Text);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int SaveCoreType()
|
|
||||||
{
|
|
||||||
for (int k = 1; k <= config.coreTypeItem.Count; k++)
|
|
||||||
{
|
|
||||||
var item = config.coreTypeItem[k - 1];
|
|
||||||
item.coreType = (ECoreType)Enum.Parse(typeof(ECoreType), tabPageCoreType.Controls[$"cmbCoreType{k}"].Text);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void linkDnsObjectDoc_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
||||||
{
|
|
||||||
Process.Start("https://www.v2fly.org/config/dns.html#dnsobject");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnSetLoopback_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Process.Start(Utils.GetPath("EnableLoopback.exe"));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,382 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>53, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label16.Text" xml:space="preserve">
|
|
||||||
<value>认证密码</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>219, 65</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>认证用户名</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkdefAllowInsecure.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>15, 208</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkdefAllowInsecure.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>324, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkdefAllowInsecure.Text" xml:space="preserve">
|
|
||||||
<value>传输层安全选tls时,默认跳过证书验证(allowInsecure)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAllowLANConn.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>144, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAllowLANConn.Text" xml:space="preserve">
|
|
||||||
<value>允许来自局域网的连接</value>
|
|
||||||
</data>
|
|
||||||
<data name="chksniffingEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>96, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chksniffingEnabled.Text" xml:space="preserve">
|
|
||||||
<value>开启流量探测</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkmuxEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>15, 145</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkmuxEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>114, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkmuxEnabled.Text" xml:space="preserve">
|
|
||||||
<value>开启Mux多路复用</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>219, 29</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>29, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>协议</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkudpEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>66, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkudpEnabled.Text" xml:space="preserve">
|
|
||||||
<value>开启UDP</value>
|
|
||||||
</data>
|
|
||||||
<data name="chklogEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>15, 176</value>
|
|
||||||
</data>
|
|
||||||
<data name="chklogEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>156, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chklogEnabled.Text" xml:space="preserve">
|
|
||||||
<value>记录本地日志(默认关闭)</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbloglevel.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>257, 174</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>193, 178</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>53, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>日志等级</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>77, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>本地监听端口</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>648, 437</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage1.Text" xml:space="preserve">
|
|
||||||
<value> Core:基础设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="linkDnsObjectDoc.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>161, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkDnsObjectDoc.Text" xml:space="preserve">
|
|
||||||
<value>支持填写DnsObject,JSON格式</value>
|
|
||||||
</data>
|
|
||||||
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>191, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label14.Text" xml:space="preserve">
|
|
||||||
<value>自定义DNS(可多个,用逗号(,)隔开)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Text" xml:space="preserve">
|
|
||||||
<value> Core:DNS设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage6.Text" xml:space="preserve">
|
|
||||||
<value> Core:KCP设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="numStatisticsFreshRate.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>472, 37</value>
|
|
||||||
</data>
|
|
||||||
<data name="txttrayMenuServersLimit.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>248, 211</value>
|
|
||||||
</data>
|
|
||||||
<data name="label17.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>185, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label17.Text" xml:space="preserve">
|
|
||||||
<value>托盘右键菜单服务器展示数量限制</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtautoUpdateSubInterval.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>248, 184</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>173, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>自动更新订阅的间隔(单位小时)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnableSecurityProtocolTls13.Text" xml:space="preserve">
|
|
||||||
<value>启用安全协议TLS v1.3 (订阅/检查更新/测速)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnableAutoAdjustMainLvColWidth.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>204, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnableAutoAdjustMainLvColWidth.Text" xml:space="preserve">
|
|
||||||
<value>自动调整服务器列宽在更新订阅后</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnSetLoopback.Text" xml:space="preserve">
|
|
||||||
<value>解除Windows10 UWP应用回环代理限制</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtautoUpdateInterval.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>248, 157</value>
|
|
||||||
</data>
|
|
||||||
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>191, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label15.Text" xml:space="preserve">
|
|
||||||
<value>自动更新Geo文件的间隔(单位小时)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkIgnoreGeoUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>150, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkIgnoreGeoUpdateCore.Text" xml:space="preserve">
|
|
||||||
<value>更新Core时忽略Geo文件</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkKeepOlderDedupl.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>156, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkKeepOlderDedupl.Text" xml:space="preserve">
|
|
||||||
<value>去重时保留序号较小的项</value>
|
|
||||||
</data>
|
|
||||||
<data name="lbFreshrate.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>339, 41</value>
|
|
||||||
</data>
|
|
||||||
<data name="lbFreshrate.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>125, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="lbFreshrate.Text" xml:space="preserve">
|
|
||||||
<value>统计刷新频率(单位秒)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnableStatistics.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnableStatistics.Text" xml:space="preserve">
|
|
||||||
<value>启用统计(实时网速显示和使用流量显示,需要重启)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoRun.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>180, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoRun.Text" xml:space="preserve">
|
|
||||||
<value>开机自动启动(可能会不成功)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage7.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage7.Text" xml:space="preserve">
|
|
||||||
<value> v2rayN设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPageCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPageCoreType.Text" xml:space="preserve">
|
|
||||||
<value> Core类型设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="label18.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>173, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label18.Text" xml:space="preserve">
|
|
||||||
<value>高级代理设置, 协议选择(可选)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>95, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Text" xml:space="preserve">
|
|
||||||
<value>使用分号(;)分隔</value>
|
|
||||||
</data>
|
|
||||||
<data name="label12.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>239, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label12.Text" xml:space="preserve">
|
|
||||||
<value>对于下列字符开头的地址不使用代理服务器:</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.Text" xml:space="preserve">
|
|
||||||
<value>例外</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage3.Text" xml:space="preserve">
|
|
||||||
<value> 系统代理设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>662, 469</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 479</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>662, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>662, 10</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>662, 539</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>参数设置</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
68
v2rayN/v2rayN/Forms/QRCodeControl.Designer.cs
generated
68
v2rayN/v2rayN/Forms/QRCodeControl.Designer.cs
generated
@@ -1,68 +0,0 @@
|
|||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class QRCodeControl
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 必需的设计器变量。
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清理所有正在使用的资源。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 组件设计器生成的代码
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 设计器支持所需的方法 - 不要
|
|
||||||
/// 使用代码编辑器修改此方法的内容。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(QRCodeControl));
|
|
||||||
this.txtUrl = new System.Windows.Forms.TextBox();
|
|
||||||
this.picQRCode = new System.Windows.Forms.PictureBox();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.picQRCode)).BeginInit();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// txtUrl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtUrl, "txtUrl");
|
|
||||||
this.txtUrl.Name = "txtUrl";
|
|
||||||
this.txtUrl.ReadOnly = true;
|
|
||||||
//
|
|
||||||
// picQRCode
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.picQRCode, "picQRCode");
|
|
||||||
this.picQRCode.Name = "picQRCode";
|
|
||||||
this.picQRCode.TabStop = false;
|
|
||||||
//
|
|
||||||
// QRCodeControl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.Controls.Add(this.picQRCode);
|
|
||||||
this.Controls.Add(this.txtUrl);
|
|
||||||
this.Name = "QRCodeControl";
|
|
||||||
this.Load += new System.EventHandler(this.QRCodeControl_Load);
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.picQRCode)).EndInit();
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
this.PerformLayout();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.TextBox txtUrl;
|
|
||||||
private System.Windows.Forms.PictureBox picQRCode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class QRCodeControl : UserControl
|
|
||||||
{
|
|
||||||
public QRCodeControl()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
private void QRCodeControl_Load(object sender, System.EventArgs e)
|
|
||||||
{
|
|
||||||
txtUrl.MouseUp += txtUrl_MouseUp;
|
|
||||||
}
|
|
||||||
|
|
||||||
void txtUrl_MouseUp(object sender, MouseEventArgs e)
|
|
||||||
{
|
|
||||||
txtUrl.SelectAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void showQRCode(VmessItem item)
|
|
||||||
{
|
|
||||||
if (item != null)
|
|
||||||
{
|
|
||||||
string url = ShareHandler.GetShareUrl(item);
|
|
||||||
if (Utils.IsNullOrEmpty(url))
|
|
||||||
{
|
|
||||||
picQRCode.Image = null;
|
|
||||||
txtUrl.Text = string.Empty;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
txtUrl.Text = url;
|
|
||||||
picQRCode.Image = QRCodeHelper.GetQRCode(url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,192 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="txtUrl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 371</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="txtUrl.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>356, 70</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Name" xml:space="preserve">
|
|
||||||
<value>txtUrl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>356, 371</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
|
|
||||||
<value>Zoom</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>24</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>picQRCode.Name" xml:space="preserve">
|
|
||||||
<value>picQRCode</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>picQRCode.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>picQRCode.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>picQRCode.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>356, 441</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>QRCodeControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
@@ -1,120 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
</root>
|
|
||||||
@@ -1,271 +0,0 @@
|
|||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class RoutingRuleSettingDetailsForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingRuleSettingDetailsForm));
|
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
|
||||||
this.panel3 = new System.Windows.Forms.Panel();
|
|
||||||
this.chkEnabled = new System.Windows.Forms.CheckBox();
|
|
||||||
this.clbInboundTag = new System.Windows.Forms.CheckedListBox();
|
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
|
||||||
this.clbProtocol = new System.Windows.Forms.CheckedListBox();
|
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
|
||||||
this.txtPort = new System.Windows.Forms.TextBox();
|
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
|
||||||
this.labRoutingTips = new System.Windows.Forms.Label();
|
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbOutboundTag = new System.Windows.Forms.ComboBox();
|
|
||||||
this.panel4 = new System.Windows.Forms.Panel();
|
|
||||||
this.chkAutoSort = new System.Windows.Forms.CheckBox();
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
|
||||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.txtIP = new System.Windows.Forms.TextBox();
|
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.txtDomain = new System.Windows.Forms.TextBox();
|
|
||||||
this.linkRuleobjectDoc = new System.Windows.Forms.LinkLabel();
|
|
||||||
this.panel3.SuspendLayout();
|
|
||||||
this.panel4.SuspendLayout();
|
|
||||||
this.panel2.SuspendLayout();
|
|
||||||
this.groupBox2.SuspendLayout();
|
|
||||||
this.groupBox1.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel1, "panel1");
|
|
||||||
this.panel1.Name = "panel1";
|
|
||||||
//
|
|
||||||
// panel3
|
|
||||||
//
|
|
||||||
this.panel3.Controls.Add(this.linkRuleobjectDoc);
|
|
||||||
this.panel3.Controls.Add(this.chkEnabled);
|
|
||||||
this.panel3.Controls.Add(this.clbInboundTag);
|
|
||||||
this.panel3.Controls.Add(this.label2);
|
|
||||||
this.panel3.Controls.Add(this.clbProtocol);
|
|
||||||
this.panel3.Controls.Add(this.label3);
|
|
||||||
this.panel3.Controls.Add(this.txtPort);
|
|
||||||
this.panel3.Controls.Add(this.label1);
|
|
||||||
this.panel3.Controls.Add(this.labRoutingTips);
|
|
||||||
this.panel3.Controls.Add(this.label4);
|
|
||||||
this.panel3.Controls.Add(this.cmbOutboundTag);
|
|
||||||
resources.ApplyResources(this.panel3, "panel3");
|
|
||||||
this.panel3.Name = "panel3";
|
|
||||||
//
|
|
||||||
// chkEnabled
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkEnabled, "chkEnabled");
|
|
||||||
this.chkEnabled.Name = "chkEnabled";
|
|
||||||
this.chkEnabled.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// clbInboundTag
|
|
||||||
//
|
|
||||||
this.clbInboundTag.CheckOnClick = true;
|
|
||||||
resources.ApplyResources(this.clbInboundTag, "clbInboundTag");
|
|
||||||
this.clbInboundTag.FormattingEnabled = true;
|
|
||||||
this.clbInboundTag.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("clbInboundTag.Items"),
|
|
||||||
resources.GetString("clbInboundTag.Items1"),
|
|
||||||
resources.GetString("clbInboundTag.Items2"),
|
|
||||||
resources.GetString("clbInboundTag.Items3")});
|
|
||||||
this.clbInboundTag.MultiColumn = true;
|
|
||||||
this.clbInboundTag.Name = "clbInboundTag";
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label2, "label2");
|
|
||||||
this.label2.Name = "label2";
|
|
||||||
//
|
|
||||||
// clbProtocol
|
|
||||||
//
|
|
||||||
this.clbProtocol.CheckOnClick = true;
|
|
||||||
resources.ApplyResources(this.clbProtocol, "clbProtocol");
|
|
||||||
this.clbProtocol.FormattingEnabled = true;
|
|
||||||
this.clbProtocol.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("clbProtocol.Items"),
|
|
||||||
resources.GetString("clbProtocol.Items1"),
|
|
||||||
resources.GetString("clbProtocol.Items2")});
|
|
||||||
this.clbProtocol.MultiColumn = true;
|
|
||||||
this.clbProtocol.Name = "clbProtocol";
|
|
||||||
//
|
|
||||||
// label3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label3, "label3");
|
|
||||||
this.label3.Name = "label3";
|
|
||||||
//
|
|
||||||
// txtPort
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtPort, "txtPort");
|
|
||||||
this.txtPort.Name = "txtPort";
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label1, "label1");
|
|
||||||
this.label1.Name = "label1";
|
|
||||||
//
|
|
||||||
// labRoutingTips
|
|
||||||
//
|
|
||||||
this.labRoutingTips.ForeColor = System.Drawing.Color.Brown;
|
|
||||||
resources.ApplyResources(this.labRoutingTips, "labRoutingTips");
|
|
||||||
this.labRoutingTips.Name = "labRoutingTips";
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label4, "label4");
|
|
||||||
this.label4.Name = "label4";
|
|
||||||
//
|
|
||||||
// cmbOutboundTag
|
|
||||||
//
|
|
||||||
this.cmbOutboundTag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbOutboundTag.FormattingEnabled = true;
|
|
||||||
this.cmbOutboundTag.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmbOutboundTag.Items"),
|
|
||||||
resources.GetString("cmbOutboundTag.Items1"),
|
|
||||||
resources.GetString("cmbOutboundTag.Items2")});
|
|
||||||
resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag");
|
|
||||||
this.cmbOutboundTag.Name = "cmbOutboundTag";
|
|
||||||
//
|
|
||||||
// panel4
|
|
||||||
//
|
|
||||||
this.panel4.Controls.Add(this.chkAutoSort);
|
|
||||||
this.panel4.Controls.Add(this.btnClose);
|
|
||||||
this.panel4.Controls.Add(this.btnOK);
|
|
||||||
resources.ApplyResources(this.panel4, "panel4");
|
|
||||||
this.panel4.Name = "panel4";
|
|
||||||
//
|
|
||||||
// chkAutoSort
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkAutoSort, "chkAutoSort");
|
|
||||||
this.chkAutoSort.Name = "chkAutoSort";
|
|
||||||
this.chkAutoSort.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// panel2
|
|
||||||
//
|
|
||||||
this.panel2.Controls.Add(this.groupBox2);
|
|
||||||
this.panel2.Controls.Add(this.groupBox1);
|
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Name = "panel2";
|
|
||||||
//
|
|
||||||
// groupBox2
|
|
||||||
//
|
|
||||||
this.groupBox2.Controls.Add(this.txtIP);
|
|
||||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
|
||||||
this.groupBox2.Name = "groupBox2";
|
|
||||||
this.groupBox2.TabStop = false;
|
|
||||||
//
|
|
||||||
// txtIP
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtIP, "txtIP");
|
|
||||||
this.txtIP.Name = "txtIP";
|
|
||||||
//
|
|
||||||
// groupBox1
|
|
||||||
//
|
|
||||||
this.groupBox1.Controls.Add(this.txtDomain);
|
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
|
||||||
this.groupBox1.TabStop = false;
|
|
||||||
//
|
|
||||||
// txtDomain
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtDomain, "txtDomain");
|
|
||||||
this.txtDomain.Name = "txtDomain";
|
|
||||||
//
|
|
||||||
// linkRuleobjectDoc
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.linkRuleobjectDoc, "linkRuleobjectDoc");
|
|
||||||
this.linkRuleobjectDoc.Name = "linkRuleobjectDoc";
|
|
||||||
this.linkRuleobjectDoc.TabStop = true;
|
|
||||||
this.linkRuleobjectDoc.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkRuleobjectDoc_LinkClicked);
|
|
||||||
//
|
|
||||||
// RoutingRuleSettingDetailsForm
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.panel2);
|
|
||||||
this.Controls.Add(this.panel4);
|
|
||||||
this.Controls.Add(this.panel3);
|
|
||||||
this.Controls.Add(this.panel1);
|
|
||||||
this.Name = "RoutingRuleSettingDetailsForm";
|
|
||||||
this.Load += new System.EventHandler(this.RoutingRuleSettingDetailsForm_Load);
|
|
||||||
this.panel3.ResumeLayout(false);
|
|
||||||
this.panel3.PerformLayout();
|
|
||||||
this.panel4.ResumeLayout(false);
|
|
||||||
this.panel4.PerformLayout();
|
|
||||||
this.panel2.ResumeLayout(false);
|
|
||||||
this.groupBox2.ResumeLayout(false);
|
|
||||||
this.groupBox2.PerformLayout();
|
|
||||||
this.groupBox1.ResumeLayout(false);
|
|
||||||
this.groupBox1.PerformLayout();
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.Panel panel1;
|
|
||||||
private System.Windows.Forms.Panel panel3;
|
|
||||||
private System.Windows.Forms.Label label4;
|
|
||||||
private System.Windows.Forms.ComboBox cmbOutboundTag;
|
|
||||||
private System.Windows.Forms.Panel panel4;
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox1;
|
|
||||||
private System.Windows.Forms.TextBox txtDomain;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox2;
|
|
||||||
private System.Windows.Forms.TextBox txtIP;
|
|
||||||
private System.Windows.Forms.Label labRoutingTips;
|
|
||||||
private System.Windows.Forms.Label label1;
|
|
||||||
private System.Windows.Forms.TextBox txtPort;
|
|
||||||
private System.Windows.Forms.Label label3;
|
|
||||||
private System.Windows.Forms.CheckedListBox clbProtocol;
|
|
||||||
private System.Windows.Forms.CheckedListBox clbInboundTag;
|
|
||||||
private System.Windows.Forms.Label label2;
|
|
||||||
private System.Windows.Forms.CheckBox chkEnabled;
|
|
||||||
private System.Windows.Forms.CheckBox chkAutoSort;
|
|
||||||
private System.Windows.Forms.LinkLabel linkRuleobjectDoc;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,148 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Base;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class RoutingRuleSettingDetailsForm : BaseForm
|
|
||||||
{
|
|
||||||
public RulesItem rulesItem
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RoutingRuleSettingDetailsForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RoutingRuleSettingDetailsForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (Utils.IsNullOrEmpty(rulesItem.outboundTag))
|
|
||||||
{
|
|
||||||
ClearBind();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
BindingData();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void EndBindingData()
|
|
||||||
{
|
|
||||||
if (rulesItem != null)
|
|
||||||
{
|
|
||||||
rulesItem.port = txtPort.Text.TrimEx();
|
|
||||||
|
|
||||||
var inboundTag = new List<String>();
|
|
||||||
for (int i = 0; i < clbInboundTag.Items.Count; i++)
|
|
||||||
{
|
|
||||||
if (clbInboundTag.GetItemChecked(i))
|
|
||||||
{
|
|
||||||
inboundTag.Add(clbInboundTag.Items[i].ToString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rulesItem.inboundTag = inboundTag;
|
|
||||||
rulesItem.outboundTag = cmbOutboundTag.Text;
|
|
||||||
if (chkAutoSort.Checked)
|
|
||||||
{
|
|
||||||
rulesItem.domain = Utils.String2ListSorted(txtDomain.Text);
|
|
||||||
rulesItem.ip = Utils.String2ListSorted(txtIP.Text);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
rulesItem.domain = Utils.String2List(txtDomain.Text);
|
|
||||||
rulesItem.ip = Utils.String2List(txtIP.Text);
|
|
||||||
}
|
|
||||||
|
|
||||||
var protocol = new List<string>();
|
|
||||||
for (int i = 0; i < clbProtocol.Items.Count; i++)
|
|
||||||
{
|
|
||||||
if (clbProtocol.GetItemChecked(i))
|
|
||||||
{
|
|
||||||
protocol.Add(clbProtocol.Items[i].ToString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rulesItem.protocol = protocol;
|
|
||||||
rulesItem.enabled = chkEnabled.Checked;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void BindingData()
|
|
||||||
{
|
|
||||||
if (rulesItem != null)
|
|
||||||
{
|
|
||||||
txtPort.Text = rulesItem.port ?? string.Empty;
|
|
||||||
cmbOutboundTag.Text = rulesItem.outboundTag;
|
|
||||||
txtDomain.Text = Utils.List2String(rulesItem.domain, true);
|
|
||||||
txtIP.Text = Utils.List2String(rulesItem.ip, true);
|
|
||||||
|
|
||||||
if (rulesItem.inboundTag != null)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < clbInboundTag.Items.Count; i++)
|
|
||||||
{
|
|
||||||
if (rulesItem.inboundTag.Contains(clbInboundTag.Items[i].ToString()))
|
|
||||||
{
|
|
||||||
clbInboundTag.SetItemChecked(i, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rulesItem.protocol != null)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < clbProtocol.Items.Count; i++)
|
|
||||||
{
|
|
||||||
if (rulesItem.protocol.Contains(clbProtocol.Items[i].ToString()))
|
|
||||||
{
|
|
||||||
clbProtocol.SetItemChecked(i, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
chkEnabled.Checked = rulesItem.enabled;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void ClearBind()
|
|
||||||
{
|
|
||||||
txtPort.Text = string.Empty;
|
|
||||||
cmbOutboundTag.Text = Global.agentTag;
|
|
||||||
txtDomain.Text = string.Empty;
|
|
||||||
txtIP.Text = string.Empty;
|
|
||||||
chkEnabled.Checked = true;
|
|
||||||
}
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
EndBindingData();
|
|
||||||
|
|
||||||
bool hasRule =
|
|
||||||
rulesItem.domain != null
|
|
||||||
&& rulesItem.domain.Count > 0
|
|
||||||
|| rulesItem.ip != null
|
|
||||||
&& rulesItem.ip.Count > 0
|
|
||||||
|| rulesItem.protocol != null
|
|
||||||
&& rulesItem.protocol.Count > 0
|
|
||||||
|| !Utils.IsNullOrEmpty(rulesItem.port);
|
|
||||||
|
|
||||||
if (!hasRule)
|
|
||||||
{
|
|
||||||
UI.ShowWarning(string.Format(ResUI.RoutingRuleDetailRequiredTips, "Port/Protocol/Domain/IP"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void linkRuleobjectDoc_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
||||||
{
|
|
||||||
Process.Start("https://www.v2fly.org/config/routing.html#ruleobject");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,846 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Top</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>742, 10</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Name" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkRuleobjectDoc.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkRuleobjectDoc.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkRuleobjectDoc.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>19, 86</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkRuleobjectDoc.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>0, 0, 0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkRuleobjectDoc.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkRuleobjectDoc.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>43</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkRuleobjectDoc.Text" xml:space="preserve">
|
|
||||||
<value>Ruleobject Doc</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>linkRuleobjectDoc.Name" xml:space="preserve">
|
|
||||||
<value>linkRuleobjectDoc</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>linkRuleobjectDoc.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>linkRuleobjectDoc.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>linkRuleobjectDoc.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>632, 45</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>60, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>42</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.Text" xml:space="preserve">
|
|
||||||
<value>Enable</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkEnabled.Name" xml:space="preserve">
|
|
||||||
<value>chkEnabled</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkEnabled.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkEnabled.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkEnabled.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.ColumnWidth" type="System.Int32, mscorlib">
|
|
||||||
<value>80</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.Items" xml:space="preserve">
|
|
||||||
<value>socks</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.Items1" xml:space="preserve">
|
|
||||||
<value>http</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.Items2" xml:space="preserve">
|
|
||||||
<value>socks2</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.Items3" xml:space="preserve">
|
|
||||||
<value>http2</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>347, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>345, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>41</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbInboundTag.Name" xml:space="preserve">
|
|
||||||
<value>clbInboundTag</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbInboundTag.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.CheckedListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbInboundTag.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbInboundTag.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>274, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>40</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>inboundTag</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Name" xml:space="preserve">
|
|
||||||
<value>label2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbProtocol.ColumnWidth" type="System.Int32, mscorlib">
|
|
||||||
<value>80</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbProtocol.Items" xml:space="preserve">
|
|
||||||
<value>http</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbProtocol.Items1" xml:space="preserve">
|
|
||||||
<value>tls</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbProtocol.Items2" xml:space="preserve">
|
|
||||||
<value>bittorrent</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbProtocol.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>347, 43</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbProtocol.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>245, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbProtocol.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>39</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbProtocol.Name" xml:space="preserve">
|
|
||||||
<value>clbProtocol</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbProtocol.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.CheckedListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbProtocol.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbProtocol.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>274, 47</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>53, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>36</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>Protocol</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Name" xml:space="preserve">
|
|
||||||
<value>label3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPort.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>107, 43</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPort.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>119, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPort.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>35</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPort.Name" xml:space="preserve">
|
|
||||||
<value>txtPort</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPort.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPort.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPort.ZOrder" xml:space="preserve">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>19, 47</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>29, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>34</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>Port</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
|
||||||
<value>label1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRoutingTips.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRoutingTips.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>144, 86</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRoutingTips.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>575, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRoutingTips.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>33</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRoutingTips.Text" xml:space="preserve">
|
|
||||||
<value>*Set the rules, separated by commas (,); The comma in the regular is replaced by <COMMA></value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labRoutingTips.Name" xml:space="preserve">
|
|
||||||
<value>labRoutingTips</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labRoutingTips.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labRoutingTips.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labRoutingTips.ZOrder" xml:space="preserve">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>19, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>71, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>32</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>outboundTag</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Name" xml:space="preserve">
|
|
||||||
<value>label4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.ZOrder" xml:space="preserve">
|
|
||||||
<value>9</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbOutboundTag.Items" xml:space="preserve">
|
|
||||||
<value>proxy</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbOutboundTag.Items1" xml:space="preserve">
|
|
||||||
<value>direct</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbOutboundTag.Items2" xml:space="preserve">
|
|
||||||
<value>block</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbOutboundTag.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>107, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbOutboundTag.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>119, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbOutboundTag.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>31</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbOutboundTag.Name" xml:space="preserve">
|
|
||||||
<value>cmbOutboundTag</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbOutboundTag.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbOutboundTag.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbOutboundTag.ZOrder" xml:space="preserve">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Top</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 10</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>742, 111</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel3.Name" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel3.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel3.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel3.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkAutoSort.Name" xml:space="preserve">
|
|
||||||
<value>chkAutoSort</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkAutoSort.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkAutoSort.Parent" xml:space="preserve">
|
|
||||||
<value>panel4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkAutoSort.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
|
||||||
<value>btnClose</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
|
||||||
<value>panel4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel4.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel4.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 516</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>742, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel4.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel4.Name" xml:space="preserve">
|
|
||||||
<value>panel4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel4.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel4.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel4.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoSort.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoSort.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoSort.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>41, 18</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoSort.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>270, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoSort.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>41</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoSort.Text" xml:space="preserve">
|
|
||||||
<value>Domain and ip are auto sorted when saving</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkAutoSort.Name" xml:space="preserve">
|
|
||||||
<value>chkAutoSort</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkAutoSort.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkAutoSort.Parent" xml:space="preserve">
|
|
||||||
<value>panel4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkAutoSort.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>504, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>&Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
|
||||||
<value>btnClose</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
|
||||||
<value>panel4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>411, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>&OK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox2.Name" xml:space="preserve">
|
|
||||||
<value>groupBox2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox2.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox2.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Name" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 121</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>742, 395</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>11</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtIP.Name" xml:space="preserve">
|
|
||||||
<value>txtIP</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtIP.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtIP.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtIP.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>392, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>350, 395</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.Text" xml:space="preserve">
|
|
||||||
<value>IP</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox2.Name" xml:space="preserve">
|
|
||||||
<value>groupBox2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox2.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox2.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtIP.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtIP.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>3, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtIP.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtIP.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>344, 375</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtIP.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>25</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtIP.Name" xml:space="preserve">
|
|
||||||
<value>txtIP</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtIP.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtIP.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtIP.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtDomain.Name" xml:space="preserve">
|
|
||||||
<value>txtDomain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtDomain.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtDomain.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtDomain.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Left</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>392, 395</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>Domain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Name" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtDomain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtDomain.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>3, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtDomain.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtDomain.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>386, 375</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtDomain.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>24</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtDomain.Name" xml:space="preserve">
|
|
||||||
<value>txtDomain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtDomain.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtDomain.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtDomain.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>742, 576</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 4, 4, 4</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>RoutingSettingDetailsForm</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>RoutingRuleSettingDetailsForm</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
@@ -1,179 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="chkEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>670, 18</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>372, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>272, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>279, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbProtocol.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>372, 46</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbProtocol.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>272, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>279, 50</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPort.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>120, 46</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>19, 50</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRoutingTips.Text" xml:space="preserve">
|
|
||||||
<value>*设置的路由规则,用逗号(,)分隔;正则中的逗号用<COMMA>替代</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>OutboundTag</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbOutboundTag.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>120, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="txtIP.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
|
|
||||||
<value>Vertical</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtDomain.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
|
|
||||||
<value>Vertical</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>路由规则详情设置</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoSort.Text" xml:space="preserve">
|
|
||||||
<value>保存时Domain和IP自动排序</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkRuleobjectDoc.Text" xml:space="preserve">
|
|
||||||
<value>规则详细说明文档</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
357
v2rayN/v2rayN/Forms/RoutingRuleSettingForm.Designer.cs
generated
357
v2rayN/v2rayN/Forms/RoutingRuleSettingForm.Designer.cs
generated
@@ -1,357 +0,0 @@
|
|||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class RoutingRuleSettingForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
this.components = new System.ComponentModel.Container();
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingRuleSettingForm));
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
|
||||||
this.label5 = new System.Windows.Forms.Label();
|
|
||||||
this.btnBrowse = new System.Windows.Forms.Button();
|
|
||||||
this.txtCustomIcon = new System.Windows.Forms.TextBox();
|
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
|
||||||
this.txtUrl = new System.Windows.Forms.TextBox();
|
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
|
||||||
this.txtRemarks = new System.Windows.Forms.TextBox();
|
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
|
||||||
this.lvRoutings = new v2rayN.Base.ListViewFlickerFree();
|
|
||||||
this.cmsLv = new System.Windows.Forms.ContextMenuStrip(this.components);
|
|
||||||
this.menuAdd = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuRemove = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuSelectAll = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuExportSelectedRules = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.menuMoveTop = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMoveUp = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMoveDown = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMoveBottom = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.MenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tabControl2 = new System.Windows.Forms.TabControl();
|
|
||||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
|
||||||
this.menuServer = new System.Windows.Forms.MenuStrip();
|
|
||||||
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuImportRulesFromFile = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuImportRulesFromClipboard = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuImportRulesFromUrl = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.panel2.SuspendLayout();
|
|
||||||
this.panel1.SuspendLayout();
|
|
||||||
this.cmsLv.SuspendLayout();
|
|
||||||
this.tabControl2.SuspendLayout();
|
|
||||||
this.tabPage2.SuspendLayout();
|
|
||||||
this.menuServer.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// panel2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
|
||||||
this.panel2.Name = "panel2";
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel1, "panel1");
|
|
||||||
this.panel1.Controls.Add(this.label5);
|
|
||||||
this.panel1.Controls.Add(this.btnBrowse);
|
|
||||||
this.panel1.Controls.Add(this.txtCustomIcon);
|
|
||||||
this.panel1.Controls.Add(this.label4);
|
|
||||||
this.panel1.Controls.Add(this.label1);
|
|
||||||
this.panel1.Controls.Add(this.txtUrl);
|
|
||||||
this.panel1.Controls.Add(this.label3);
|
|
||||||
this.panel1.Controls.Add(this.txtRemarks);
|
|
||||||
this.panel1.Controls.Add(this.label2);
|
|
||||||
this.panel1.Name = "panel1";
|
|
||||||
//
|
|
||||||
// label5
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label5, "label5");
|
|
||||||
this.label5.Name = "label5";
|
|
||||||
//
|
|
||||||
// btnBrowse
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnBrowse, "btnBrowse");
|
|
||||||
this.btnBrowse.Name = "btnBrowse";
|
|
||||||
this.btnBrowse.UseVisualStyleBackColor = true;
|
|
||||||
this.btnBrowse.Click += new System.EventHandler(this.btnBrowse_Click);
|
|
||||||
//
|
|
||||||
// txtCustomIcon
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtCustomIcon, "txtCustomIcon");
|
|
||||||
this.txtCustomIcon.Name = "txtCustomIcon";
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label4, "label4");
|
|
||||||
this.label4.Name = "label4";
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label1, "label1");
|
|
||||||
this.label1.Name = "label1";
|
|
||||||
//
|
|
||||||
// txtUrl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtUrl, "txtUrl");
|
|
||||||
this.txtUrl.Name = "txtUrl";
|
|
||||||
//
|
|
||||||
// label3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label3, "label3");
|
|
||||||
this.label3.Name = "label3";
|
|
||||||
//
|
|
||||||
// txtRemarks
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtRemarks, "txtRemarks");
|
|
||||||
this.txtRemarks.Name = "txtRemarks";
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label2, "label2");
|
|
||||||
this.label2.Name = "label2";
|
|
||||||
//
|
|
||||||
// lvRoutings
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.lvRoutings, "lvRoutings");
|
|
||||||
this.lvRoutings.ContextMenuStrip = this.cmsLv;
|
|
||||||
this.lvRoutings.FullRowSelect = true;
|
|
||||||
this.lvRoutings.GridLines = true;
|
|
||||||
this.lvRoutings.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
|
||||||
this.lvRoutings.HideSelection = false;
|
|
||||||
this.lvRoutings.Items.AddRange(new System.Windows.Forms.ListViewItem[] {
|
|
||||||
((System.Windows.Forms.ListViewItem)(resources.GetObject("lvRoutings.Items")))});
|
|
||||||
this.lvRoutings.MultiSelect = false;
|
|
||||||
this.lvRoutings.Name = "lvRoutings";
|
|
||||||
this.lvRoutings.UseCompatibleStateImageBehavior = false;
|
|
||||||
this.lvRoutings.View = System.Windows.Forms.View.Details;
|
|
||||||
this.lvRoutings.DoubleClick += new System.EventHandler(this.lvRoutings_DoubleClick);
|
|
||||||
this.lvRoutings.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lvRoutings_KeyDown);
|
|
||||||
//
|
|
||||||
// cmsLv
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmsLv, "cmsLv");
|
|
||||||
this.cmsLv.ImageScalingSize = new System.Drawing.Size(20, 20);
|
|
||||||
this.cmsLv.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.menuAdd,
|
|
||||||
this.menuRemove,
|
|
||||||
this.menuSelectAll,
|
|
||||||
this.menuExportSelectedRules,
|
|
||||||
this.toolStripSeparator3,
|
|
||||||
this.menuMoveTop,
|
|
||||||
this.menuMoveUp,
|
|
||||||
this.menuMoveDown,
|
|
||||||
this.menuMoveBottom});
|
|
||||||
this.cmsLv.Name = "cmsLv";
|
|
||||||
this.cmsLv.OwnerItem = this.MenuItem1;
|
|
||||||
//
|
|
||||||
// menuAdd
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuAdd, "menuAdd");
|
|
||||||
this.menuAdd.Name = "menuAdd";
|
|
||||||
this.menuAdd.Click += new System.EventHandler(this.menuAdd_Click);
|
|
||||||
//
|
|
||||||
// menuRemove
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuRemove, "menuRemove");
|
|
||||||
this.menuRemove.Name = "menuRemove";
|
|
||||||
this.menuRemove.Click += new System.EventHandler(this.menuRemove_Click);
|
|
||||||
//
|
|
||||||
// menuSelectAll
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuSelectAll, "menuSelectAll");
|
|
||||||
this.menuSelectAll.Name = "menuSelectAll";
|
|
||||||
this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click);
|
|
||||||
//
|
|
||||||
// menuExportSelectedRules
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuExportSelectedRules, "menuExportSelectedRules");
|
|
||||||
this.menuExportSelectedRules.Name = "menuExportSelectedRules";
|
|
||||||
this.menuExportSelectedRules.Click += new System.EventHandler(this.menuExportSelectedRules_Click);
|
|
||||||
//
|
|
||||||
// toolStripSeparator3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3");
|
|
||||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
|
||||||
//
|
|
||||||
// menuMoveTop
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMoveTop, "menuMoveTop");
|
|
||||||
this.menuMoveTop.Name = "menuMoveTop";
|
|
||||||
this.menuMoveTop.Click += new System.EventHandler(this.menuMoveTop_Click);
|
|
||||||
//
|
|
||||||
// menuMoveUp
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMoveUp, "menuMoveUp");
|
|
||||||
this.menuMoveUp.Name = "menuMoveUp";
|
|
||||||
this.menuMoveUp.Click += new System.EventHandler(this.menuMoveUp_Click);
|
|
||||||
//
|
|
||||||
// menuMoveDown
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMoveDown, "menuMoveDown");
|
|
||||||
this.menuMoveDown.Name = "menuMoveDown";
|
|
||||||
this.menuMoveDown.Click += new System.EventHandler(this.menuMoveDown_Click);
|
|
||||||
//
|
|
||||||
// menuMoveBottom
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMoveBottom, "menuMoveBottom");
|
|
||||||
this.menuMoveBottom.Name = "menuMoveBottom";
|
|
||||||
this.menuMoveBottom.Click += new System.EventHandler(this.menuMoveBottom_Click);
|
|
||||||
//
|
|
||||||
// MenuItem1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.MenuItem1, "MenuItem1");
|
|
||||||
this.MenuItem1.DropDown = this.cmsLv;
|
|
||||||
this.MenuItem1.Name = "MenuItem1";
|
|
||||||
//
|
|
||||||
// tabControl2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.tabControl2, "tabControl2");
|
|
||||||
this.tabControl2.Controls.Add(this.tabPage2);
|
|
||||||
this.tabControl2.Name = "tabControl2";
|
|
||||||
this.tabControl2.SelectedIndex = 0;
|
|
||||||
//
|
|
||||||
// tabPage2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.tabPage2, "tabPage2");
|
|
||||||
this.tabPage2.Controls.Add(this.lvRoutings);
|
|
||||||
this.tabPage2.Name = "tabPage2";
|
|
||||||
this.tabPage2.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// menuServer
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuServer, "menuServer");
|
|
||||||
this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.MenuItem1,
|
|
||||||
this.toolStripMenuItem1});
|
|
||||||
this.menuServer.Name = "menuServer";
|
|
||||||
//
|
|
||||||
// toolStripMenuItem1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1");
|
|
||||||
this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.menuImportRulesFromFile,
|
|
||||||
this.menuImportRulesFromClipboard,
|
|
||||||
this.menuImportRulesFromUrl});
|
|
||||||
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
|
||||||
//
|
|
||||||
// menuImportRulesFromFile
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuImportRulesFromFile, "menuImportRulesFromFile");
|
|
||||||
this.menuImportRulesFromFile.Name = "menuImportRulesFromFile";
|
|
||||||
this.menuImportRulesFromFile.Click += new System.EventHandler(this.menuImportRulesFromFile_Click);
|
|
||||||
//
|
|
||||||
// menuImportRulesFromClipboard
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuImportRulesFromClipboard, "menuImportRulesFromClipboard");
|
|
||||||
this.menuImportRulesFromClipboard.Name = "menuImportRulesFromClipboard";
|
|
||||||
this.menuImportRulesFromClipboard.Click += new System.EventHandler(this.menuImportRulesFromClipboard_Click);
|
|
||||||
//
|
|
||||||
// menuImportRulesFromUrl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuImportRulesFromUrl, "menuImportRulesFromUrl");
|
|
||||||
this.menuImportRulesFromUrl.Name = "menuImportRulesFromUrl";
|
|
||||||
this.menuImportRulesFromUrl.Click += new System.EventHandler(this.menuImportRulesFromUrl_Click);
|
|
||||||
//
|
|
||||||
// RoutingRuleSettingForm
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.tabControl2);
|
|
||||||
this.Controls.Add(this.panel1);
|
|
||||||
this.Controls.Add(this.panel2);
|
|
||||||
this.Controls.Add(this.menuServer);
|
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
|
||||||
this.Name = "RoutingRuleSettingForm";
|
|
||||||
this.Load += new System.EventHandler(this.RoutingRuleSettingForm_Load);
|
|
||||||
this.panel2.ResumeLayout(false);
|
|
||||||
this.panel1.ResumeLayout(false);
|
|
||||||
this.panel1.PerformLayout();
|
|
||||||
this.cmsLv.ResumeLayout(false);
|
|
||||||
this.tabControl2.ResumeLayout(false);
|
|
||||||
this.tabPage2.ResumeLayout(false);
|
|
||||||
this.menuServer.ResumeLayout(false);
|
|
||||||
this.menuServer.PerformLayout();
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
this.PerformLayout();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.Panel panel1;
|
|
||||||
private Base.ListViewFlickerFree lvRoutings;
|
|
||||||
private System.Windows.Forms.TabControl tabControl2;
|
|
||||||
private System.Windows.Forms.TabPage tabPage2;
|
|
||||||
private System.Windows.Forms.ContextMenuStrip cmsLv;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuRemove;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMoveTop;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMoveUp;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMoveDown;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMoveBottom;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuSelectAll;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuAdd;
|
|
||||||
private System.Windows.Forms.MenuStrip menuServer;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem MenuItem1;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuImportRulesFromFile;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuImportRulesFromClipboard;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuExportSelectedRules;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuImportRulesFromUrl;
|
|
||||||
private System.Windows.Forms.TextBox txtRemarks;
|
|
||||||
private System.Windows.Forms.Label label2;
|
|
||||||
private System.Windows.Forms.TextBox txtUrl;
|
|
||||||
private System.Windows.Forms.Label label3;
|
|
||||||
private System.Windows.Forms.Label label1;
|
|
||||||
private System.Windows.Forms.TextBox txtCustomIcon;
|
|
||||||
private System.Windows.Forms.Label label4;
|
|
||||||
private System.Windows.Forms.Button btnBrowse;
|
|
||||||
private System.Windows.Forms.Label label5;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,365 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Base;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class RoutingRuleSettingForm : BaseForm
|
|
||||||
{
|
|
||||||
public int EditIndex
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
protected RoutingItem routingItem;
|
|
||||||
|
|
||||||
private readonly List<int> lvSelecteds = new List<int>();
|
|
||||||
public RoutingRuleSettingForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RoutingRuleSettingForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
routingItem = EditIndex >= 0 ? config.routings[EditIndex] : new RoutingItem();
|
|
||||||
if (routingItem.rules == null)
|
|
||||||
{
|
|
||||||
routingItem.rules = new List<RulesItem>();
|
|
||||||
}
|
|
||||||
|
|
||||||
txtRemarks.Text = routingItem.remarks ?? string.Empty;
|
|
||||||
txtUrl.Text = routingItem.url ?? string.Empty;
|
|
||||||
txtCustomIcon.Text = routingItem.customIcon ?? string.Empty;
|
|
||||||
|
|
||||||
InitRoutingsView();
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void InitRoutingsView()
|
|
||||||
{
|
|
||||||
lvRoutings.BeginUpdate();
|
|
||||||
lvRoutings.Items.Clear();
|
|
||||||
|
|
||||||
lvRoutings.GridLines = true;
|
|
||||||
lvRoutings.FullRowSelect = true;
|
|
||||||
lvRoutings.View = View.Details;
|
|
||||||
lvRoutings.MultiSelect = true;
|
|
||||||
lvRoutings.HeaderStyle = ColumnHeaderStyle.Clickable;
|
|
||||||
lvRoutings.RegisterDragEvent(UpdateDragEventHandler);
|
|
||||||
|
|
||||||
lvRoutings.Columns.Add("", 30);
|
|
||||||
lvRoutings.Columns.Add("outboundTag", 80);
|
|
||||||
lvRoutings.Columns.Add("port", 80);
|
|
||||||
lvRoutings.Columns.Add("protocol", 80);
|
|
||||||
lvRoutings.Columns.Add("inboundTag", 80);
|
|
||||||
lvRoutings.Columns.Add("domain", 160);
|
|
||||||
lvRoutings.Columns.Add("ip", 160);
|
|
||||||
lvRoutings.Columns.Add("enable", 60);
|
|
||||||
|
|
||||||
lvRoutings.EndUpdate();
|
|
||||||
}
|
|
||||||
private void UpdateDragEventHandler(int index, int targetIndex)
|
|
||||||
{
|
|
||||||
if (index < 0 || targetIndex < 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (ConfigHandler.MoveRoutingRule(ref routingItem, index, EMove.Position, targetIndex) == 0)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RefreshRoutingsView()
|
|
||||||
{
|
|
||||||
lvRoutings.BeginUpdate();
|
|
||||||
lvRoutings.Items.Clear();
|
|
||||||
|
|
||||||
foreach (var item in routingItem.rules)
|
|
||||||
{
|
|
||||||
ListViewItem lvItem = new ListViewItem("");
|
|
||||||
Utils.AddSubItem(lvItem, "outboundTag", item.outboundTag);
|
|
||||||
Utils.AddSubItem(lvItem, "port", item.port);
|
|
||||||
Utils.AddSubItem(lvItem, "protocol", Utils.List2String(item.protocol));
|
|
||||||
Utils.AddSubItem(lvItem, "inboundTag", Utils.List2String(item.inboundTag));
|
|
||||||
Utils.AddSubItem(lvItem, "domain", Utils.List2String(item.domain));
|
|
||||||
Utils.AddSubItem(lvItem, "ip", Utils.List2String(item.ip));
|
|
||||||
Utils.AddSubItem(lvItem, "enable", item.enabled.ToString());
|
|
||||||
|
|
||||||
if (lvItem != null) lvRoutings.Items.Add(lvItem);
|
|
||||||
}
|
|
||||||
lvRoutings.EndUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
routingItem.remarks = txtRemarks.Text.Trim();
|
|
||||||
routingItem.url = txtUrl.Text.Trim();
|
|
||||||
routingItem.customIcon = txtCustomIcon.Text.Trim();
|
|
||||||
|
|
||||||
if (ConfigHandler.AddRoutingItem(ref config, routingItem, EditIndex) == 0)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(ResUI.OperationFailed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
private void btnBrowse_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
OpenFileDialog openFileDialog1 = new OpenFileDialog();
|
|
||||||
openFileDialog1.Filter = "PNG|*.png";
|
|
||||||
openFileDialog1.ShowDialog();
|
|
||||||
txtCustomIcon.Text = openFileDialog1.FileName;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lvRoutings_DoubleClick(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
int index = GetLvSelectedIndex();
|
|
||||||
if (index < 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var fm = new RoutingRuleSettingDetailsForm();
|
|
||||||
fm.rulesItem = routingItem.rules[index];
|
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private int GetLvSelectedIndex()
|
|
||||||
{
|
|
||||||
int index = -1;
|
|
||||||
lvSelecteds.Clear();
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (lvRoutings.SelectedIndices.Count <= 0)
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.PleaseSelectRules);
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
|
|
||||||
index = lvRoutings.SelectedIndices[0];
|
|
||||||
foreach (int i in lvRoutings.SelectedIndices)
|
|
||||||
{
|
|
||||||
lvSelecteds.Add(i);
|
|
||||||
}
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Edit function
|
|
||||||
|
|
||||||
private void menuMoveTop_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
MoveRule(EMove.Top);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuMoveUp_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
MoveRule(EMove.Up);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuMoveDown_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
MoveRule(EMove.Down);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuMoveBottom_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
MoveRule(EMove.Bottom);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void MoveRule(EMove eMove)
|
|
||||||
{
|
|
||||||
int index = GetLvSelectedIndex();
|
|
||||||
if (index < 0)
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.PleaseSelectRules);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (ConfigHandler.MoveRoutingRule(ref routingItem, index, eMove) == 0)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void menuSelectAll_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
foreach (ListViewItem item in lvRoutings.Items)
|
|
||||||
{
|
|
||||||
item.Selected = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuAdd_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
var fm = new RoutingRuleSettingDetailsForm();
|
|
||||||
fm.rulesItem = new RulesItem();
|
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
routingItem.rules.Insert(0, fm.rulesItem);
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuRemove_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
int index = GetLvSelectedIndex();
|
|
||||||
if (index < 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (UI.ShowYesNo(ResUI.RemoveRules) == DialogResult.No)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (int k = lvSelecteds.Count - 1; k >= 0; k--)
|
|
||||||
{
|
|
||||||
routingItem.rules.RemoveAt(index);
|
|
||||||
}
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
private void menuExportSelectedRules_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
GetLvSelectedIndex();
|
|
||||||
var lst = new List<RulesItem>();
|
|
||||||
foreach (int v in lvSelecteds)
|
|
||||||
{
|
|
||||||
lst.Add(routingItem.rules[v]);
|
|
||||||
}
|
|
||||||
if (lst.Count > 0)
|
|
||||||
{
|
|
||||||
Utils.SetClipboardData(Utils.ToJson(lst));
|
|
||||||
//UI.Show(ResUI.OperationSuccess"));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lvRoutings_KeyDown(object sender, KeyEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.Control)
|
|
||||||
{
|
|
||||||
switch (e.KeyCode)
|
|
||||||
{
|
|
||||||
case Keys.A:
|
|
||||||
menuSelectAll_Click(null, null);
|
|
||||||
break;
|
|
||||||
case Keys.C:
|
|
||||||
menuExportSelectedRules_Click(null, null);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
switch (e.KeyCode)
|
|
||||||
{
|
|
||||||
case Keys.Delete:
|
|
||||||
menuRemove_Click(null, null);
|
|
||||||
break;
|
|
||||||
case Keys.T:
|
|
||||||
menuMoveTop_Click(null, null);
|
|
||||||
break;
|
|
||||||
case Keys.B:
|
|
||||||
menuMoveBottom_Click(null, null);
|
|
||||||
break;
|
|
||||||
case Keys.U:
|
|
||||||
menuMoveUp_Click(null, null);
|
|
||||||
break;
|
|
||||||
case Keys.D:
|
|
||||||
menuMoveDown_Click(null, null);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region preset rules
|
|
||||||
|
|
||||||
private void menuImportRulesFromFile_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
OpenFileDialog fileDialog = new OpenFileDialog
|
|
||||||
{
|
|
||||||
Multiselect = false,
|
|
||||||
Filter = "Rules|*.json|All|*.*"
|
|
||||||
};
|
|
||||||
if (fileDialog.ShowDialog() != DialogResult.OK)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
string fileName = fileDialog.FileName;
|
|
||||||
if (Utils.IsNullOrEmpty(fileName))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
string result = Utils.LoadResource(fileName);
|
|
||||||
if (Utils.IsNullOrEmpty(result))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (AddBatchRoutingRules(ref routingItem, result) == 0)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
UI.Show(ResUI.OperationSuccess);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuImportRulesFromClipboard_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string clipboardData = Utils.GetClipboardData();
|
|
||||||
if (AddBatchRoutingRules(ref routingItem, clipboardData) == 0)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
UI.Show(ResUI.OperationSuccess);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void menuImportRulesFromUrl_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
var url = txtUrl.Text.Trim();
|
|
||||||
if (Utils.IsNullOrEmpty(url))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.MsgNeedUrl);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Task.Run(async () =>
|
|
||||||
{
|
|
||||||
DownloadHandle downloadHandle = new DownloadHandle();
|
|
||||||
string result = await downloadHandle.DownloadStringAsync(url, false, "");
|
|
||||||
if (AddBatchRoutingRules(ref routingItem, result) == 0)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
UI.Show(ResUI.OperationSuccess);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
private int AddBatchRoutingRules(ref RoutingItem routingItem, string clipboardData)
|
|
||||||
{
|
|
||||||
bool blReplace = false;
|
|
||||||
if (UI.ShowYesNo(ResUI.AddBatchRoutingRulesYesNo) == DialogResult.No)
|
|
||||||
{
|
|
||||||
blReplace = true;
|
|
||||||
}
|
|
||||||
return ConfigHandler.AddBatchRoutingRules(ref routingItem, clipboardData, blReplace);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,785 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name=">>tabControl2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>199, 6</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="lvRoutings.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuImportRulesFromUrl.Name" xml:space="preserve">
|
|
||||||
<value>menuImportRulesFromUrl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Text" xml:space="preserve">
|
|
||||||
<value>Down (D)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>762, 25</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>32</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>47, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveBottom.Text" xml:space="preserve">
|
|
||||||
<value>Move to bottom (B)</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>40</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItem1.Text" xml:space="preserve">
|
|
||||||
<value>Edit and Function</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Name" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuServer.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMoveUp.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServer.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>15</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolStripSeparator3.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolStripMenuItem1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>4, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tabControl2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMoveBottom.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>Rule Settings</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemove.Text" xml:space="preserve">
|
|
||||||
<value>Remove selected</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tabPage2.Name" xml:space="preserve">
|
|
||||||
<value>tabPage2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExportSelectedRules.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>202, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>475, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>33</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>MenuItem1.Name" xml:space="preserve">
|
|
||||||
<value>MenuItem1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>754, 231</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tabControl2.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>568, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuAdd.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtCustomIcon.Name" xml:space="preserve">
|
|
||||||
<value>txtCustomIcon</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServer.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
|
||||||
<value>label1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>762, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>Sub Url</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>95, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>PNG(128*128)</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>120, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromUrl.Text" xml:space="preserve">
|
|
||||||
<value>Import Rules From Sub Url</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuSelectAll.Name" xml:space="preserve">
|
|
||||||
<value>menuSelectAll</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMoveTop.Name" xml:space="preserve">
|
|
||||||
<value>menuMoveTop</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveBottom.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>202, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmsLv.Name" xml:space="preserve">
|
|
||||||
<value>cmsLv</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAdd.Text" xml:space="preserve">
|
|
||||||
<value>Add</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvRoutings.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolStripSeparator3.Name" xml:space="preserve">
|
|
||||||
<value>toolStripSeparator3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Name" xml:space="preserve">
|
|
||||||
<value>label5</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>lvRoutings.Parent" xml:space="preserve">
|
|
||||||
<value>tabPage2</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>644, 48</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMoveBottom.Name" xml:space="preserve">
|
|
||||||
<value>menuMoveBottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 25</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 105</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 63</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromFile.Text" xml:space="preserve">
|
|
||||||
<value>Import Rules From File</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>202, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>762, 257</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>RoutingRuleSettingForm</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>166, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>202, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMoveTop.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuServer.Name" xml:space="preserve">
|
|
||||||
<value>menuServer</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuSelectAll.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuServer.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
|
||||||
<value>btnClose</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Text" xml:space="preserve">
|
|
||||||
<value>Up (U)</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>203, 186</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>47, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>14</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripMenuItem1.Text" xml:space="preserve">
|
|
||||||
<value>Import Rules</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>MenuItem1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvRoutings.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>3, 3</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>10, 117</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuImportRulesFromClipboard.Name" xml:space="preserve">
|
|
||||||
<value>menuImportRulesFromClipboard</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromClipboard.Text" xml:space="preserve">
|
|
||||||
<value>Import Rules From Clipboard</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuAdd.Name" xml:space="preserve">
|
|
||||||
<value>menuAdd</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 167</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromFile.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>247, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Text" xml:space="preserve">
|
|
||||||
<value>Move to top (T)</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuImportRulesFromUrl.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>762, 142</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Name" xml:space="preserve">
|
|
||||||
<value>txtUrl</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvRoutings.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>748, 225</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>660, 104</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuServer.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvRoutings.Items" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
|
||||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0
|
|
||||||
ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu
|
|
||||||
PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA
|
|
||||||
BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5
|
|
||||||
bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz
|
|
||||||
dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA
|
|
||||||
CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5
|
|
||||||
bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3
|
|
||||||
////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0
|
|
||||||
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>34</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtCustomIcon.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Name" xml:space="preserve">
|
|
||||||
<value>label4</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>&OK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromUrl.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>247, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>35</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>lvRoutings.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Base.ListViewFlickerFree, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>71, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 45</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>31</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>91, 45</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuImportRulesFromClipboard.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMoveDown.Name" xml:space="preserve">
|
|
||||||
<value>menuMoveDown</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAdd.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>202, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tabPage2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuImportRulesFromFile.Name" xml:space="preserve">
|
|
||||||
<value>menuImportRulesFromFile</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Name" xml:space="preserve">
|
|
||||||
<value>label3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>11</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
|
|
||||||
<value>Vertical</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Text" xml:space="preserve">
|
|
||||||
<value>&Browse</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtCustomIcon.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tabPage2.Parent" xml:space="preserve">
|
|
||||||
<value>tabControl2</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>Remarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>3, 3, 3, 3</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 424</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMoveUp.Name" xml:space="preserve">
|
|
||||||
<value>menuMoveUp</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Text" xml:space="preserve">
|
|
||||||
<value>RuleList</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolStripMenuItem1.Name" xml:space="preserve">
|
|
||||||
<value>toolStripMenuItem1</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtCustomIcon.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>563, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Text" xml:space="preserve">
|
|
||||||
<value>Select All (Ctrl+A)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>53, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 13</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtCustomIcon.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>37</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuExportSelectedRules.Name" xml:space="preserve">
|
|
||||||
<value>menuExportSelectedRules</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>Optional</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExportSelectedRules.Text" xml:space="preserve">
|
|
||||||
<value>Export Selected Rules</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>36</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>91, 13</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuRemove.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>247, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemove.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>202, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMoveDown.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>lvRoutings.Name" xml:space="preserve">
|
|
||||||
<value>lvRoutings</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>202, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtCustomIcon.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>91, 105</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Name" xml:space="preserve">
|
|
||||||
<value>label2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuRemove.Name" xml:space="preserve">
|
|
||||||
<value>menuRemove</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>762, 484</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuImportRulesFromFile.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.Name" xml:space="preserve">
|
|
||||||
<value>btnBrowse</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>39</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>202, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>&Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>77, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtCustomIcon.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tabControl2.Name" xml:space="preserve">
|
|
||||||
<value>tabControl2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tabPage2.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmsLv.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
|
||||||
<value>txtRemarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuExportSelectedRules.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>Custom icon</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>lvRoutings.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Top</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>25</value>
|
|
||||||
</metadata>
|
|
||||||
<metadata name="menuServer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>139, 17</value>
|
|
||||||
</metadata>
|
|
||||||
<metadata name="cmsLv.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>17, 17</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
|
||||||
@@ -1,300 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 501</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>785, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>785, 147</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>670, 104</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Text" xml:space="preserve">
|
|
||||||
<value>浏览(&B)</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtCustomIcon.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>101, 105</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>自定义图标</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>29, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>可选</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>101, 45</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>83, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>订阅地址(Url)</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>101, 13</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>29, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>别名</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAdd.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>196, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAdd.Text" xml:space="preserve">
|
|
||||||
<value>添加规则</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemove.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>196, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemove.Text" xml:space="preserve">
|
|
||||||
<value>移除所选规则</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>196, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Text" xml:space="preserve">
|
|
||||||
<value>全选</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExportSelectedRules.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>196, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExportSelectedRules.Text" xml:space="preserve">
|
|
||||||
<value>导出所选规则至剪贴板</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>193, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>196, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Text" xml:space="preserve">
|
|
||||||
<value>上移至顶 (T)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>196, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Text" xml:space="preserve">
|
|
||||||
<value>上移 (U)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>196, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Text" xml:space="preserve">
|
|
||||||
<value>下移 (D)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveBottom.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>196, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveBottom.Text" xml:space="preserve">
|
|
||||||
<value>下移至底 (B)</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>68, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItem1.Text" xml:space="preserve">
|
|
||||||
<value>规则功能</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>197, 186</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvRoutings.Items" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
|
||||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0
|
|
||||||
ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu
|
|
||||||
PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA
|
|
||||||
BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5
|
|
||||||
bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz
|
|
||||||
dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA
|
|
||||||
CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5
|
|
||||||
bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3
|
|
||||||
////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0
|
|
||||||
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvRoutings.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>771, 297</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 172</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>785, 329</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>777, 303</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Text" xml:space="preserve">
|
|
||||||
<value>规则列表</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>785, 25</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>68, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripMenuItem1.Text" xml:space="preserve">
|
|
||||||
<value>导入规则</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromFile.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromFile.Text" xml:space="preserve">
|
|
||||||
<value>从文件中导入规则</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromClipboard.Text" xml:space="preserve">
|
|
||||||
<value>从剪贴板中导入规则</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromUrl.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromUrl.Text" xml:space="preserve">
|
|
||||||
<value>从订阅Url中导入规则</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>785, 561</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>规则集设置</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
||||||
485
v2rayN/v2rayN/Forms/RoutingSettingForm.Designer.cs
generated
485
v2rayN/v2rayN/Forms/RoutingSettingForm.Designer.cs
generated
@@ -1,485 +0,0 @@
|
|||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class RoutingSettingForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
this.components = new System.ComponentModel.Container();
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingSettingForm));
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
|
||||||
this.labRoutingTips = new System.Windows.Forms.Label();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
|
||||||
this.cmbdomainMatcher = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label6 = new System.Windows.Forms.Label();
|
|
||||||
this.chkenableRoutingAdvanced = new System.Windows.Forms.CheckBox();
|
|
||||||
this.linkLabelRoutingDoc = new System.Windows.Forms.LinkLabel();
|
|
||||||
this.cmbdomainStrategy = new System.Windows.Forms.ComboBox();
|
|
||||||
this.cmsLv = new System.Windows.Forms.ContextMenuStrip(this.components);
|
|
||||||
this.menuAdd = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuRemove = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuSelectAll = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuSetDefaultRouting = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuImportAdvancedRules = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.MenuItemAdvanced = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuServer = new System.Windows.Forms.MenuStrip();
|
|
||||||
this.MenuItemBasic = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuImportBasicRules = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tabNormal = new System.Windows.Forms.TabControl();
|
|
||||||
this.tabPageProxy = new System.Windows.Forms.TabPage();
|
|
||||||
this.panel5 = new System.Windows.Forms.Panel();
|
|
||||||
this.groupBox5 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.txtProxyIp = new System.Windows.Forms.TextBox();
|
|
||||||
this.groupBox6 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.txtProxyDomain = new System.Windows.Forms.TextBox();
|
|
||||||
this.tabPageDirect = new System.Windows.Forms.TabPage();
|
|
||||||
this.panel4 = new System.Windows.Forms.Panel();
|
|
||||||
this.groupBox3 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.txtDirectIp = new System.Windows.Forms.TextBox();
|
|
||||||
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.txtDirectDomain = new System.Windows.Forms.TextBox();
|
|
||||||
this.tabPageBlock = new System.Windows.Forms.TabPage();
|
|
||||||
this.panel3 = new System.Windows.Forms.Panel();
|
|
||||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.txtBlockIp = new System.Windows.Forms.TextBox();
|
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.txtBlockDomain = new System.Windows.Forms.TextBox();
|
|
||||||
this.tabPageRuleList = new System.Windows.Forms.TabPage();
|
|
||||||
this.lvRoutings = new v2rayN.Base.ListViewFlickerFree();
|
|
||||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.panel2.SuspendLayout();
|
|
||||||
this.panel1.SuspendLayout();
|
|
||||||
this.cmsLv.SuspendLayout();
|
|
||||||
this.menuServer.SuspendLayout();
|
|
||||||
this.tabNormal.SuspendLayout();
|
|
||||||
this.tabPageProxy.SuspendLayout();
|
|
||||||
this.panel5.SuspendLayout();
|
|
||||||
this.groupBox5.SuspendLayout();
|
|
||||||
this.groupBox6.SuspendLayout();
|
|
||||||
this.tabPageDirect.SuspendLayout();
|
|
||||||
this.panel4.SuspendLayout();
|
|
||||||
this.groupBox3.SuspendLayout();
|
|
||||||
this.groupBox4.SuspendLayout();
|
|
||||||
this.tabPageBlock.SuspendLayout();
|
|
||||||
this.panel3.SuspendLayout();
|
|
||||||
this.groupBox2.SuspendLayout();
|
|
||||||
this.groupBox1.SuspendLayout();
|
|
||||||
this.tabPageRuleList.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// panel2
|
|
||||||
//
|
|
||||||
this.panel2.Controls.Add(this.labRoutingTips);
|
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Name = "panel2";
|
|
||||||
//
|
|
||||||
// labRoutingTips
|
|
||||||
//
|
|
||||||
this.labRoutingTips.ForeColor = System.Drawing.Color.Brown;
|
|
||||||
resources.ApplyResources(this.labRoutingTips, "labRoutingTips");
|
|
||||||
this.labRoutingTips.Name = "labRoutingTips";
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
this.panel1.Controls.Add(this.cmbdomainMatcher);
|
|
||||||
this.panel1.Controls.Add(this.label6);
|
|
||||||
this.panel1.Controls.Add(this.chkenableRoutingAdvanced);
|
|
||||||
this.panel1.Controls.Add(this.linkLabelRoutingDoc);
|
|
||||||
this.panel1.Controls.Add(this.cmbdomainStrategy);
|
|
||||||
resources.ApplyResources(this.panel1, "panel1");
|
|
||||||
this.panel1.Name = "panel1";
|
|
||||||
//
|
|
||||||
// cmbdomainMatcher
|
|
||||||
//
|
|
||||||
this.cmbdomainMatcher.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbdomainMatcher.FormattingEnabled = true;
|
|
||||||
this.cmbdomainMatcher.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmbdomainMatcher.Items"),
|
|
||||||
resources.GetString("cmbdomainMatcher.Items1")});
|
|
||||||
resources.ApplyResources(this.cmbdomainMatcher, "cmbdomainMatcher");
|
|
||||||
this.cmbdomainMatcher.Name = "cmbdomainMatcher";
|
|
||||||
//
|
|
||||||
// label6
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label6, "label6");
|
|
||||||
this.label6.Name = "label6";
|
|
||||||
//
|
|
||||||
// chkenableRoutingAdvanced
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkenableRoutingAdvanced, "chkenableRoutingAdvanced");
|
|
||||||
this.chkenableRoutingAdvanced.Name = "chkenableRoutingAdvanced";
|
|
||||||
this.chkenableRoutingAdvanced.UseVisualStyleBackColor = true;
|
|
||||||
this.chkenableRoutingAdvanced.CheckedChanged += new System.EventHandler(this.chkenableRoutingAdvanced_CheckedChanged_1);
|
|
||||||
//
|
|
||||||
// linkLabelRoutingDoc
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.linkLabelRoutingDoc, "linkLabelRoutingDoc");
|
|
||||||
this.linkLabelRoutingDoc.Name = "linkLabelRoutingDoc";
|
|
||||||
this.linkLabelRoutingDoc.TabStop = true;
|
|
||||||
this.linkLabelRoutingDoc.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabelRoutingDoc_LinkClicked);
|
|
||||||
//
|
|
||||||
// cmbdomainStrategy
|
|
||||||
//
|
|
||||||
this.cmbdomainStrategy.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbdomainStrategy.FormattingEnabled = true;
|
|
||||||
this.cmbdomainStrategy.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmbdomainStrategy.Items"),
|
|
||||||
resources.GetString("cmbdomainStrategy.Items1"),
|
|
||||||
resources.GetString("cmbdomainStrategy.Items2")});
|
|
||||||
resources.ApplyResources(this.cmbdomainStrategy, "cmbdomainStrategy");
|
|
||||||
this.cmbdomainStrategy.Name = "cmbdomainStrategy";
|
|
||||||
//
|
|
||||||
// cmsLv
|
|
||||||
//
|
|
||||||
this.cmsLv.ImageScalingSize = new System.Drawing.Size(20, 20);
|
|
||||||
this.cmsLv.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.menuAdd,
|
|
||||||
this.menuRemove,
|
|
||||||
this.menuSelectAll,
|
|
||||||
this.menuSetDefaultRouting,
|
|
||||||
this.toolStripSeparator1,
|
|
||||||
this.menuImportAdvancedRules});
|
|
||||||
this.cmsLv.Name = "cmsLv";
|
|
||||||
this.cmsLv.OwnerItem = this.MenuItemAdvanced;
|
|
||||||
resources.ApplyResources(this.cmsLv, "cmsLv");
|
|
||||||
//
|
|
||||||
// menuAdd
|
|
||||||
//
|
|
||||||
this.menuAdd.Name = "menuAdd";
|
|
||||||
resources.ApplyResources(this.menuAdd, "menuAdd");
|
|
||||||
this.menuAdd.Click += new System.EventHandler(this.menuAdd_Click);
|
|
||||||
//
|
|
||||||
// menuRemove
|
|
||||||
//
|
|
||||||
this.menuRemove.Name = "menuRemove";
|
|
||||||
resources.ApplyResources(this.menuRemove, "menuRemove");
|
|
||||||
this.menuRemove.Click += new System.EventHandler(this.menuRemove_Click);
|
|
||||||
//
|
|
||||||
// menuSelectAll
|
|
||||||
//
|
|
||||||
this.menuSelectAll.Name = "menuSelectAll";
|
|
||||||
resources.ApplyResources(this.menuSelectAll, "menuSelectAll");
|
|
||||||
this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click);
|
|
||||||
//
|
|
||||||
// menuSetDefaultRouting
|
|
||||||
//
|
|
||||||
this.menuSetDefaultRouting.Name = "menuSetDefaultRouting";
|
|
||||||
resources.ApplyResources(this.menuSetDefaultRouting, "menuSetDefaultRouting");
|
|
||||||
this.menuSetDefaultRouting.Click += new System.EventHandler(this.menuSetDefaultRouting_Click);
|
|
||||||
//
|
|
||||||
// menuImportAdvancedRules
|
|
||||||
//
|
|
||||||
this.menuImportAdvancedRules.Name = "menuImportAdvancedRules";
|
|
||||||
resources.ApplyResources(this.menuImportAdvancedRules, "menuImportAdvancedRules");
|
|
||||||
this.menuImportAdvancedRules.Click += new System.EventHandler(this.menuImportAdvancedRules_Click);
|
|
||||||
//
|
|
||||||
// MenuItemAdvanced
|
|
||||||
//
|
|
||||||
this.MenuItemAdvanced.DropDown = this.cmsLv;
|
|
||||||
this.MenuItemAdvanced.Name = "MenuItemAdvanced";
|
|
||||||
resources.ApplyResources(this.MenuItemAdvanced, "MenuItemAdvanced");
|
|
||||||
//
|
|
||||||
// menuServer
|
|
||||||
//
|
|
||||||
this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.MenuItemBasic,
|
|
||||||
this.MenuItemAdvanced});
|
|
||||||
resources.ApplyResources(this.menuServer, "menuServer");
|
|
||||||
this.menuServer.Name = "menuServer";
|
|
||||||
//
|
|
||||||
// MenuItemBasic
|
|
||||||
//
|
|
||||||
this.MenuItemBasic.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.menuImportBasicRules});
|
|
||||||
this.MenuItemBasic.Name = "MenuItemBasic";
|
|
||||||
resources.ApplyResources(this.MenuItemBasic, "MenuItemBasic");
|
|
||||||
//
|
|
||||||
// menuImportBasicRules
|
|
||||||
//
|
|
||||||
this.menuImportBasicRules.Name = "menuImportBasicRules";
|
|
||||||
resources.ApplyResources(this.menuImportBasicRules, "menuImportBasicRules");
|
|
||||||
this.menuImportBasicRules.Click += new System.EventHandler(this.menuImportBasicRules_Click);
|
|
||||||
//
|
|
||||||
// tabNormal
|
|
||||||
//
|
|
||||||
this.tabNormal.Controls.Add(this.tabPageProxy);
|
|
||||||
this.tabNormal.Controls.Add(this.tabPageDirect);
|
|
||||||
this.tabNormal.Controls.Add(this.tabPageBlock);
|
|
||||||
this.tabNormal.Controls.Add(this.tabPageRuleList);
|
|
||||||
resources.ApplyResources(this.tabNormal, "tabNormal");
|
|
||||||
this.tabNormal.Name = "tabNormal";
|
|
||||||
this.tabNormal.SelectedIndex = 0;
|
|
||||||
this.tabNormal.Selecting += new System.Windows.Forms.TabControlCancelEventHandler(this.tabNormal_Selecting);
|
|
||||||
//
|
|
||||||
// tabPageProxy
|
|
||||||
//
|
|
||||||
this.tabPageProxy.Controls.Add(this.panel5);
|
|
||||||
resources.ApplyResources(this.tabPageProxy, "tabPageProxy");
|
|
||||||
this.tabPageProxy.Name = "tabPageProxy";
|
|
||||||
this.tabPageProxy.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// panel5
|
|
||||||
//
|
|
||||||
this.panel5.Controls.Add(this.groupBox5);
|
|
||||||
this.panel5.Controls.Add(this.groupBox6);
|
|
||||||
resources.ApplyResources(this.panel5, "panel5");
|
|
||||||
this.panel5.Name = "panel5";
|
|
||||||
//
|
|
||||||
// groupBox5
|
|
||||||
//
|
|
||||||
this.groupBox5.Controls.Add(this.txtProxyIp);
|
|
||||||
resources.ApplyResources(this.groupBox5, "groupBox5");
|
|
||||||
this.groupBox5.Name = "groupBox5";
|
|
||||||
this.groupBox5.TabStop = false;
|
|
||||||
//
|
|
||||||
// txtProxyIp
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtProxyIp, "txtProxyIp");
|
|
||||||
this.txtProxyIp.Name = "txtProxyIp";
|
|
||||||
//
|
|
||||||
// groupBox6
|
|
||||||
//
|
|
||||||
this.groupBox6.Controls.Add(this.txtProxyDomain);
|
|
||||||
resources.ApplyResources(this.groupBox6, "groupBox6");
|
|
||||||
this.groupBox6.Name = "groupBox6";
|
|
||||||
this.groupBox6.TabStop = false;
|
|
||||||
//
|
|
||||||
// txtProxyDomain
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtProxyDomain, "txtProxyDomain");
|
|
||||||
this.txtProxyDomain.Name = "txtProxyDomain";
|
|
||||||
//
|
|
||||||
// tabPageDirect
|
|
||||||
//
|
|
||||||
this.tabPageDirect.Controls.Add(this.panel4);
|
|
||||||
resources.ApplyResources(this.tabPageDirect, "tabPageDirect");
|
|
||||||
this.tabPageDirect.Name = "tabPageDirect";
|
|
||||||
this.tabPageDirect.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// panel4
|
|
||||||
//
|
|
||||||
this.panel4.Controls.Add(this.groupBox3);
|
|
||||||
this.panel4.Controls.Add(this.groupBox4);
|
|
||||||
resources.ApplyResources(this.panel4, "panel4");
|
|
||||||
this.panel4.Name = "panel4";
|
|
||||||
//
|
|
||||||
// groupBox3
|
|
||||||
//
|
|
||||||
this.groupBox3.Controls.Add(this.txtDirectIp);
|
|
||||||
resources.ApplyResources(this.groupBox3, "groupBox3");
|
|
||||||
this.groupBox3.Name = "groupBox3";
|
|
||||||
this.groupBox3.TabStop = false;
|
|
||||||
//
|
|
||||||
// txtDirectIp
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtDirectIp, "txtDirectIp");
|
|
||||||
this.txtDirectIp.Name = "txtDirectIp";
|
|
||||||
//
|
|
||||||
// groupBox4
|
|
||||||
//
|
|
||||||
this.groupBox4.Controls.Add(this.txtDirectDomain);
|
|
||||||
resources.ApplyResources(this.groupBox4, "groupBox4");
|
|
||||||
this.groupBox4.Name = "groupBox4";
|
|
||||||
this.groupBox4.TabStop = false;
|
|
||||||
//
|
|
||||||
// txtDirectDomain
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtDirectDomain, "txtDirectDomain");
|
|
||||||
this.txtDirectDomain.Name = "txtDirectDomain";
|
|
||||||
//
|
|
||||||
// tabPageBlock
|
|
||||||
//
|
|
||||||
this.tabPageBlock.Controls.Add(this.panel3);
|
|
||||||
resources.ApplyResources(this.tabPageBlock, "tabPageBlock");
|
|
||||||
this.tabPageBlock.Name = "tabPageBlock";
|
|
||||||
this.tabPageBlock.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// panel3
|
|
||||||
//
|
|
||||||
this.panel3.Controls.Add(this.groupBox2);
|
|
||||||
this.panel3.Controls.Add(this.groupBox1);
|
|
||||||
resources.ApplyResources(this.panel3, "panel3");
|
|
||||||
this.panel3.Name = "panel3";
|
|
||||||
//
|
|
||||||
// groupBox2
|
|
||||||
//
|
|
||||||
this.groupBox2.Controls.Add(this.txtBlockIp);
|
|
||||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
|
||||||
this.groupBox2.Name = "groupBox2";
|
|
||||||
this.groupBox2.TabStop = false;
|
|
||||||
//
|
|
||||||
// txtBlockIp
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtBlockIp, "txtBlockIp");
|
|
||||||
this.txtBlockIp.Name = "txtBlockIp";
|
|
||||||
//
|
|
||||||
// groupBox1
|
|
||||||
//
|
|
||||||
this.groupBox1.Controls.Add(this.txtBlockDomain);
|
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
|
||||||
this.groupBox1.TabStop = false;
|
|
||||||
//
|
|
||||||
// txtBlockDomain
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtBlockDomain, "txtBlockDomain");
|
|
||||||
this.txtBlockDomain.Name = "txtBlockDomain";
|
|
||||||
//
|
|
||||||
// tabPageRuleList
|
|
||||||
//
|
|
||||||
this.tabPageRuleList.Controls.Add(this.lvRoutings);
|
|
||||||
resources.ApplyResources(this.tabPageRuleList, "tabPageRuleList");
|
|
||||||
this.tabPageRuleList.Name = "tabPageRuleList";
|
|
||||||
this.tabPageRuleList.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// lvRoutings
|
|
||||||
//
|
|
||||||
this.lvRoutings.ContextMenuStrip = this.cmsLv;
|
|
||||||
resources.ApplyResources(this.lvRoutings, "lvRoutings");
|
|
||||||
this.lvRoutings.FullRowSelect = true;
|
|
||||||
this.lvRoutings.GridLines = true;
|
|
||||||
this.lvRoutings.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
|
||||||
this.lvRoutings.HideSelection = false;
|
|
||||||
this.lvRoutings.Items.AddRange(new System.Windows.Forms.ListViewItem[] {
|
|
||||||
((System.Windows.Forms.ListViewItem)(resources.GetObject("lvRoutings.Items")))});
|
|
||||||
this.lvRoutings.MultiSelect = false;
|
|
||||||
this.lvRoutings.Name = "lvRoutings";
|
|
||||||
this.lvRoutings.UseCompatibleStateImageBehavior = false;
|
|
||||||
this.lvRoutings.View = System.Windows.Forms.View.Details;
|
|
||||||
this.lvRoutings.DoubleClick += new System.EventHandler(this.lvRoutings_DoubleClick);
|
|
||||||
//
|
|
||||||
// toolStripSeparator1
|
|
||||||
//
|
|
||||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
|
|
||||||
//
|
|
||||||
// RoutingSettingForm
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.tabNormal);
|
|
||||||
this.Controls.Add(this.panel1);
|
|
||||||
this.Controls.Add(this.panel2);
|
|
||||||
this.Controls.Add(this.menuServer);
|
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
|
||||||
this.Name = "RoutingSettingForm";
|
|
||||||
this.Load += new System.EventHandler(this.RoutingSettingForm_Load);
|
|
||||||
this.panel2.ResumeLayout(false);
|
|
||||||
this.panel1.ResumeLayout(false);
|
|
||||||
this.panel1.PerformLayout();
|
|
||||||
this.cmsLv.ResumeLayout(false);
|
|
||||||
this.menuServer.ResumeLayout(false);
|
|
||||||
this.menuServer.PerformLayout();
|
|
||||||
this.tabNormal.ResumeLayout(false);
|
|
||||||
this.tabPageProxy.ResumeLayout(false);
|
|
||||||
this.panel5.ResumeLayout(false);
|
|
||||||
this.groupBox5.ResumeLayout(false);
|
|
||||||
this.groupBox5.PerformLayout();
|
|
||||||
this.groupBox6.ResumeLayout(false);
|
|
||||||
this.groupBox6.PerformLayout();
|
|
||||||
this.tabPageDirect.ResumeLayout(false);
|
|
||||||
this.panel4.ResumeLayout(false);
|
|
||||||
this.groupBox3.ResumeLayout(false);
|
|
||||||
this.groupBox3.PerformLayout();
|
|
||||||
this.groupBox4.ResumeLayout(false);
|
|
||||||
this.groupBox4.PerformLayout();
|
|
||||||
this.tabPageBlock.ResumeLayout(false);
|
|
||||||
this.panel3.ResumeLayout(false);
|
|
||||||
this.groupBox2.ResumeLayout(false);
|
|
||||||
this.groupBox2.PerformLayout();
|
|
||||||
this.groupBox1.ResumeLayout(false);
|
|
||||||
this.groupBox1.PerformLayout();
|
|
||||||
this.tabPageRuleList.ResumeLayout(false);
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
this.PerformLayout();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.Panel panel1;
|
|
||||||
private System.Windows.Forms.LinkLabel linkLabelRoutingDoc;
|
|
||||||
private System.Windows.Forms.ComboBox cmbdomainStrategy;
|
|
||||||
private System.Windows.Forms.ContextMenuStrip cmsLv;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuRemove;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuSelectAll;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuAdd;
|
|
||||||
private System.Windows.Forms.MenuStrip menuServer;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem MenuItemAdvanced;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuSetDefaultRouting;
|
|
||||||
private System.Windows.Forms.TabControl tabNormal;
|
|
||||||
private System.Windows.Forms.TabPage tabPageProxy;
|
|
||||||
private System.Windows.Forms.TabPage tabPageDirect;
|
|
||||||
private System.Windows.Forms.TabPage tabPageBlock;
|
|
||||||
private System.Windows.Forms.Panel panel5;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox5;
|
|
||||||
private System.Windows.Forms.TextBox txtProxyIp;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox6;
|
|
||||||
private System.Windows.Forms.TextBox txtProxyDomain;
|
|
||||||
private System.Windows.Forms.Panel panel4;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox3;
|
|
||||||
private System.Windows.Forms.TextBox txtDirectIp;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox4;
|
|
||||||
private System.Windows.Forms.TextBox txtDirectDomain;
|
|
||||||
private System.Windows.Forms.Panel panel3;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox2;
|
|
||||||
private System.Windows.Forms.TextBox txtBlockIp;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox1;
|
|
||||||
private System.Windows.Forms.TextBox txtBlockDomain;
|
|
||||||
private System.Windows.Forms.TabPage tabPageRuleList;
|
|
||||||
private Base.ListViewFlickerFree lvRoutings;
|
|
||||||
private System.Windows.Forms.Label labRoutingTips;
|
|
||||||
private System.Windows.Forms.CheckBox chkenableRoutingAdvanced;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem MenuItemBasic;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuImportBasicRules;
|
|
||||||
private System.Windows.Forms.ComboBox cmbdomainMatcher;
|
|
||||||
private System.Windows.Forms.Label label6;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuImportAdvancedRules;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,319 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Base;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class RoutingSettingForm : BaseForm
|
|
||||||
{
|
|
||||||
private readonly List<int> _lvSelecteds = new List<int>();
|
|
||||||
private RoutingItem _lockedItem;
|
|
||||||
public RoutingSettingForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RoutingSettingForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
ConfigHandler.InitBuiltinRouting(ref config);
|
|
||||||
|
|
||||||
cmbdomainStrategy.Text = config.domainStrategy;
|
|
||||||
chkenableRoutingAdvanced.Checked = config.enableRoutingAdvanced;
|
|
||||||
cmbdomainMatcher.Text = config.domainMatcher;
|
|
||||||
|
|
||||||
if (config.routings == null)
|
|
||||||
{
|
|
||||||
config.routings = new List<RoutingItem>();
|
|
||||||
}
|
|
||||||
InitRoutingsView();
|
|
||||||
RefreshRoutingsView();
|
|
||||||
|
|
||||||
BindingLockedData();
|
|
||||||
InitUI();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void tabNormal_Selecting(object sender, TabControlCancelEventArgs e)
|
|
||||||
{
|
|
||||||
//if (tabNormal.SelectedTab == tabPageRuleList)
|
|
||||||
//{
|
|
||||||
// MenuItem1.Enabled = true;
|
|
||||||
//}
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
// MenuItem1.Enabled = false;
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
config.domainStrategy = cmbdomainStrategy.Text;
|
|
||||||
config.enableRoutingAdvanced = chkenableRoutingAdvanced.Checked;
|
|
||||||
config.domainMatcher = cmbdomainMatcher.Text;
|
|
||||||
|
|
||||||
EndBindingLockedData();
|
|
||||||
|
|
||||||
if (ConfigHandler.SaveRouting(ref config) == 0)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(ResUI.OperationFailed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
private void chkenableRoutingAdvanced_CheckedChanged_1(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
InitUI();
|
|
||||||
}
|
|
||||||
private void InitUI()
|
|
||||||
{
|
|
||||||
if (chkenableRoutingAdvanced.Checked)
|
|
||||||
{
|
|
||||||
tabPageProxy.Parent = null;
|
|
||||||
tabPageDirect.Parent = null;
|
|
||||||
tabPageBlock.Parent = null;
|
|
||||||
tabPageRuleList.Parent = tabNormal;
|
|
||||||
MenuItemBasic.Enabled = false;
|
|
||||||
MenuItemAdvanced.Enabled = true;
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tabPageProxy.Parent = tabNormal;
|
|
||||||
tabPageDirect.Parent = tabNormal;
|
|
||||||
tabPageBlock.Parent = tabNormal;
|
|
||||||
tabPageRuleList.Parent = null;
|
|
||||||
MenuItemBasic.Enabled = true;
|
|
||||||
MenuItemAdvanced.Enabled = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#region locked
|
|
||||||
private void BindingLockedData()
|
|
||||||
{
|
|
||||||
_lockedItem = ConfigHandler.GetLockedRoutingItem(ref config);
|
|
||||||
if (_lockedItem != null)
|
|
||||||
{
|
|
||||||
txtProxyDomain.Text = Utils.List2String(_lockedItem.rules[0].domain, true);
|
|
||||||
txtProxyIp.Text = Utils.List2String(_lockedItem.rules[0].ip, true);
|
|
||||||
|
|
||||||
txtDirectDomain.Text = Utils.List2String(_lockedItem.rules[1].domain, true);
|
|
||||||
txtDirectIp.Text = Utils.List2String(_lockedItem.rules[1].ip, true);
|
|
||||||
|
|
||||||
txtBlockDomain.Text = Utils.List2String(_lockedItem.rules[2].domain, true);
|
|
||||||
txtBlockIp.Text = Utils.List2String(_lockedItem.rules[2].ip, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void EndBindingLockedData()
|
|
||||||
{
|
|
||||||
if (_lockedItem != null)
|
|
||||||
{
|
|
||||||
_lockedItem.rules[0].domain = Utils.String2List(txtProxyDomain.Text.TrimEx());
|
|
||||||
_lockedItem.rules[0].ip = Utils.String2List(txtProxyIp.Text.TrimEx());
|
|
||||||
|
|
||||||
_lockedItem.rules[1].domain = Utils.String2List(txtDirectDomain.Text.TrimEx());
|
|
||||||
_lockedItem.rules[1].ip = Utils.String2List(txtDirectIp.Text.TrimEx());
|
|
||||||
|
|
||||||
_lockedItem.rules[2].domain = Utils.String2List(txtBlockDomain.Text.TrimEx());
|
|
||||||
_lockedItem.rules[2].ip = Utils.String2List(txtBlockIp.Text.TrimEx());
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region ListView
|
|
||||||
private void InitRoutingsView()
|
|
||||||
{
|
|
||||||
lvRoutings.BeginUpdate();
|
|
||||||
lvRoutings.Items.Clear();
|
|
||||||
|
|
||||||
lvRoutings.GridLines = true;
|
|
||||||
lvRoutings.FullRowSelect = true;
|
|
||||||
lvRoutings.View = View.Details;
|
|
||||||
lvRoutings.MultiSelect = true;
|
|
||||||
lvRoutings.HeaderStyle = ColumnHeaderStyle.Clickable;
|
|
||||||
|
|
||||||
lvRoutings.Columns.Add("", 30);
|
|
||||||
lvRoutings.Columns.Add(ResUI.LvAlias, 200);
|
|
||||||
lvRoutings.Columns.Add(ResUI.LvCount, 60);
|
|
||||||
lvRoutings.Columns.Add(ResUI.LvUrl, 240);
|
|
||||||
lvRoutings.Columns.Add(ResUI.LvCustomIcon, 240);
|
|
||||||
|
|
||||||
lvRoutings.EndUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RefreshRoutingsView()
|
|
||||||
{
|
|
||||||
lvRoutings.BeginUpdate();
|
|
||||||
lvRoutings.Items.Clear();
|
|
||||||
|
|
||||||
for (int k = 0; k < config.routings.Count; k++)
|
|
||||||
{
|
|
||||||
var item = config.routings[k];
|
|
||||||
if (item.locked == true)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
string def = string.Empty;
|
|
||||||
if (config.routingIndex.Equals(k))
|
|
||||||
{
|
|
||||||
def = "√";
|
|
||||||
}
|
|
||||||
|
|
||||||
ListViewItem lvItem = new ListViewItem(def);
|
|
||||||
Utils.AddSubItem(lvItem, "remarks", item.remarks);
|
|
||||||
Utils.AddSubItem(lvItem, "count", item.rules.Count.ToString());
|
|
||||||
Utils.AddSubItem(lvItem, "url", item.url);
|
|
||||||
Utils.AddSubItem(lvItem, "customIcon", item.customIcon);
|
|
||||||
|
|
||||||
if (lvItem != null) lvRoutings.Items.Add(lvItem);
|
|
||||||
}
|
|
||||||
lvRoutings.EndUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void linkLabelRoutingDoc_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
||||||
{
|
|
||||||
System.Diagnostics.Process.Start("https://www.v2fly.org/config/routing.html");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lvRoutings_DoubleClick(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
int index = GetLvSelectedIndex();
|
|
||||||
if (index < 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var fm = new RoutingRuleSettingForm();
|
|
||||||
fm.EditIndex = index;
|
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private int GetLvSelectedIndex()
|
|
||||||
{
|
|
||||||
int index = -1;
|
|
||||||
_lvSelecteds.Clear();
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (lvRoutings.SelectedIndices.Count <= 0)
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.PleaseSelectRules);
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
|
|
||||||
index = lvRoutings.SelectedIndices[0];
|
|
||||||
foreach (int i in lvRoutings.SelectedIndices)
|
|
||||||
{
|
|
||||||
_lvSelecteds.Add(i);
|
|
||||||
}
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
#region Edit function
|
|
||||||
|
|
||||||
|
|
||||||
private void menuSelectAll_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
foreach (ListViewItem item in lvRoutings.Items)
|
|
||||||
{
|
|
||||||
item.Selected = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuAdd_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
var fm = new RoutingRuleSettingForm();
|
|
||||||
fm.EditIndex = -1;
|
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuRemove_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
int index = GetLvSelectedIndex();
|
|
||||||
if (index < 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (UI.ShowYesNo(ResUI.RemoveRules) == DialogResult.No)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (int k = _lvSelecteds.Count - 1; k >= 0; k--)
|
|
||||||
{
|
|
||||||
config.routings.RemoveAt(index);
|
|
||||||
}
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
private void menuSetDefaultRouting_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
int index = GetLvSelectedIndex();
|
|
||||||
if (index < 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
SetDefaultRouting(index);
|
|
||||||
}
|
|
||||||
private int SetDefaultRouting(int index)
|
|
||||||
{
|
|
||||||
if (index < 0)
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.PleaseSelectServer);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (ConfigHandler.SetDefaultRouting(ref config, index) == 0)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuImportBasicRules_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
//Extra to bypass the mainland
|
|
||||||
txtProxyDomain.Text = "geosite:google";
|
|
||||||
txtDirectDomain.Text = "geosite:cn";
|
|
||||||
txtDirectIp.Text = "geoip:private,geoip:cn";
|
|
||||||
|
|
||||||
txtBlockDomain.Text = "geosite:category-ads-all";
|
|
||||||
|
|
||||||
UI.Show(ResUI.OperationSuccess);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuImportAdvancedRules_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (ConfigHandler.InitBuiltinRouting(ref config, true) == 0)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user