Compare commits
2355 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
65f7541ec7 | ||
|
|
22da14e3f7 | ||
|
|
fddad09167 | ||
|
|
f36f065508 | ||
|
|
0c294eefae | ||
|
|
5a0333ddaf | ||
|
|
e0b9a9a82f | ||
|
|
ab07eb6f4a | ||
|
|
bddd800769 | ||
|
|
5533ebf86a | ||
|
|
2397fdc495 | ||
|
|
129548764e | ||
|
|
ed257e39d0 | ||
|
|
33eaf2e05c | ||
|
|
41d99d5108 | ||
|
|
edefa5f786 | ||
|
|
d7b47b49d2 | ||
|
|
74af7ef8b2 | ||
|
|
1cfc9b6139 | ||
|
|
db6bf547a9 | ||
|
|
2b20714f50 | ||
|
|
cfa72ad7d1 | ||
|
|
2e11a8b458 | ||
|
|
58fe95d6fd | ||
|
|
de65c8b2cf | ||
|
|
57510980ed | ||
|
|
26a7f9dd46 | ||
|
|
7fb2464d84 | ||
|
|
9e7137ce09 | ||
|
|
80747fc306 | ||
|
|
0d75f71d16 | ||
|
|
46c2288f50 | ||
|
|
d76c9ad1db | ||
|
|
3faa18c020 | ||
|
|
d699496a52 | ||
|
|
19bf5f1a23 | ||
|
|
080b56a0cb | ||
|
|
82d9b033f2 | ||
|
|
bf6e465970 | ||
|
|
3ef9824d8e | ||
|
|
4b0e88ce46 | ||
|
|
0c32a889a9 | ||
|
|
6186b41e3f | ||
|
|
6e44a91d0b | ||
|
|
810b980e6b | ||
|
|
22356940d9 | ||
|
|
cc30f7aa02 | ||
|
|
6e689400b6 | ||
|
|
50fbf8833b | ||
|
|
d7137990b9 | ||
|
|
8ecc107c06 | ||
|
|
1fa3837bb0 | ||
|
|
5aec5b084a | ||
|
|
b77add97db | ||
|
|
b306d808fb | ||
|
|
1729c3f76d | ||
|
|
2eb591391e | ||
|
|
075194fea8 | ||
|
|
28b376d2d2 | ||
|
|
4f3de4cf54 | ||
|
|
85f387bfb9 | ||
|
|
81aec8402b | ||
|
|
d407dfed0a | ||
|
|
dcd4d0886e | ||
|
|
9ad240951e | ||
|
|
e86d4657da | ||
|
|
d36e33a7cf | ||
|
|
376bcefc14 | ||
|
|
c0c110fe7e | ||
|
|
3dc6e576df | ||
|
|
49f717fcf8 | ||
|
|
00152e0db4 | ||
|
|
1964203848 | ||
|
|
495444abd0 | ||
|
|
09ec0b6325 | ||
|
|
cad0f15a83 | ||
|
|
b087dcd328 | ||
|
|
8dff263a0c | ||
|
|
d546b23bd8 | ||
|
|
bb9400745e | ||
|
|
30f84e78e1 | ||
|
|
30af020ba8 | ||
|
|
ef27cd6c5c | ||
|
|
770289cd67 | ||
|
|
25b5c96648 | ||
|
|
85cafda168 | ||
|
|
96e1b5b0f6 | ||
|
|
dd90e84f6a | ||
|
|
05969c2f99 | ||
|
|
05ef1c3924 | ||
|
|
8018920a64 | ||
|
|
dcb7e389eb | ||
|
|
a15cd62fd4 | ||
|
|
1c3a2e475d | ||
|
|
83c45d772f | ||
|
|
96c8d4de6a | ||
|
|
9558974080 | ||
|
|
285e298a8b | ||
|
|
57b17b1798 | ||
|
|
7e13642098 | ||
|
|
26b5f53b12 | ||
|
|
896b321cdc | ||
|
|
4115a5936c | ||
|
|
0e0cf7df09 | ||
|
|
0c232be0c4 | ||
|
|
67bc26ed57 | ||
|
|
f421a14659 | ||
|
|
81b74cf46c | ||
|
|
b1a3ce323b | ||
|
|
1f58826444 | ||
|
|
2ea853b1e6 | ||
|
|
a2e1647faa | ||
|
|
4e060203ad | ||
|
|
0540e2cf6c | ||
|
|
21e4679b6c | ||
|
|
8b9728b40b | ||
|
|
e0739709e7 | ||
|
|
41da6d552f | ||
|
|
ecb70b43df | ||
|
|
b2290f5b4c | ||
|
|
c6f415e9df | ||
|
|
3f7d622512 | ||
|
|
794d3ffcac | ||
|
|
ee2f87ef32 | ||
|
|
87da2a165d | ||
|
|
130deb8e22 | ||
|
|
b65d65cb12 | ||
|
|
3caa5776c8 | ||
|
|
6cbbb6498f | ||
|
|
fb12ee7f2a | ||
|
|
48842b6f2a | ||
|
|
fc90526258 | ||
|
|
efd1f24ab2 | ||
|
|
0808672b6e | ||
|
|
fe0de47805 | ||
|
|
ccf5b0ef53 | ||
|
|
218f4872b8 | ||
|
|
077569dd5d | ||
|
|
a3f79065c5 | ||
|
|
fbfcf862cb | ||
|
|
7307b84dad | ||
|
|
6b15a9b6d2 | ||
|
|
e3420fd563 | ||
|
|
31120f51c9 | ||
|
|
3d279ec127 | ||
|
|
48cd76b938 | ||
|
|
8e5fbc8480 | ||
|
|
cdea968c24 | ||
|
|
a6aabed6a1 | ||
|
|
cde235896f | ||
|
|
ca48aaf5ee | ||
|
|
8a705a6a9a | ||
|
|
b3adbc1110 | ||
|
|
2bbc13ccf6 | ||
|
|
411384f0e7 | ||
|
|
a9b0bc0409 | ||
|
|
228582296c | ||
|
|
d67108cd20 | ||
|
|
175f185cb1 | ||
|
|
56f27ec356 | ||
|
|
5253d67e04 | ||
|
|
a314f59db9 | ||
|
|
da4e268e63 | ||
|
|
c186378d43 | ||
|
|
482bb5f64f | ||
|
|
3c1492e9bc | ||
|
|
be301b825f | ||
|
|
fc875f7ad6 | ||
|
|
f644053811 | ||
|
|
c0e5e78d2b | ||
|
|
d103872c61 | ||
|
|
d47104f3f3 | ||
|
|
d4288f89d3 | ||
|
|
7060257051 | ||
|
|
866ec097c0 | ||
|
|
dcbe2805e6 | ||
|
|
262814391a | ||
|
|
b32cf403e6 | ||
|
|
921ee34779 | ||
|
|
75a871c437 | ||
|
|
b5a47efe8e | ||
|
|
8ff24d876c | ||
|
|
dd44bb2a0c | ||
|
|
f3686b23c7 | ||
|
|
fccdc8ca1f | ||
|
|
fc149666d9 | ||
|
|
4292838e80 | ||
|
|
befac94473 | ||
|
|
c0128d86f4 | ||
|
|
794636e208 | ||
|
|
eff6ac254f | ||
|
|
fa575be289 | ||
|
|
060ad68570 | ||
|
|
1620394736 | ||
|
|
1e6e91e4bd | ||
|
|
b0cbe2ae70 | ||
|
|
1391202985 | ||
|
|
d9ad24f563 | ||
|
|
61279752e2 | ||
|
|
1794b65182 | ||
|
|
6bb5629bb4 | ||
|
|
0f3db29e75 | ||
|
|
c6cdf77a68 | ||
|
|
48682faf71 | ||
|
|
49d396538c | ||
|
|
30802820b0 | ||
|
|
7fca0ba588 | ||
|
|
50d080d098 | ||
|
|
96792bec78 | ||
|
|
e6953c8883 | ||
|
|
1d9b1781d4 | ||
|
|
6720bb9f6b | ||
|
|
2217e5303d | ||
|
|
c8392a714c | ||
|
|
749a1d2da2 | ||
|
|
2920e33d71 | ||
|
|
1bc11a207a | ||
|
|
ddbd4e79a2 | ||
|
|
49c107bb5f | ||
|
|
1b99d28c9b | ||
|
|
7b8e983412 | ||
|
|
f1373234dd | ||
|
|
b511a52e09 | ||
|
|
4c8c2aa323 | ||
|
|
a28c9f8f36 | ||
|
|
9ff1dfe019 | ||
|
|
3ae52dacfc | ||
|
|
aa6f879504 | ||
|
|
1dde5c5689 | ||
|
|
913b422d74 | ||
|
|
2459bcd206 | ||
|
|
cce1ce0ee0 | ||
|
|
8518513aff | ||
|
|
ce5e28c543 | ||
|
|
9b7a8203f6 | ||
|
|
fd8f2422ea | ||
|
|
09325fadaf | ||
|
|
d7d7be9366 | ||
|
|
25afdda2b2 | ||
|
|
c690d5e940 | ||
|
|
243a8b60b1 | ||
|
|
7b317619ac | ||
|
|
c987bed965 | ||
|
|
ada4bafb94 | ||
|
|
27f5d0fd54 | ||
|
|
914da2b86f | ||
|
|
582db9d542 | ||
|
|
9a1fd1aa4f | ||
|
|
58ddac63d2 | ||
|
|
a8eff641b2 | ||
|
|
d723c10a3b | ||
|
|
bf5abdb520 | ||
|
|
0f44de7dc3 | ||
|
|
4f1a4dc6a5 | ||
|
|
8c108065eb | ||
|
|
5fdcc748e1 | ||
|
|
bf03156dd9 | ||
|
|
964c2ed2b5 | ||
|
|
e942c80afb | ||
|
|
d7dcb5feab | ||
|
|
39d41486d6 | ||
|
|
b85526ce54 | ||
|
|
2a0c081380 | ||
|
|
1db4236f23 | ||
|
|
6749595afe | ||
|
|
e65c43a292 | ||
|
|
00b13bf918 | ||
|
|
f7f3bc8bee | ||
|
|
51c603a3a6 | ||
|
|
5fb026b8d5 | ||
|
|
f7530b16b8 | ||
|
|
db47209362 | ||
|
|
f375cbd871 | ||
|
|
0474c8fb03 | ||
|
|
c00d23846a | ||
|
|
a3d5ea8fb8 | ||
|
|
7525a6ed6a | ||
|
|
dd93416cf7 | ||
|
|
73d429d064 | ||
|
|
4bf3764b5d | ||
|
|
236687ae53 | ||
|
|
0d708f64b9 | ||
|
|
222c9de19f | ||
|
|
72fc34cd40 | ||
|
|
3f7244f23f | ||
|
|
dc24868800 | ||
|
|
1f557888f5 | ||
|
|
16db977fd8 | ||
|
|
a19d4d6686 | ||
|
|
633076ddd4 | ||
|
|
5581248a1e | ||
|
|
a4393b8f90 | ||
|
|
406d8469d8 | ||
|
|
0cf4711515 | ||
|
|
a2ba50c4ff | ||
|
|
c97cc15c0e | ||
|
|
750f1a1884 | ||
|
|
2cf83b41cc | ||
|
|
1f16b5236b | ||
|
|
dd4b5349cb | ||
|
|
46b4e21e8c | ||
|
|
3899e4e12e | ||
|
|
f016281e30 | ||
|
|
1d755c705b | ||
|
|
a0d79dd26d | ||
|
|
e6734af64e | ||
|
|
0d8e3dc24f | ||
|
|
0e44aa1ada | ||
|
|
9f40a0b490 | ||
|
|
23430bee97 | ||
|
|
04691a3b6c | ||
|
|
db0f65eedd | ||
|
|
2118b6dd7d | ||
|
|
71d7398ae7 | ||
|
|
2e16a2be56 | ||
|
|
ed24f432c3 | ||
|
|
669e8d5f8e | ||
|
|
016f4abb32 | ||
|
|
b1a946ec20 | ||
|
|
2576b46f34 | ||
|
|
a42df9a27b | ||
|
|
48102e9c53 | ||
|
|
5770aeee26 | ||
|
|
cb102a5a61 | ||
|
|
28f01784c1 | ||
|
|
29eefbcc25 | ||
|
|
8679e55f6a | ||
|
|
846db4e689 | ||
|
|
68afb89b99 | ||
|
|
804f035a87 | ||
|
|
267342e7e6 | ||
|
|
9e3633f1e4 | ||
|
|
06b3894249 | ||
|
|
d39129887b | ||
|
|
e5379bb073 | ||
|
|
c8dded1108 | ||
|
|
44e6b7dbb0 | ||
|
|
80857c22c9 | ||
|
|
6548f9f0ed | ||
|
|
58fd8780e5 | ||
|
|
0cccbc438b | ||
|
|
558e7cb5ac | ||
|
|
286181ca04 | ||
|
|
ce0fc14a8a | ||
|
|
ebfbc8ce61 | ||
|
|
fdb038c7c9 | ||
|
|
467e6dfd16 | ||
|
|
8c40c28fe0 | ||
|
|
9e25049fe8 | ||
|
|
e170153090 | ||
|
|
99e8753629 | ||
|
|
d5b0829065 | ||
|
|
2c8a60e0ea | ||
|
|
352de75fdd | ||
|
|
f7b35defc9 | ||
|
|
e471c01269 | ||
|
|
5dfaa10709 | ||
|
|
7506f94a53 | ||
|
|
a2d08fa40d | ||
|
|
159c883bf3 | ||
|
|
396d7680d3 | ||
|
|
7e93a5d3cf | ||
|
|
955c55b6cc | ||
|
|
b2b30b0cf5 | ||
|
|
6352b3a594 | ||
|
|
5be684d2e5 | ||
|
|
8dda17d546 | ||
|
|
0f5aaac1f5 | ||
|
|
35fa75f9c9 | ||
|
|
19d43b3f62 | ||
|
|
2b4a72897e | ||
|
|
cdc31b7fc7 | ||
|
|
f4ef1455c4 | ||
|
|
fe94512dd1 | ||
|
|
ae25542ce9 | ||
|
|
6c030a5230 | ||
|
|
a145d6ebcc | ||
|
|
14676e9618 | ||
|
|
72e8476ded | ||
|
|
5888b051d9 | ||
|
|
215cf73072 | ||
|
|
7f7d4a77b6 | ||
|
|
7e3a0c4ded | ||
|
|
89150317e1 | ||
|
|
f47faa548b | ||
|
|
36ed8f3f73 | ||
|
|
ca1ca21cf8 | ||
|
|
c7df539b31 | ||
|
|
e873188775 | ||
|
|
6953efc2d8 | ||
|
|
3e78aacc7e | ||
|
|
20b4ce3213 | ||
|
|
4b581c385c | ||
|
|
bdf6f5c3b9 | ||
|
|
6d0953dca4 | ||
|
|
fc0fc5ea10 | ||
|
|
f7f2d84e1f | ||
|
|
57acadd52a | ||
|
|
26cebd2aeb | ||
|
|
9a652e789d | ||
|
|
f6509e3fd6 | ||
|
|
445fe6e714 | ||
|
|
dc8a70bb26 | ||
|
|
adf9b82d6b | ||
|
|
be212b5186 | ||
|
|
59ba461d83 | ||
|
|
004c2e069c | ||
|
|
c168b7e979 | ||
|
|
79411430a5 | ||
|
|
853d655a92 | ||
|
|
2d5fa9ebbf | ||
|
|
b2deab08ab | ||
|
|
8452a17d79 | ||
|
|
19851c8a47 | ||
|
|
6b8ec6ae16 | ||
|
|
d648e67eaf | ||
|
|
ebb14af488 | ||
|
|
80afa98d66 | ||
|
|
2797a28c0d | ||
|
|
03c8d94024 | ||
|
|
c061eddf2a | ||
|
|
2e146190e1 | ||
|
|
fc110c4988 | ||
|
|
6003003228 | ||
|
|
70e5bee519 | ||
|
|
4062d1920c | ||
|
|
50b81c2356 | ||
|
|
00fe3a76c8 | ||
|
|
d11a3b9683 | ||
|
|
7934fa24a2 | ||
|
|
f0d9dee6ce | ||
|
|
3a82bddcd3 | ||
|
|
ebe044aee8 | ||
|
|
674305ce29 | ||
|
|
b9a5c6ff31 | ||
|
|
bcb0a7822a | ||
|
|
93aac0bc99 | ||
|
|
7fe58afa9c | ||
|
|
9d0f8d9886 | ||
|
|
aa7d0471db | ||
|
|
6cd9227e8d | ||
|
|
213ef58959 | ||
|
|
2fa1124752 | ||
|
|
d00a0d6c75 | ||
|
|
2e225eb84f | ||
|
|
3c57ee89c4 | ||
|
|
b6f870ac5f | ||
|
|
570ce7d28d | ||
|
|
3958090e0f | ||
|
|
99ed1b729e | ||
|
|
d16db77b52 | ||
|
|
56c176add4 | ||
|
|
42a856c24a | ||
|
|
b662090d64 | ||
|
|
29e50a5f91 | ||
|
|
7885e07eed | ||
|
|
65fd682f2a | ||
|
|
cdecbb0857 | ||
|
|
68ee781f26 | ||
|
|
0f307e7ca2 | ||
|
|
7ac49287df | ||
|
|
83faf6025b | ||
|
|
4faf5e6d3e | ||
|
|
d300596ac1 | ||
|
|
a30dc5988e | ||
|
|
e43a0da9a6 | ||
|
|
83b74c0930 | ||
|
|
0d2a39267f | ||
|
|
f87f380bb0 | ||
|
|
ab28acd709 | ||
|
|
04b53f8e1e | ||
|
|
eb0e5c2de3 | ||
|
|
8cb9b910a6 | ||
|
|
bdac79c91b | ||
|
|
88081fc3c4 | ||
|
|
6be451e9f3 | ||
|
|
64ed25879c | ||
|
|
d66e087d94 | ||
|
|
b7b0a44c52 | ||
|
|
44cba7adf7 | ||
|
|
5a8a64d284 | ||
|
|
eac6835982 | ||
|
|
7992ca4c85 | ||
|
|
ead200ea5d | ||
|
|
e146c2606f | ||
|
|
db158e1ffe | ||
|
|
72ef3c3394 | ||
|
|
e17378c6b3 | ||
|
|
0e05f5305c | ||
|
|
58f43da23e | ||
|
|
4a9e7f29da | ||
|
|
1589209567 | ||
|
|
5c6017b0a9 | ||
|
|
4246fe5b92 | ||
|
|
c441d2f03f | ||
|
|
6c21529594 | ||
|
|
6fc4253d46 | ||
|
|
7a2590d1f9 | ||
|
|
4cbbb5b64f | ||
|
|
f11104fcb5 | ||
|
|
19e8ca6c06 | ||
|
|
13005e8242 | ||
|
|
d0dde6e572 | ||
|
|
5e103a5ccb | ||
|
|
0c4e6f0a8c | ||
|
|
03a89a5cdd | ||
|
|
e22d13be1f | ||
|
|
ef9c4d96b7 | ||
|
|
bb7300a055 | ||
|
|
2d456fd1fc | ||
|
|
97108e788f | ||
|
|
b8f7259fbd | ||
|
|
2de1c62daf | ||
|
|
f5d2eff8d3 | ||
|
|
dbcf1fdb6f | ||
|
|
bd81e4d0fb | ||
|
|
80786f692c | ||
|
|
177edfea3e | ||
|
|
b4b08db778 | ||
|
|
8abf2f768c | ||
|
|
8b14cd5aea | ||
|
|
84a21d72b9 | ||
|
|
fa8e0ed27b | ||
|
|
b6e403a3fb | ||
|
|
3d368f9aca | ||
|
|
414ac950e0 | ||
|
|
34fa82f72c | ||
|
|
4d5fdc4725 | ||
|
|
1c4f28e708 | ||
|
|
7bf555ce4c | ||
|
|
bb388628a7 | ||
|
|
a2920578a1 | ||
|
|
b41a73f08d | ||
|
|
c6ace470e3 | ||
|
|
cdbe79d3c1 | ||
|
|
493ec07ff2 | ||
|
|
ec15412755 | ||
|
|
191b6d5b4e | ||
|
|
8718152dba | ||
|
|
c585db7516 | ||
|
|
515c91a407 | ||
|
|
b615029304 | ||
|
|
3b0f4b1f82 | ||
|
|
4a2bf7a0c3 | ||
|
|
79212f8ef7 | ||
|
|
c57a596156 | ||
|
|
948db1451f | ||
|
|
06aa18bfab | ||
|
|
f076afb6e1 | ||
|
|
582402f4d9 | ||
|
|
0e04ff506b | ||
|
|
e9f757dccb | ||
|
|
f02d858646 | ||
|
|
3727cd401c | ||
|
|
f0c9deca4b | ||
|
|
f41a8bc355 | ||
|
|
3100930136 | ||
|
|
9abafafcdd | ||
|
|
0d127dff3b | ||
|
|
83dbf88ffb | ||
|
|
3a6f56ebbc | ||
|
|
3e8c5d3b79 | ||
|
|
2aaca0c54a | ||
|
|
c6d587f0c7 | ||
|
|
c85682de8d | ||
|
|
9c12c3ee4e | ||
|
|
2c432dbf4d | ||
|
|
0c8643837f | ||
|
|
3fd97f7e60 | ||
|
|
5064696480 | ||
|
|
6f0fbd1088 | ||
|
|
b535722421 | ||
|
|
60e96b637d | ||
|
|
7f29c7a601 | ||
|
|
060dfedb74 | ||
|
|
2907ed6029 | ||
|
|
5649fcc9ca | ||
|
|
85ddfc0739 | ||
|
|
7c98bfd363 | ||
|
|
c23f377039 | ||
|
|
af89fb52f1 | ||
|
|
98f56fd506 | ||
|
|
88ea1ea85b | ||
|
|
2a1e33f95c | ||
|
|
2fe55e2b55 | ||
|
|
d6f5887b1d | ||
|
|
dce045461a | ||
|
|
4ab0324bc9 | ||
|
|
b2bb69fe42 | ||
|
|
ad96f9aacd | ||
|
|
9847fc5c77 | ||
|
|
3f3bca753c | ||
|
|
c223d6a87d | ||
|
|
14a428467c | ||
|
|
efc84e53ec | ||
|
|
f9ee0189f0 | ||
|
|
d90580943f | ||
|
|
f6484b4e2b | ||
|
|
0b5f48b926 | ||
|
|
f2f649319d | ||
|
|
35eaa94228 | ||
|
|
e09a050d41 | ||
|
|
38182ba020 | ||
|
|
7960b2ca10 | ||
|
|
722c789448 | ||
|
|
faa4c36956 | ||
|
|
d3a33d786d | ||
|
|
1a2d60dbfc | ||
|
|
2aa5e685b8 | ||
|
|
512c7df37d | ||
|
|
57fddf1c85 | ||
|
|
afe4206782 | ||
|
|
02bc5e3111 | ||
|
|
5a51284550 | ||
|
|
2d995826ad | ||
|
|
92f3bf2999 | ||
|
|
bfe282c2db | ||
|
|
2d0b013af3 | ||
|
|
3df938ed61 | ||
|
|
d4b6cab742 | ||
|
|
8d327af0ac | ||
|
|
f135fbee26 | ||
|
|
d65977bd59 | ||
|
|
1e0242ede9 | ||
|
|
839d3365f8 | ||
|
|
182ee8f233 | ||
|
|
24eb6f8c38 | ||
|
|
13bade262f | ||
|
|
d2ff675fbc | ||
|
|
1905a81f9a | ||
|
|
e2382a1465 | ||
|
|
ec00cd2ae0 | ||
|
|
e0fad4eaa5 | ||
|
|
882b39b067 | ||
|
|
d15a641d88 | ||
|
|
90ac8b7b0b | ||
|
|
d64afdcff1 | ||
|
|
eb58a39f57 | ||
|
|
d12352d568 | ||
|
|
217a9808b2 | ||
|
|
1b08adb178 | ||
|
|
f113fda6d4 | ||
|
|
5a6a773583 | ||
|
|
627d21a00a | ||
|
|
44e13c84bc | ||
|
|
b96067cf2e | ||
|
|
b2fe5cce5e | ||
|
|
55775adba6 | ||
|
|
0500f56163 | ||
|
|
52e5d519ab | ||
|
|
bdfbb97bf8 | ||
|
|
cff117cb40 | ||
|
|
cf71adc7e1 | ||
|
|
0582f2a168 | ||
|
|
2721af3052 | ||
|
|
f9950639e8 | ||
|
|
8f8c9ddc25 | ||
|
|
58596ad1ab | ||
|
|
b17ea991a3 | ||
|
|
45d70f73bd | ||
|
|
7a6e483171 | ||
|
|
1792dd8d2c | ||
|
|
a4ea4b138f | ||
|
|
e2c6aedddd | ||
|
|
b91a03b602 | ||
|
|
27716f077e | ||
|
|
eaa054e599 | ||
|
|
e57d07f7d6 | ||
|
|
895831f46f | ||
|
|
6b16d7ee8a | ||
|
|
45dbea57f1 | ||
|
|
6ea0dbc70f | ||
|
|
30a5041799 | ||
|
|
35083724f6 | ||
|
|
959d5dd9c2 | ||
|
|
a24a261c36 | ||
|
|
75feb90b19 | ||
|
|
fd3cb1b0eb | ||
|
|
1902134f03 | ||
|
|
cce48c5030 | ||
|
|
0654b8e427 | ||
|
|
7df10b20a4 | ||
|
|
dbde5af545 | ||
|
|
85b4f0638f | ||
|
|
94f2751902 | ||
|
|
ffdfef0adc | ||
|
|
de7652836b | ||
|
|
59913bc6f3 | ||
|
|
d77a684b64 | ||
|
|
529c075fe1 | ||
|
|
5190589653 | ||
|
|
cb9a1b4bef | ||
|
|
a0beba4e20 | ||
|
|
d794425f2c | ||
|
|
1ba11fc3ef | ||
|
|
0dfb1ae776 | ||
|
|
c8a054f997 | ||
|
|
30c4e9cf00 | ||
|
|
c9fd2fc1c2 | ||
|
|
e9e3a436eb | ||
|
|
b9bd79895f | ||
|
|
36b574a5f8 | ||
|
|
fe90372b2f | ||
|
|
d47ddac94c | ||
|
|
854c374e2f | ||
|
|
7bafe142ca | ||
|
|
14ec8c4bea | ||
|
|
e9f2a77bf6 | ||
|
|
dcb4ce8d9a | ||
|
|
2702466cdf | ||
|
|
2016000d37 | ||
|
|
be0516c06c | ||
|
|
332a3635de | ||
|
|
9df4fa6a0e | ||
|
|
ddcb9ff819 | ||
|
|
7e9f5509ca | ||
|
|
c596d75e8c | ||
|
|
a0337d399c | ||
|
|
f0f52d7244 | ||
|
|
d55d796c00 | ||
|
|
6da36b27aa | ||
|
|
b4d3fc393e | ||
|
|
c4b68280fd | ||
|
|
97aeee7172 | ||
|
|
8bf57f1293 | ||
|
|
4584cebad5 | ||
|
|
557773144b | ||
|
|
32a29a5556 | ||
|
|
9f4a844c9b | ||
|
|
82b7650458 | ||
|
|
b7121c4447 | ||
|
|
b522de3b56 | ||
|
|
eb94caf4b6 | ||
|
|
0f59e0c950 | ||
|
|
05a254c682 | ||
|
|
576ba2c745 | ||
|
|
3dafda6ace | ||
|
|
2d048a3295 | ||
|
|
f2d345e7b1 | ||
|
|
6a0db02230 | ||
|
|
93f271912e | ||
|
|
55b78727ab | ||
|
|
69b555c059 | ||
|
|
07f327d641 | ||
|
|
c69f4ba4a2 | ||
|
|
d7e8d4d5c3 | ||
|
|
679a026e72 | ||
|
|
0db180a54f | ||
|
|
6c2de53e07 | ||
|
|
af132aa62e | ||
|
|
d528fd3762 | ||
|
|
663d355a48 | ||
|
|
27112e3480 | ||
|
|
482d3ff352 | ||
|
|
a444d4af94 | ||
|
|
6f77fda6fa | ||
|
|
8f7d653e80 | ||
|
|
e474b595ad | ||
|
|
b4c6292397 | ||
|
|
4aa994827c | ||
|
|
a521ccde47 | ||
|
|
03d280054b | ||
|
|
c0a3279856 | ||
|
|
e8643632bf | ||
|
|
6d8272472a | ||
|
|
409d5b124a | ||
|
|
0c1f3d056a | ||
|
|
0e702d8693 | ||
|
|
b155cd9a5a | ||
|
|
6a281fb7ba | ||
|
|
203891c957 | ||
|
|
1365df898f | ||
|
|
a2bc02b4c5 | ||
|
|
0d01aa4eea | ||
|
|
017c73132c | ||
|
|
534bfad50f | ||
|
|
429f44eb6a | ||
|
|
346c88b661 | ||
|
|
c49853e7b4 | ||
|
|
11232c6f23 | ||
|
|
9aa788f086 | ||
|
|
c35268c493 | ||
|
|
df0ad4486e | ||
|
|
d369385657 | ||
|
|
059e067bdc | ||
|
|
050759c1c2 | ||
|
|
6d264b4394 | ||
|
|
284330ed5f | ||
|
|
49205b604c | ||
|
|
c14c27970f | ||
|
|
b1682d5794 | ||
|
|
d0b9dd9ae7 | ||
|
|
0a94b7473d | ||
|
|
587a928b84 | ||
|
|
48dbc06b29 | ||
|
|
967515a34f | ||
|
|
8e0bce4da4 | ||
|
|
01078bd7b2 | ||
|
|
a97fbb2d48 | ||
|
|
6782f92703 | ||
|
|
9096c29fef | ||
|
|
100967c57b | ||
|
|
c871af2711 | ||
|
|
faf99ffe14 | ||
|
|
58d073b516 | ||
|
|
52a4d41c6f | ||
|
|
0805b00c50 | ||
|
|
c8f8bfd6f0 | ||
|
|
1f51d37ae6 | ||
|
|
f8a4b8de51 | ||
|
|
eaa64d7b70 | ||
|
|
4480fbf787 | ||
|
|
c2287033e3 | ||
|
|
0a0fb5287a | ||
|
|
52acbd7d2c | ||
|
|
af4f84a84b | ||
|
|
633241fcee | ||
|
|
f1f3d288cd | ||
|
|
7c98da85a0 | ||
|
|
36f7d64352 | ||
|
|
a4bbcbe5ff | ||
|
|
cbb4ec5aa1 | ||
|
|
84fc5f7d67 | ||
|
|
a4d84cdc21 | ||
|
|
1a422f318c | ||
|
|
8f202fd70d | ||
|
|
dfe96eb30c | ||
|
|
3d7c6c14b3 | ||
|
|
85a4e361d2 | ||
|
|
05b2fa97d3 | ||
|
|
47d57ddf70 | ||
|
|
9521ac6adb | ||
|
|
c2703d215b | ||
|
|
f5c1133fc5 | ||
|
|
f63d81826a | ||
|
|
fa39982a8f | ||
|
|
4b52414e03 | ||
|
|
29b0a7659f | ||
|
|
e69183ce12 | ||
|
|
009c088a64 | ||
|
|
2c1f948832 | ||
|
|
b83e007405 | ||
|
|
1d3ce2c029 | ||
|
|
5ad0730a26 | ||
|
|
52f1383903 | ||
|
|
12b8cbf3e0 | ||
|
|
de44f8565d | ||
|
|
7480ead76a | ||
|
|
e96ae7a650 | ||
|
|
ae524c4d0e | ||
|
|
5adce88c37 | ||
|
|
06dda24431 | ||
|
|
fa046df923 | ||
|
|
2432eb39b1 | ||
|
|
c211a2517f | ||
|
|
73ea0a57a0 | ||
|
|
f05f86dc80 | ||
|
|
e44b25c80f | ||
|
|
bc3acc2826 | ||
|
|
007fb34ca5 | ||
|
|
46a363cce4 | ||
|
|
3047ce57a3 | ||
|
|
7b9ce072d9 | ||
|
|
4d3e3f3aed | ||
|
|
62563ad8a1 | ||
|
|
6fdce63359 | ||
|
|
fdc4d6dda9 | ||
|
|
a3b06ee83f | ||
|
|
43aa62e212 | ||
|
|
70dd3f323e | ||
|
|
803509d952 | ||
|
|
30e85c8654 | ||
|
|
7b24835c9e | ||
|
|
7aee76f5de | ||
|
|
80200a9983 | ||
|
|
79f6b5c181 | ||
|
|
dc02ce3f97 | ||
|
|
845d5a548f | ||
|
|
14a8cf69ef | ||
|
|
c8a6e8005e | ||
|
|
e6bb2bfaae | ||
|
|
8ba2d1cf72 | ||
|
|
a168fc3719 | ||
|
|
fd1dc15576 | ||
|
|
0b82874a52 | ||
|
|
434242858f | ||
|
|
3dfa0525bd | ||
|
|
36d4baaa8e | ||
|
|
7880cba0f9 | ||
|
|
f8d64528b5 | ||
|
|
f6ee61f29e | ||
|
|
2bb1310094 | ||
|
|
f6a137cd43 | ||
|
|
a575fe4934 | ||
|
|
4cd8d8a4a5 | ||
|
|
7a802726fb | ||
|
|
251245d315 | ||
|
|
fbf5a84c4a | ||
|
|
55412b94d2 | ||
|
|
f61fd02ac7 | ||
|
|
dc96b473cd | ||
|
|
abe40c84b0 | ||
|
|
9976fc9723 | ||
|
|
f8092f924a | ||
|
|
075a877284 | ||
|
|
f748395bda | ||
|
|
12018360fd | ||
|
|
821b2fda85 | ||
|
|
4cb2b29187 | ||
|
|
bb59778313 | ||
|
|
ed0ded33b7 | ||
|
|
db19528c24 | ||
|
|
7d1fb0a238 | ||
|
|
11956d9e16 | ||
|
|
cef782c388 | ||
|
|
e87e371c14 | ||
|
|
877a455ae0 | ||
|
|
a47618e986 | ||
|
|
2bbd759c25 | ||
|
|
4dd19884e0 | ||
|
|
5ab0f499ce | ||
|
|
053723647b | ||
|
|
725a44abd8 | ||
|
|
625f2d2410 | ||
|
|
e32748daf2 | ||
|
|
8a2bd1cac3 | ||
|
|
9076f213e6 | ||
|
|
e77edc56fd | ||
|
|
de356304c7 | ||
|
|
8cc9e30f86 | ||
|
|
384323031b | ||
|
|
b40a7b24d4 | ||
|
|
67b2a433a8 | ||
|
|
07bdf02af4 | ||
|
|
35b470dbac | ||
|
|
42eb49b84c | ||
|
|
9d3d11755f | ||
|
|
0fbc546696 | ||
|
|
220422ba0d | ||
|
|
2c9bae8111 | ||
|
|
320f6ddc6e | ||
|
|
0da6d51150 | ||
|
|
65e3170cd9 | ||
|
|
ee3750121c | ||
|
|
9736a4ddd0 | ||
|
|
53e310ff77 | ||
|
|
17285720f1 | ||
|
|
aa690cb9ab | ||
|
|
6d3596087a | ||
|
|
0fe80e8e1f | ||
|
|
f853f20b0c | ||
|
|
39e6fa35e1 | ||
|
|
23b911297e | ||
|
|
6113d1e3eb | ||
|
|
55f3b93958 | ||
|
|
c522987b6f | ||
|
|
8fe64755ec | ||
|
|
cc35328f28 | ||
|
|
a824a7fb73 | ||
|
|
075d7e52df | ||
|
|
cadbae31e4 | ||
|
|
39b5a67040 | ||
|
|
30580b2c57 | ||
|
|
00ab830ad1 | ||
|
|
fcf3577f67 | ||
|
|
2cdfeb8dd0 | ||
|
|
ce300aa75f | ||
|
|
a52caaec75 | ||
|
|
3f3489b292 | ||
|
|
1e059c5649 | ||
|
|
d9e1b2df7f | ||
|
|
94e51a8041 | ||
|
|
81fe90f605 | ||
|
|
69f643447d | ||
|
|
d8355371e3 | ||
|
|
cbe9b9c455 | ||
|
|
dd33c0e582 | ||
|
|
009b0aa361 | ||
|
|
f438176544 | ||
|
|
be8e8a0521 | ||
|
|
1a8b31bdb4 | ||
|
|
8a47055273 | ||
|
|
feb6f7930e | ||
|
|
0271ea7dad | ||
|
|
505b73d20e | ||
|
|
dcad8a9f79 | ||
|
|
9ce58115ab | ||
|
|
1c9d139ff5 | ||
|
|
70794c8eb5 | ||
|
|
c90c4a2e78 | ||
|
|
6797e8af52 | ||
|
|
5109802dfb | ||
|
|
935297b9e8 | ||
|
|
dad209d1cd | ||
|
|
e1072cc8ca | ||
|
|
1a1ba80188 | ||
|
|
c878c91e11 | ||
|
|
c518521d74 | ||
|
|
ce9c9078e5 | ||
|
|
9fe525bca1 | ||
|
|
352865ddaa | ||
|
|
bc950ee40a | ||
|
|
5c23dfd633 | ||
|
|
4633a0450c | ||
|
|
842255766f | ||
|
|
827c32fafd | ||
|
|
f531cd23ee | ||
|
|
2408758360 | ||
|
|
4c792f6f17 | ||
|
|
802ab90d87 | ||
|
|
c268a0ab14 | ||
|
|
b12c7f21b3 | ||
|
|
b3948910ff | ||
|
|
9ee1261204 | ||
|
|
8e3aa0e9ce | ||
|
|
db62a01224 | ||
|
|
d900f2c47c | ||
|
|
82e1fe3f8b | ||
|
|
85eb82e69d | ||
|
|
c529f8099d | ||
|
|
aa3c58917b | ||
|
|
bc591a2399 | ||
|
|
11d996bb56 | ||
|
|
088a78455c | ||
|
|
869d9d487b | ||
|
|
db3978fd4e | ||
|
|
ae7e46fe5e | ||
|
|
4bd85e1804 | ||
|
|
01f4434f6b | ||
|
|
d8f808bf38 | ||
|
|
807dc7d220 | ||
|
|
b14d0c9f60 | ||
|
|
738a1a330c | ||
|
|
676b02c8de | ||
|
|
7136400a33 | ||
|
|
4651d9df68 | ||
|
|
00555a8e9e | ||
|
|
e8c4615ff6 | ||
|
|
763467058b | ||
|
|
c055ba2985 | ||
|
|
7666541905 | ||
|
|
f4b0b39beb | ||
|
|
cfc0925e75 | ||
|
|
4dcc368378 | ||
|
|
8207908d9e | ||
|
|
e08da096dd | ||
|
|
9a903a1ca3 | ||
|
|
1b22bf0e08 | ||
|
|
fc3187a781 | ||
|
|
7fbb4045e2 | ||
|
|
d0dc22794e | ||
|
|
0f235a80e0 | ||
|
|
2a28046382 | ||
|
|
169bbfd2db | ||
|
|
1f52bb35ba | ||
|
|
4a03b3d7d9 | ||
|
|
2544a7e4ea | ||
|
|
26e77ba2c3 | ||
|
|
28c11801f3 | ||
|
|
b3e2ab0f3b | ||
|
|
fb12ba8a2b | ||
|
|
7a5bc864fa | ||
|
|
2e85d4b55a | ||
|
|
80951a8e6e | ||
|
|
9acddede65 | ||
|
|
22165ec1a5 | ||
|
|
d7036aae48 | ||
|
|
fe3924b432 | ||
|
|
510cffb305 | ||
|
|
05c789ae50 | ||
|
|
5d95d61aef | ||
|
|
c61fa71a70 | ||
|
|
3145269f65 | ||
|
|
2d00a1e265 | ||
|
|
f7f178d6e3 | ||
|
|
18c591e0d0 | ||
|
|
749241f4e5 | ||
|
|
997c368604 | ||
|
|
ed28928c84 | ||
|
|
b55c916e77 | ||
|
|
4d537b2a9a | ||
|
|
21f7d6c9b9 | ||
|
|
c1b865d00e | ||
|
|
a32e740242 | ||
|
|
c4f09b5598 | ||
|
|
5a89aa3b32 | ||
|
|
149d57150c | ||
|
|
bbc241748b | ||
|
|
74ecea6307 | ||
|
|
2e829956f4 | ||
|
|
9e2c9cbba9 | ||
|
|
1ad740800b | ||
|
|
c00d4c1a7b | ||
|
|
e0985ebb1c | ||
|
|
d5706442de | ||
|
|
ad5a173f3f | ||
|
|
fbb1d9247f | ||
|
|
63591941b8 | ||
|
|
fdfeec54d7 | ||
|
|
b2404809fc | ||
|
|
f9f463e799 | ||
|
|
f1d3a553d1 | ||
|
|
e997b148e1 | ||
|
|
af906fac03 | ||
|
|
19945df0b3 | ||
|
|
bf83d552f8 | ||
|
|
f5d8e99fc7 | ||
|
|
975037c5a0 | ||
|
|
8b0b45e089 | ||
|
|
182f2ae26e | ||
|
|
26982787ee | ||
|
|
4a42e3ef1b | ||
|
|
4f4498666e | ||
|
|
8f9ba44c2c | ||
|
|
1f91d4fa7b | ||
|
|
cf97d090f3 | ||
|
|
9cd96a65d6 | ||
|
|
5fc75cb4cd | ||
|
|
27fe566412 | ||
|
|
a68c7bf019 | ||
|
|
11388849de | ||
|
|
aa8fb55b30 | ||
|
|
472bea2baa | ||
|
|
0a7a6c64ce | ||
|
|
fde8196874 | ||
|
|
ea8576d344 | ||
|
|
9adda25e00 | ||
|
|
2cc0bf22cb | ||
|
|
892ebc2e03 | ||
|
|
5c9ee03389 | ||
|
|
3702b0c694 | ||
|
|
451d662af4 | ||
|
|
7b8e0a2755 | ||
|
|
63ba4f4f91 | ||
|
|
5f92465d0f | ||
|
|
64c8c5a014 | ||
|
|
2d6322f799 | ||
|
|
8127ce18a3 | ||
|
|
7b5801920b | ||
|
|
c18c1e59df | ||
|
|
4959e664a9 | ||
|
|
fb5ba257ef | ||
|
|
0ed1c0aa6b | ||
|
|
a12fac780b | ||
|
|
0b16e13597 | ||
|
|
45a9e54631 | ||
|
|
b969307c5e | ||
|
|
20325e87be | ||
|
|
fc48d9047a | ||
|
|
16b4db5083 | ||
|
|
4c7487cd2e | ||
|
|
271033e79d | ||
|
|
d2ddcf2d38 | ||
|
|
8a2ab30302 | ||
|
|
3070b0019e | ||
|
|
68ef1fc9e0 | ||
|
|
c13d67dea5 | ||
|
|
b52cf070f5 | ||
|
|
e363cd9813 | ||
|
|
c10fc26cce | ||
|
|
3bb7123dd5 | ||
|
|
2f2a7d1f89 | ||
|
|
013d307bcd | ||
|
|
5e616dd502 | ||
|
|
f200bd2198 | ||
|
|
bd36ee4f67 | ||
|
|
e0e5cc076d | ||
|
|
95e3fb24f3 | ||
|
|
83d47aed2d | ||
|
|
bbd7cf306a | ||
|
|
f6b5c752f4 | ||
|
|
ff20acc367 | ||
|
|
46c2720fc7 | ||
|
|
cf0e3ec303 | ||
|
|
c6bb3d6ae2 | ||
|
|
b39ba92cfe | ||
|
|
deb1c190c9 | ||
|
|
5d0384f580 | ||
|
|
d3ce8203be | ||
|
|
6e80f0d93b | ||
|
|
c9a923decf | ||
|
|
1be5f2d647 | ||
|
|
a38bba80ee | ||
|
|
b15d84359b | ||
|
|
a3670b731e | ||
|
|
b89546de37 | ||
|
|
fad4314538 | ||
|
|
a331961ef3 | ||
|
|
e6f62dc95e | ||
|
|
bd6d863921 | ||
|
|
c11117b070 | ||
|
|
f387ccb9e4 | ||
|
|
fd49830c35 | ||
|
|
578ca6975f | ||
|
|
c0442edb8d | ||
|
|
1416197b62 | ||
|
|
e1dd53f146 | ||
|
|
73abd0f8b8 | ||
|
|
ab982e86c3 | ||
|
|
20a4cd49de | ||
|
|
387d712b67 | ||
|
|
3d9ec91b35 | ||
|
|
8892c8c883 | ||
|
|
c51c98d682 | ||
|
|
3f4ac84cfb | ||
|
|
c5a864e86b | ||
|
|
e945dceab9 | ||
|
|
f176832851 | ||
|
|
ab195ea520 | ||
|
|
e4b861e766 | ||
|
|
ead6d8d3a1 | ||
|
|
796e2ec825 | ||
|
|
a597c3f835 | ||
|
|
c14cb29334 | ||
|
|
a233d28efc | ||
|
|
c7bc2ca82d | ||
|
|
bd6323ccae | ||
|
|
4326bfa504 | ||
|
|
b7a4c0664b | ||
|
|
da7bcf89d4 | ||
|
|
3907cc679a | ||
|
|
8cc5aee528 | ||
|
|
d0b5c4de28 | ||
|
|
431150c262 | ||
|
|
ee994ea393 | ||
|
|
53cd259ffa | ||
|
|
c0ed44abf9 | ||
|
|
0807eec4cc | ||
|
|
aec7271f50 | ||
|
|
a723518346 | ||
|
|
5d6d8e68ed | ||
|
|
197a9330df | ||
|
|
8b807d7b50 | ||
|
|
03c0111017 | ||
|
|
e55752869b | ||
|
|
94830cffca | ||
|
|
8d4319ba5f | ||
|
|
06987c4ca9 | ||
|
|
70c0edcbe7 | ||
|
|
7a482fd22a | ||
|
|
022b8ec13a | ||
|
|
b02f169764 | ||
|
|
6c0254b5f4 | ||
|
|
0a60d7016d | ||
|
|
315a2a695f | ||
|
|
863c8de28e | ||
|
|
92213f9228 | ||
|
|
253c8118a2 | ||
|
|
290c980d5f | ||
|
|
6ead1f4bd9 | ||
|
|
6e4a5b64b7 | ||
|
|
6e3e60a44d | ||
|
|
b88fafe5ff | ||
|
|
17a56bbf48 | ||
|
|
d8e51c6b14 | ||
|
|
44554cb54b | ||
|
|
0bd86a8211 | ||
|
|
7fcb3d70bb | ||
|
|
563cd828ad | ||
|
|
3581e0beed | ||
|
|
da04de7b2d | ||
|
|
661ce29519 | ||
|
|
56bed3f297 | ||
|
|
79a8715c8b | ||
|
|
69062dca16 | ||
|
|
40d3085cc2 | ||
|
|
5e444de031 | ||
|
|
3e61b89499 | ||
|
|
76e9d749c9 | ||
|
|
3e47c352a3 | ||
|
|
6028cfc1a3 | ||
|
|
20f1a85e69 | ||
|
|
00d3d0f094 | ||
|
|
8756ae0fe6 | ||
|
|
bdb1fc2ed7 | ||
|
|
34d64fbcaf | ||
|
|
3eeb0628f5 | ||
|
|
3ed71fa21e | ||
|
|
731ecfda64 | ||
|
|
230eb76532 | ||
|
|
93f2b288b5 | ||
|
|
d9ee9ba238 | ||
|
|
e000fdfb50 | ||
|
|
4e97d2503b | ||
|
|
f21f793343 | ||
|
|
c470f2734d | ||
|
|
28ddf6cf07 | ||
|
|
e0302d1f09 | ||
|
|
a536f79f6d | ||
|
|
5c48fb9e66 | ||
|
|
994ba1edd9 | ||
|
|
ed90979417 | ||
|
|
4dc2172426 | ||
|
|
daa41f8664 | ||
|
|
4e93ffb924 | ||
|
|
f29363f56d | ||
|
|
23680ccb14 | ||
|
|
986e58aeec | ||
|
|
13da75c2b6 | ||
|
|
28b28cfef6 | ||
|
|
167bf70cd6 | ||
|
|
5236dcfe52 | ||
|
|
a437524c8f | ||
|
|
fcbd48648c | ||
|
|
3f29273f6e | ||
|
|
b78ffdad02 | ||
|
|
fd4cd3ed04 | ||
|
|
d8001fcaea | ||
|
|
9771c652c5 | ||
|
|
a0c7bbe213 | ||
|
|
6b43042828 | ||
|
|
73f0b1e8a3 | ||
|
|
fa1b61b3e3 | ||
|
|
c116e94cba | ||
|
|
7229652e31 | ||
|
|
03acf7a05c | ||
|
|
d83d8c18fc | ||
|
|
2080e56f87 | ||
|
|
90f0f27fca | ||
|
|
5837026e83 | ||
|
|
edc67e5da2 | ||
|
|
55b43f4612 | ||
|
|
32a32e4a72 | ||
|
|
0eae0da781 | ||
|
|
51b62ea467 | ||
|
|
462fa5999f | ||
|
|
82b730c5b8 | ||
|
|
492ea7264a | ||
|
|
a1c910e3aa | ||
|
|
bf5f58e0ce | ||
|
|
428bc9b419 | ||
|
|
a2742caa87 | ||
|
|
d2a5edda46 | ||
|
|
38f8956bd0 | ||
|
|
ec8deab454 | ||
|
|
cdc92fc552 | ||
|
|
53fb48fe7d | ||
|
|
73e4006447 | ||
|
|
c2ff269b5f | ||
|
|
c7310b64ad | ||
|
|
83daa702f9 | ||
|
|
cb1a06270e | ||
|
|
fd34f97120 | ||
|
|
2dc8f3b3e4 | ||
|
|
7e5b81ff4d | ||
|
|
f5b945c09b | ||
|
|
6014dd05a0 | ||
|
|
0c6aa381c5 | ||
|
|
0246f050e2 | ||
|
|
5f222c4df2 | ||
|
|
800f3f765f | ||
|
|
635f346b12 | ||
|
|
abe79dbf64 | ||
|
|
2b72622fe8 | ||
|
|
201c7a7e49 | ||
|
|
ef21283a61 | ||
|
|
4eb76cdc30 | ||
|
|
3b68f598b1 | ||
|
|
31db43dbb0 | ||
|
|
1efc4a03cc | ||
|
|
607c818879 | ||
|
|
6d5f044948 | ||
|
|
f24a8b3918 | ||
|
|
2e402098a2 | ||
|
|
3389c798f6 | ||
|
|
738ad474c1 | ||
|
|
86e2ac1497 | ||
|
|
b2a4f11e0b | ||
|
|
09d380ba8f | ||
|
|
12bfa72f31 | ||
|
|
b0990ac6ec | ||
|
|
6f1f07a1c4 | ||
|
|
f55fdae9eb | ||
|
|
b0225880de | ||
|
|
74be6af3e6 | ||
|
|
72f5fbd6ad | ||
|
|
ae3efa1151 | ||
|
|
348ed268c3 | ||
|
|
df19ccf998 | ||
|
|
db2e4f30a7 | ||
|
|
a1e1f5aab6 | ||
|
|
7ffe11b000 | ||
|
|
eb5ea17610 | ||
|
|
8657381dce | ||
|
|
55114082e3 | ||
|
|
64051e9cfa | ||
|
|
780d64a349 | ||
|
|
bcd1827d8a | ||
|
|
0097f5fc8d | ||
|
|
3766d2b97b | ||
|
|
f2b7bfc561 | ||
|
|
4d3484002d | ||
|
|
34f20f914a | ||
|
|
19444353b4 | ||
|
|
b4f0a13779 | ||
|
|
fa815af798 | ||
|
|
f1e2aa8c96 | ||
|
|
9fd24db257 | ||
|
|
73414f2ee1 | ||
|
|
7b37e5183c | ||
|
|
bb8438c770 | ||
|
|
3dd329a999 | ||
|
|
ab2672777e | ||
|
|
45aea4176f | ||
|
|
f8dfbbb0b9 | ||
|
|
48a348c4d1 | ||
|
|
870ff56629 | ||
|
|
b2ed8d8560 | ||
|
|
e8510ddc58 | ||
|
|
97f7575409 | ||
|
|
5220157b01 | ||
|
|
900f9ec9a9 | ||
|
|
52ec2c2538 | ||
|
|
31101221e0 | ||
|
|
ae37c2ab2a | ||
|
|
e8d014d80d | ||
|
|
b88f1dc79a | ||
|
|
dccc791c99 | ||
|
|
474d2402b7 | ||
|
|
7a9f1e9c6c | ||
|
|
98364e83b6 | ||
|
|
bf65f033dd | ||
|
|
2d9b430327 | ||
|
|
ec54443674 | ||
|
|
0fb84ccc49 | ||
|
|
0b4aad4931 | ||
|
|
ab470d4a4c | ||
|
|
88e1245d10 | ||
|
|
bc4dbd6194 | ||
|
|
b35df54c81 | ||
|
|
c53c7b1aaa | ||
|
|
0a0653358c | ||
|
|
e2ccaf2c91 | ||
|
|
75f5212661 | ||
|
|
1e548af987 | ||
|
|
2c2c828b47 | ||
|
|
19e49a7de7 | ||
|
|
18c9ad25be | ||
|
|
9e3f0304de | ||
|
|
55dbcb646b | ||
|
|
db0ab2e4a9 | ||
|
|
c254eebea2 | ||
|
|
45b0e7dc01 | ||
|
|
4c4c62c7e5 | ||
|
|
cb2038442c | ||
|
|
1d219eb8f2 | ||
|
|
7d33563010 | ||
|
|
e3d34c46c7 | ||
|
|
9129e82804 | ||
|
|
d4f4a64937 | ||
|
|
2b4a51ba24 | ||
|
|
6a8d755b27 | ||
|
|
754fea538a | ||
|
|
4d0b660c73 | ||
|
|
d0173fbdc5 | ||
|
|
62ae4aeac9 | ||
|
|
e98aa81794 | ||
|
|
a5dcac137f | ||
|
|
96215d32b7 | ||
|
|
4a20989028 | ||
|
|
f5fe6a36eb | ||
|
|
852bab6e0b | ||
|
|
52ec27f785 | ||
|
|
c6d617f190 | ||
|
|
1a6ef23ee7 | ||
|
|
759bbeac06 | ||
|
|
15c72fe7d3 | ||
|
|
f6973f9a70 | ||
|
|
f1d5afe72a | ||
|
|
e1f2cd21e7 | ||
|
|
ea5c60af7a | ||
|
|
558567d399 | ||
|
|
0c1899a0af | ||
|
|
28d8ad1e61 | ||
|
|
eb0a0662a3 | ||
|
|
3a21efbaae | ||
|
|
405363da59 | ||
|
|
e5bcfeaad5 | ||
|
|
8b8cfa7a1b | ||
|
|
af131cd1e5 | ||
|
|
a7bb90e7e6 | ||
|
|
25cf36a948 | ||
|
|
cc3ff284f7 | ||
|
|
0af6f271c6 | ||
|
|
441cddbde6 | ||
|
|
1ab09c65f0 | ||
|
|
b9892fc2d0 | ||
|
|
14bf3056de | ||
|
|
b3b9555daa | ||
|
|
db66ffc868 | ||
|
|
91decea302 | ||
|
|
065c19cbbc | ||
|
|
296ebd0341 | ||
|
|
5293e3b277 | ||
|
|
78f5b1e607 | ||
|
|
17af5622ec | ||
|
|
2afce3f1f4 | ||
|
|
dc29b4afa1 | ||
|
|
55fc0cb63b | ||
|
|
5e1eda9e97 | ||
|
|
d582af8cb2 | ||
|
|
0931341a7f | ||
|
|
92916d9820 | ||
|
|
12fbbbb5b3 | ||
|
|
0a603d022f | ||
|
|
2ada9fbee3 | ||
|
|
6e2132c65e | ||
|
|
71dbf0fab2 | ||
|
|
048e97e1ee | ||
|
|
f1c0f1d0a4 | ||
|
|
7242d03f56 | ||
|
|
58bbc33aa6 | ||
|
|
85e82d0bd5 | ||
|
|
d6c23bb5f3 | ||
|
|
8235bca664 | ||
|
|
cd2541a9d2 | ||
|
|
4f7036a405 | ||
|
|
227c9594db | ||
|
|
ea41a60057 | ||
|
|
eee47eae61 | ||
|
|
b6c1816833 | ||
|
|
4e359848d1 | ||
|
|
9cce56caf8 | ||
|
|
f5f0bae2ef | ||
|
|
4fc65aac84 | ||
|
|
bf32477f89 | ||
|
|
969eeff636 | ||
|
|
958607ba9b | ||
|
|
dcfcc1f271 | ||
|
|
bc3c6af95d | ||
|
|
701220246d | ||
|
|
e3b0cdaf69 | ||
|
|
c61cbfc581 | ||
|
|
58073484fe | ||
|
|
8ce1bb1b0b | ||
|
|
3fab42b8d1 | ||
|
|
5b802e9edd | ||
|
|
a9308dd992 | ||
|
|
937a3e7fd6 | ||
|
|
c9caa5687a | ||
|
|
d6950c680f | ||
|
|
4fe33db4f3 | ||
|
|
96d9604fe1 | ||
|
|
0c6eacb141 | ||
|
|
e83a97349f | ||
|
|
6c5f0aecb4 | ||
|
|
d9160f9126 | ||
|
|
1d93de8628 | ||
|
|
54de5b0300 | ||
|
|
b7145959a7 | ||
|
|
1d32a96b01 | ||
|
|
9cc02d6fcb | ||
|
|
5d18c04661 | ||
|
|
e88e17a4b0 | ||
|
|
a75d73b8ac | ||
|
|
bbac6b55d2 | ||
|
|
3eeed39f52 | ||
|
|
7356b7a104 | ||
|
|
54310b925d | ||
|
|
85b5c60d60 | ||
|
|
ab48ae6ca6 | ||
|
|
7a62eb0ebf | ||
|
|
c9423509a9 | ||
|
|
0c77d6d918 | ||
|
|
a0cc6afa7e | ||
|
|
8a08a0211f | ||
|
|
2c044d7262 | ||
|
|
9ff3160808 | ||
|
|
7671ed857d | ||
|
|
b9bbe7a432 | ||
|
|
76a18f5ed3 | ||
|
|
0ee2b02700 | ||
|
|
173984ffd4 | ||
|
|
f309ae0c67 | ||
|
|
26ef2539df | ||
|
|
bc7df4c841 | ||
|
|
26c95bab66 | ||
|
|
95b588f58e | ||
|
|
15e8f6ffb7 | ||
|
|
10cdd7640e | ||
|
|
f216287aee | ||
|
|
38871a98b4 | ||
|
|
9158bdfcf9 | ||
|
|
4dd694ab05 | ||
|
|
553e3ee758 | ||
|
|
a470bf127e | ||
|
|
52adf51d33 | ||
|
|
d688e34521 | ||
|
|
50b8744f24 | ||
|
|
3e6faf8364 | ||
|
|
720de651f3 | ||
|
|
3d382d0354 | ||
|
|
8fea5585e5 | ||
|
|
3f12a17246 | ||
|
|
087ff278aa | ||
|
|
301abcaa49 | ||
|
|
e33b8cc8e5 | ||
|
|
d1bc8a7202 | ||
|
|
77fa3bd7fc | ||
|
|
3162fcf154 | ||
|
|
c618bdfe91 | ||
|
|
dd5c9939a0 | ||
|
|
80082b0880 | ||
|
|
b7aa115bd2 | ||
|
|
0e9950638c | ||
|
|
a957acd893 | ||
|
|
a9244333fb | ||
|
|
63a19bc0a1 | ||
|
|
c25d648321 | ||
|
|
2f6711dd2d | ||
|
|
c450b41e8f | ||
|
|
9937650062 | ||
|
|
56ff88934f | ||
|
|
c1a577797a | ||
|
|
257227920d | ||
|
|
461633cd83 | ||
|
|
a0887e9285 | ||
|
|
23354d371f | ||
|
|
0e838d59d5 | ||
|
|
f305c9d96a | ||
|
|
226665403f | ||
|
|
88d0460e3c | ||
|
|
e09b4f878e | ||
|
|
a7ef3ce58a | ||
|
|
256f33b720 | ||
|
|
e17002c6da | ||
|
|
f2d96b895f | ||
|
|
dade589075 | ||
|
|
0d9cd25a71 | ||
|
|
cb73490107 | ||
|
|
535405521c | ||
|
|
8785c08861 | ||
|
|
0020a37029 | ||
|
|
33cbed592a | ||
|
|
28c0e15058 | ||
|
|
a316411f76 | ||
|
|
66ad519dbd | ||
|
|
2a8dc1d34a | ||
|
|
228b670b4f | ||
|
|
da9fb46b6a | ||
|
|
f4d120b11f | ||
|
|
bc954b75ce | ||
|
|
b787734913 | ||
|
|
fb5a6c20de | ||
|
|
3fda085cbb | ||
|
|
d87ea854bc | ||
|
|
f41cb0d81c | ||
|
|
8427b03a39 | ||
|
|
9cb7786182 | ||
|
|
6666dece5d | ||
|
|
efdd17fa9a | ||
|
|
7f7d5d9f4c | ||
|
|
9b542f7653 | ||
|
|
b27c3ff169 | ||
|
|
115221098a | ||
|
|
5a6a7e8d82 | ||
|
|
9383d4c97c | ||
|
|
39e3b136dc | ||
|
|
a48532d0b1 | ||
|
|
83d9cb55f1 | ||
|
|
d8ace7e38b | ||
|
|
8524192a91 | ||
|
|
23e2040797 | ||
|
|
afe12154a2 | ||
|
|
cabfdccfa4 | ||
|
|
16da5ccc91 | ||
|
|
24f8506740 | ||
|
|
e03399749a | ||
|
|
f8a6423bf4 | ||
|
|
ce993ea63a | ||
|
|
25e784fe8a | ||
|
|
b5411b686d | ||
|
|
71f136be20 | ||
|
|
1f0b9bf798 | ||
|
|
cff872dd07 | ||
|
|
662a768d83 | ||
|
|
c3abd3e2b3 | ||
|
|
7ec462737b | ||
|
|
ee8510cec7 | ||
|
|
3cc6ba005a | ||
|
|
7c9068cf17 | ||
|
|
e1ae3601c4 | ||
|
|
8ce51cbf53 | ||
|
|
0cffb3651c | ||
|
|
90e6c016a6 | ||
|
|
9cba0a0b89 | ||
|
|
f68ef1492f | ||
|
|
535e1bd2ce | ||
|
|
df02292338 | ||
|
|
e2d38208c4 | ||
|
|
cdb264d47b | ||
|
|
73c19803a2 | ||
|
|
622b2f3858 | ||
|
|
83061afe6f | ||
|
|
24547c11cb | ||
|
|
cfdc9ad03c | ||
|
|
a012414f9f | ||
|
|
ce5abfc3cd | ||
|
|
30b260ab21 | ||
|
|
15839d9815 | ||
|
|
08af0d4bf2 | ||
|
|
979203cbdb | ||
|
|
a7163c6a04 | ||
|
|
8b5f389cd7 | ||
|
|
d30a9b545e | ||
|
|
d26d680390 | ||
|
|
24e6b54650 | ||
|
|
d56356e595 | ||
|
|
be11c7127d | ||
|
|
cf557bc63e | ||
|
|
78c620126c | ||
|
|
17a6c697c7 | ||
|
|
2279c1ce70 | ||
|
|
7fa1bcfdfb | ||
|
|
5102adfd5c | ||
|
|
9f3a0699f6 | ||
|
|
81bf4bc028 | ||
|
|
d2c84c5fc2 | ||
|
|
8b6be8234d | ||
|
|
d7f0acd96d | ||
|
|
d805d74f05 | ||
|
|
37d540544a | ||
|
|
8651466cf2 | ||
|
|
90c55c0096 | ||
|
|
87d489207c | ||
|
|
6045b5fead | ||
|
|
1976fd6164 | ||
|
|
be4c64de71 | ||
|
|
443d9669b6 | ||
|
|
8dcb2e073a | ||
|
|
b34282e1f3 | ||
|
|
21bb40fce5 | ||
|
|
2a95d13eae | ||
|
|
b1331a6259 | ||
|
|
2e2b6555fa | ||
|
|
be55926cfe | ||
|
|
1ff94d1035 | ||
|
|
8e9f3e2b4d | ||
|
|
4aac3d076f | ||
|
|
014ce28e3a | ||
|
|
1ef2ca83a9 | ||
|
|
9adac5686b | ||
|
|
1dc96e4fd2 | ||
|
|
542d86b667 | ||
|
|
9ac4346850 | ||
|
|
df32e4e7b6 | ||
|
|
7ccd8e2c87 | ||
|
|
da4679f0ae | ||
|
|
416897994a | ||
|
|
fc8c1793f2 | ||
|
|
f9cd9a97ef | ||
|
|
b063740d3e | ||
|
|
c37732be9b | ||
|
|
1141b99cf4 | ||
|
|
6f8483aecd | ||
|
|
1e75b172d6 | ||
|
|
553a3798a1 | ||
|
|
29c661d919 | ||
|
|
309cb1010c | ||
|
|
1bcac047aa | ||
|
|
0e6bd87e19 | ||
|
|
1bb48e1979 | ||
|
|
f2381a34c7 | ||
|
|
4e20e9c91a | ||
|
|
124fc98116 | ||
|
|
3131d25de4 | ||
|
|
b8b1d9e991 | ||
|
|
4c25f94bd1 | ||
|
|
a1215749d2 | ||
|
|
d45def7cbe | ||
|
|
fb02334b46 | ||
|
|
923d76cf69 | ||
|
|
e01377e100 | ||
|
|
57b8ec178c | ||
|
|
b2f5e2f927 | ||
|
|
fad88c2718 | ||
|
|
e205577145 | ||
|
|
5112398ad3 | ||
|
|
e8d1d5f5fc | ||
|
|
91d091aaba | ||
|
|
cf1631130d | ||
|
|
d5a0d0cfa0 | ||
|
|
bf9ed4753e | ||
|
|
9eb1fd0151 | ||
|
|
96d46b4770 | ||
|
|
b60d2501cb | ||
|
|
a5bba37cae | ||
|
|
bbcb1e3d25 | ||
|
|
6f3af14623 | ||
|
|
0d6356c855 | ||
|
|
845fdec015 | ||
|
|
aeae2b3ef7 | ||
|
|
3d49909fc9 | ||
|
|
0bb03a083a | ||
|
|
ff3ca6f719 | ||
|
|
4b33ee6309 | ||
|
|
ae640dda56 | ||
|
|
722b82e1a5 | ||
|
|
089078472f | ||
|
|
214e4285be | ||
|
|
8870283f6f | ||
|
|
815f10876c | ||
|
|
591d631b0d | ||
|
|
a1780d43bb | ||
|
|
f722c6f684 | ||
|
|
d18250d1e7 | ||
|
|
85c149d8e4 | ||
|
|
0e6d368970 | ||
|
|
886fb73521 | ||
|
|
64dd1dc967 | ||
|
|
098df81754 | ||
|
|
53218409d7 | ||
|
|
a7a460a29d | ||
|
|
b4e34b6158 | ||
|
|
6608bf882f | ||
|
|
f5493ab0c4 | ||
|
|
f9f06e91f5 | ||
|
|
3c3d1a84ef | ||
|
|
e85c0d16b6 | ||
|
|
ef022c91bb | ||
|
|
d66b10b508 | ||
|
|
bea88f31e0 | ||
|
|
8b82db1220 | ||
|
|
14cbd842f5 | ||
|
|
26cd24d92f | ||
|
|
e2fdd69524 | ||
|
|
71996c9509 | ||
|
|
544cb203ea | ||
|
|
fdd24dcb72 | ||
|
|
ea12eccc90 | ||
|
|
87600d36e4 | ||
|
|
85e6ed32a1 | ||
|
|
c749ebff46 | ||
|
|
39f0edcb32 | ||
|
|
823632ccba | ||
|
|
86fa3928a7 | ||
|
|
7f6b18fc9c | ||
|
|
8301b4bf4e | ||
|
|
16c94fb1d0 | ||
|
|
1be383e50e | ||
|
|
66b90c2a08 | ||
|
|
f502eb0ea5 | ||
|
|
7921be45f5 | ||
|
|
a1095b8844 | ||
|
|
399af2fbf6 | ||
|
|
d54c96e455 | ||
|
|
eb8231af14 | ||
|
|
59c865293f | ||
|
|
72cfe05323 | ||
|
|
aaa03db69c | ||
|
|
6368ab691c | ||
|
|
5b2358c97f | ||
|
|
072430cef5 | ||
|
|
5f7055e282 | ||
|
|
be982d95ea | ||
|
|
b9c8df7019 | ||
|
|
e89ae475f6 | ||
|
|
9476d7fdbb | ||
|
|
da16a799fa | ||
|
|
9e0feb0b64 | ||
|
|
93a600a0a8 | ||
|
|
06ee68f836 | ||
|
|
d6f1abad95 | ||
|
|
933c99110c | ||
|
|
8999bbf297 | ||
|
|
200fc56a4a | ||
|
|
c4f642258b | ||
|
|
67c90eda4b | ||
|
|
d2413b1899 | ||
|
|
bc0a5bf6e1 | ||
|
|
54a396ed1b | ||
|
|
7e9084e10f | ||
|
|
db45552a05 | ||
|
|
46b3cf1871 | ||
|
|
96e3d9496d | ||
|
|
f3e13cd9dd | ||
|
|
8645e92951 | ||
|
|
3fd58bb69d | ||
|
|
5028b8a93d | ||
|
|
9d5027b932 | ||
|
|
064d00f136 | ||
|
|
723a1897b9 | ||
|
|
9a6c38f0e8 | ||
|
|
d3b305ced3 | ||
|
|
e6dd082b0f | ||
|
|
ebfebdffa7 | ||
|
|
0d2c46a893 | ||
|
|
6b17644d98 | ||
|
|
6c38dc7d4a | ||
|
|
714f191a9d | ||
|
|
28cbe0f464 | ||
|
|
09a6b3c30a | ||
|
|
0d16f54c2f | ||
|
|
47956871e8 | ||
|
|
de85c9448a | ||
|
|
f022cbb93f | ||
|
|
52bffd4030 | ||
|
|
a35635f4bb | ||
|
|
fbde794d39 | ||
|
|
9121de746f | ||
|
|
9a7a600407 | ||
|
|
3ecf0cc685 | ||
|
|
38d4f29e51 | ||
|
|
e830a59c2a | ||
|
|
6fbc23a096 | ||
|
|
9093d29ae4 | ||
|
|
7692dcd629 | ||
|
|
dcad52cf52 | ||
|
|
6a500f2ede | ||
|
|
312c6324d2 | ||
|
|
21cf2a01c7 | ||
|
|
3ba979a9d7 | ||
|
|
7defb54f15 | ||
|
|
a926cc0dce | ||
|
|
32fe330946 | ||
|
|
8dac38d844 | ||
|
|
28829ce671 | ||
|
|
bebe2b5282 | ||
|
|
db2ec7df8f | ||
|
|
4d3f5373d4 | ||
|
|
c9c1ad5829 | ||
|
|
8c8b5cbb1c | ||
|
|
d91d87b67f | ||
|
|
772548dbf9 | ||
|
|
9b614c8b32 | ||
|
|
836a2b0fbd | ||
|
|
b5679df7f9 | ||
|
|
ac88f55f25 | ||
|
|
6b375cb0a3 | ||
|
|
be45ec13c0 | ||
|
|
f56def14d2 | ||
|
|
d43af7d8ad | ||
|
|
b6abcaee7a | ||
|
|
6a818763fd | ||
|
|
9905695699 | ||
|
|
278ce0281d | ||
|
|
b34f745837 | ||
|
|
0c50feeb1b | ||
|
|
c44b641cce | ||
|
|
2c86fac208 | ||
|
|
4e1d7ca3de | ||
|
|
35c1cee18b | ||
|
|
0bf007e63c | ||
|
|
3f3c45b663 | ||
|
|
dab956fe85 | ||
|
|
d28d3baf05 | ||
|
|
897dc1c2ba | ||
|
|
dd97dc580b | ||
|
|
8d830382de | ||
|
|
e39be54afa | ||
|
|
7f7e8692a8 | ||
|
|
36d509238d | ||
|
|
a8cddb5b19 | ||
|
|
186f5ed39c | ||
|
|
46233a0f4c | ||
|
|
7dcb28ce33 | ||
|
|
f4b52890e0 | ||
|
|
99bcbaa601 | ||
|
|
d665d91920 | ||
|
|
70d16ab097 | ||
|
|
6111042907 | ||
|
|
0533f7c3d6 | ||
|
|
221fe6223a | ||
|
|
baf8d2511d | ||
|
|
9dd7b4d5d8 | ||
|
|
3edba4e2db | ||
|
|
3c1465692e | ||
|
|
68835586a9 | ||
|
|
26ba25d2ae | ||
|
|
7eec6e2cc0 | ||
|
|
be9cddcad8 | ||
|
|
fdfdbb3ffc | ||
|
|
5124cc49b3 | ||
|
|
a47db31d46 | ||
|
|
d02dc1797c | ||
|
|
7ddc706f2d | ||
|
|
755353dc0b | ||
|
|
2692c29519 | ||
|
|
e2228cc448 | ||
|
|
152616a261 | ||
|
|
21850b4444 | ||
|
|
bc039a31c5 | ||
|
|
2db8f1f9d1 | ||
|
|
5817e48e17 | ||
|
|
bf42d66171 | ||
|
|
30c2c92970 | ||
|
|
01ab0cf196 | ||
|
|
fd12f69afa | ||
|
|
53e87352da | ||
|
|
e12d0ef4aa | ||
|
|
e4ac34da0d | ||
|
|
e121ed8ecb | ||
|
|
1970795093 | ||
|
|
902f56c499 | ||
|
|
1a8463015f | ||
|
|
688ecef4cc | ||
|
|
773a74e2a9 | ||
|
|
f495bf105f | ||
|
|
72c198a1e9 | ||
|
|
bf2dbf5ff4 | ||
|
|
2f5ae54c08 | ||
|
|
7c36bb7b52 | ||
|
|
f5cf291f55 | ||
|
|
f000e05267 | ||
|
|
12e565fb03 | ||
|
|
a9c4bd4a30 | ||
|
|
56c8e00b8b | ||
|
|
5a0865559c | ||
|
|
0f611d03dd | ||
|
|
f64dd3794a | ||
|
|
bdc5cded22 | ||
|
|
cd5658f01d | ||
|
|
e12717fe5f | ||
|
|
7cd12f151c | ||
|
|
5cb4413655 | ||
|
|
e148cc7e51 | ||
|
|
17587bb299 | ||
|
|
4ecbf7aec6 | ||
|
|
c33dd8e2ef | ||
|
|
a7e73df801 | ||
|
|
2ffc528986 | ||
|
|
11595be199 | ||
|
|
7640a51726 | ||
|
|
d59be68e52 | ||
|
|
6fa48b4ada | ||
|
|
6c475bf02a | ||
|
|
d6cbcae08f | ||
|
|
e978d1d0fd | ||
|
|
897bfbaf0e | ||
|
|
bd914497c9 | ||
|
|
8595d3e569 | ||
|
|
4401ccd6fa | ||
|
|
5555cf8fbe | ||
|
|
cc9f69d63b | ||
|
|
9ca01b0898 | ||
|
|
9b7e5b38ad | ||
|
|
f47f2a9151 | ||
|
|
4c32bea702 | ||
|
|
4009fd77e8 | ||
|
|
433059f8a0 | ||
|
|
416cdac1fe | ||
|
|
e143493d7b | ||
|
|
f7c1b8d88f | ||
|
|
63ac61d920 | ||
|
|
3f1a4d581b | ||
|
|
ac60ba40a2 | ||
|
|
831a50e702 | ||
|
|
4bc7466da3 | ||
|
|
d649d13c97 | ||
|
|
086c48cea9 | ||
|
|
cf6fbae30a | ||
|
|
30c002831e | ||
|
|
2ab513893d | ||
|
|
a4600dd8a8 | ||
|
|
285387c4c1 | ||
|
|
c88219b769 | ||
|
|
50c737694f | ||
|
|
549dc05713 | ||
|
|
ac743ca2fe | ||
|
|
97f14d21e8 | ||
|
|
2c619cbe41 | ||
|
|
dd4f52b63d | ||
|
|
69f1969e60 | ||
|
|
64b680e7cf | ||
|
|
ddaefddc6e | ||
|
|
3343210e8b | ||
|
|
2e256c0fca | ||
|
|
5403166552 | ||
|
|
d761d2f00e | ||
|
|
19c8ba719a | ||
|
|
55972bfac5 | ||
|
|
c0ead118a2 | ||
|
|
c15e3c306e | ||
|
|
3c4852a254 | ||
|
|
61a48b5367 | ||
|
|
7f4548021b | ||
|
|
0a29fa87f0 | ||
|
|
8d92ee424f | ||
|
|
ceb78aa095 | ||
|
|
6dd476fecb | ||
|
|
e5bdbffbcf | ||
|
|
1de50e8170 | ||
|
|
27353f98ff | ||
|
|
ef097c7a7a | ||
|
|
33606eee9f | ||
|
|
ac2b9a6fc1 | ||
|
|
264b282f5c | ||
|
|
9321a4f486 | ||
|
|
ffbc6e0c8b | ||
|
|
fa420c4825 | ||
|
|
4d2036512a | ||
|
|
63bf4b5fa8 | ||
|
|
4b58f0b4dd | ||
|
|
029e6a015e | ||
|
|
5d6b1223cc | ||
|
|
813c51b0ca | ||
|
|
4d7a6dd661 | ||
|
|
954df86f3c | ||
|
|
da1126a5a9 | ||
|
|
0e1e8d2b16 | ||
|
|
9967bb993f | ||
|
|
8f851bc781 | ||
|
|
c6d0322080 | ||
|
|
6467b14486 | ||
|
|
88ce98e716 | ||
|
|
343bcbb363 | ||
|
|
5228b3490d | ||
|
|
0f40279060 | ||
|
|
731aa5e9f3 | ||
|
|
791645fa59 | ||
|
|
4fe85cdd4a | ||
|
|
8b8f50ed0f | ||
|
|
c711084807 | ||
|
|
88efd13acb | ||
|
|
f72eed064a | ||
|
|
6c0ca4cec8 | ||
|
|
71ffa21db0 | ||
|
|
bd6b7cdfc4 | ||
|
|
b7123c5be8 | ||
|
|
20b39c7215 | ||
|
|
5e9841e7ab | ||
|
|
09d2502f53 | ||
|
|
033645a7e0 | ||
|
|
eb8b264b18 | ||
|
|
b7c9c187e5 | ||
|
|
b543e6d143 | ||
|
|
4bbef031d5 | ||
|
|
006df4d20b | ||
|
|
0ef2ae4ac4 | ||
|
|
e70f3f2125 | ||
|
|
20cdb87e28 | ||
|
|
28ef64cba1 | ||
|
|
b89bf86f03 | ||
|
|
58e252a875 | ||
|
|
5cf2f47b12 | ||
|
|
088f4a76a7 | ||
|
|
7bff325a7d | ||
|
|
5e36710cde | ||
|
|
5639ce82bd | ||
|
|
29e3616237 | ||
|
|
9a28bab5b2 | ||
|
|
02456280d4 | ||
|
|
93a6410360 | ||
|
|
dc0f21298e | ||
|
|
aa740f4263 | ||
|
|
31b3c5d721 | ||
|
|
2133f91089 | ||
|
|
633c80d5e4 | ||
|
|
22ca7177a6 | ||
|
|
fd9f5475f3 | ||
|
|
96f367943c | ||
|
|
dfd5ea8a7f | ||
|
|
b80051bb35 | ||
|
|
d49dd9377e | ||
|
|
5662121cdb | ||
|
|
e4544d8a22 | ||
|
|
c763478f66 | ||
|
|
8c741bdfd3 | ||
|
|
ac9e4a5582 | ||
|
|
07137ac566 | ||
|
|
b52795bd59 | ||
|
|
893a88bb02 | ||
|
|
e198dd626b | ||
|
|
ef615baaeb | ||
|
|
072338afae | ||
|
|
2ec773e9bf | ||
|
|
5e7efd24eb | ||
|
|
5dbfa71b2c | ||
|
|
b9ad4b2379 | ||
|
|
ca0e00ea5e | ||
|
|
e48f36a227 | ||
|
|
c9d19115e9 | ||
|
|
9ac3128309 | ||
|
|
aacffd979b | ||
|
|
b40c3aae52 | ||
|
|
31fc018526 | ||
|
|
b17c6983ce | ||
|
|
c86a8fff03 | ||
|
|
780cb37d46 | ||
|
|
7bbc5183db | ||
|
|
f0ded8498a | ||
|
|
e37745d0b4 | ||
|
|
2ce0f724bb | ||
|
|
5ebb2565ca | ||
|
|
84dc0b8be8 | ||
|
|
74a492e52e | ||
|
|
2badecba2a | ||
|
|
c01c8d0afc | ||
|
|
76a6b4e09e | ||
|
|
4ed9aa39c7 | ||
|
|
52aebb3bcc | ||
|
|
c950ed1701 | ||
|
|
f97f5d94ae | ||
|
|
5c5413075e | ||
|
|
806c2130b5 | ||
|
|
8cc7dc0a3e | ||
|
|
5fc88fb6e4 | ||
|
|
77eca6bcdc | ||
|
|
195018e22d | ||
|
|
552871d98c | ||
|
|
71e3f86024 | ||
|
|
07f7a9318c | ||
|
|
7f539a2de3 | ||
|
|
30d6edf502 | ||
|
|
60f0a3485f | ||
|
|
ebf25282e3 | ||
|
|
59bc97c2f5 | ||
|
|
a24a7e8d0f | ||
|
|
bf33b28483 | ||
|
|
b60c4bd952 | ||
|
|
0f56aecadf | ||
|
|
ec34470284 | ||
|
|
77231f6538 | ||
|
|
fa0b1436c2 | ||
|
|
7bc98ee434 | ||
|
|
2051bee3cf | ||
|
|
6d70c8af50 | ||
|
|
2cfa61602f | ||
|
|
fbfad5f86d | ||
|
|
889415fb26 | ||
|
|
ebd8903c9b | ||
|
|
314d7f4387 | ||
|
|
5875cb1896 | ||
|
|
7a2e151079 | ||
|
|
7bdf0d0b90 | ||
|
|
ee3e7938c2 | ||
|
|
058a82c79c | ||
|
|
3a831085eb | ||
|
|
9a54cf664b | ||
|
|
5d4f6ff80e | ||
|
|
afae2d110c | ||
|
|
a0171f9cc8 | ||
|
|
261c4b9833 | ||
|
|
f96fd806c0 | ||
|
|
126114dea4 | ||
|
|
3fd1d66f12 | ||
|
|
cdc412afd0 | ||
|
|
1772c66694 | ||
|
|
5e6e921790 | ||
|
|
7d7cfe391a | ||
|
|
a9f0223ea3 | ||
|
|
9577439a58 | ||
|
|
d5f615f8d6 | ||
|
|
99801258a2 | ||
|
|
018f551d13 | ||
|
|
63cb39f365 | ||
|
|
6bb6535d3e | ||
|
|
25011331ed | ||
|
|
b3f799a7dd | ||
|
|
9a110c703e | ||
|
|
c076d4a17c | ||
|
|
de36ec5b2c | ||
|
|
5ce9037310 | ||
|
|
e7ac67effc | ||
|
|
17dbd27cfd | ||
|
|
dcc0a1425e | ||
|
|
97359d6eae | ||
|
|
cfcfd127b2 | ||
|
|
21a172478c | ||
|
|
3db0f90af9 | ||
|
|
d7ef3df2b3 | ||
|
|
e927d49aa2 | ||
|
|
4b8017292e | ||
|
|
6b8d2a33c0 | ||
|
|
3c5e27b0ca | ||
|
|
fcf6b5466a | ||
|
|
745f33a8c1 | ||
|
|
193426a3c1 | ||
|
|
e4f0a7b1d5 | ||
|
|
48a11cd8ca | ||
|
|
a96eb236c1 | ||
|
|
2acb5d58cf | ||
|
|
c890cbf611 | ||
|
|
4e19777ba0 | ||
|
|
22994ee8f2 | ||
|
|
142813a7e7 | ||
|
|
21c1c06a20 | ||
|
|
8028b23086 | ||
|
|
6c6f6c081e | ||
|
|
e1bd925877 | ||
|
|
8a2d702348 | ||
|
|
13abacf6e0 | ||
|
|
2bc41bfd90 | ||
|
|
65529b10b6 | ||
|
|
f5d0cece43 | ||
|
|
99d25002f7 | ||
|
|
be4cc32e2f | ||
|
|
02c9d3fe2c | ||
|
|
317bc21a1b | ||
|
|
3148ab214a | ||
|
|
e21502e6a5 | ||
|
|
147391eaa1 | ||
|
|
081ac7b4d1 | ||
|
|
f2a02c154c | ||
|
|
6762ef220f | ||
|
|
89b3e68788 | ||
|
|
e80da4af0d | ||
|
|
32c349dd8b | ||
|
|
8bb851704a | ||
|
|
1648895156 | ||
|
|
84d7115e36 | ||
|
|
9f1d4e8ba6 | ||
|
|
8c186edd18 | ||
|
|
94763e9fe0 | ||
|
|
91c53b1db4 | ||
|
|
ebe0681748 | ||
|
|
76987105c1 | ||
|
|
b0f22d8693 | ||
|
|
778f46bbb2 | ||
|
|
afd77181ff | ||
|
|
685d960b1e | ||
|
|
53fdddb1a9 | ||
|
|
54d03b2ecf | ||
|
|
beb14f90b9 | ||
|
|
daa59af5be | ||
|
|
1f137b3542 | ||
|
|
12149bf3e3 | ||
|
|
b85cb81d9e | ||
|
|
1954f905af | ||
|
|
e5dad3467b | ||
|
|
5a9d50db46 | ||
|
|
6c8c3b4a7a | ||
|
|
d6709e069c | ||
|
|
a5675c06e7 | ||
|
|
099a5edef3 | ||
|
|
3dfe8b27e1 | ||
|
|
3bb9417a9d | ||
|
|
b225494137 | ||
|
|
4bde36e186 | ||
|
|
87e06e974e | ||
|
|
7c4c69aa75 | ||
|
|
769e46d3e6 | ||
|
|
dce35ff881 | ||
|
|
16ecbf117c | ||
|
|
dc45952558 | ||
|
|
4707e0ed2e | ||
|
|
1ea009ff61 | ||
|
|
bf4854a444 | ||
|
|
a3024fdd14 | ||
|
|
92a4d88532 | ||
|
|
5cef21fd40 | ||
|
|
b52661083c | ||
|
|
b41c6be341 | ||
|
|
07c21ced70 | ||
|
|
533fc082bd | ||
|
|
9ad9cb8ff2 | ||
|
|
f47a5600b1 | ||
|
|
31a7d817da | ||
|
|
65924cb134 | ||
|
|
437b5f2ca3 | ||
|
|
b75edd9710 | ||
|
|
06af880b12 | ||
|
|
bb79abffe4 | ||
|
|
89933bb2bd | ||
|
|
d99ff80714 |
20
.github/ISSUE_TEMPLATE/task.yaml
vendored
@@ -1,20 +0,0 @@
|
||||
name: 📝 Task
|
||||
description: Create a task for the team to work on, used internally only. We will delete tasks created by non-team members.
|
||||
title: "[Task]: "
|
||||
labels: [Task]
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Are you our team member?
|
||||
description: If you are not our team member, please go to discussions.
|
||||
options:
|
||||
- label: Yes, I am?
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: SubTasks
|
||||
placeholder: |
|
||||
- Sub Task 1
|
||||
- Sub Task 2
|
||||
validations:
|
||||
required: false
|
||||
41
.github/workflows/bridge.yml
vendored
@@ -1,14 +1,14 @@
|
||||
# This yaml shares the build bridge steps with ci and nightly.
|
||||
name: Build flutter-rust-bridge
|
||||
# 2023-04-19 15:48:00+00:00
|
||||
# 2023-11-23 18:00:00+00:00
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
|
||||
env:
|
||||
FLUTTER_VERSION: "3.10.5"
|
||||
FLUTTER_RUST_BRIDGE_VERSION: "1.75.3"
|
||||
|
||||
FLUTTER_VERSION: "3.16.9"
|
||||
FLUTTER_RUST_BRIDGE_VERSION: "1.80.1"
|
||||
|
||||
jobs:
|
||||
generate_bridge:
|
||||
runs-on: ${{ matrix.job.os }}
|
||||
@@ -23,26 +23,39 @@ jobs:
|
||||
}
|
||||
steps:
|
||||
- name: Checkout source code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install prerequisites
|
||||
run: |
|
||||
sudo apt install ca-certificates -y
|
||||
sudo apt update -y
|
||||
sudo apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang cmake libclang-dev ninja-build llvm-dev libclang-10-dev llvm-10-dev pkg-config
|
||||
sudo apt-get install ca-certificates -y
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y \
|
||||
clang \
|
||||
cmake \
|
||||
curl \
|
||||
gcc \
|
||||
git \
|
||||
g++ \
|
||||
libclang-10-dev \
|
||||
libclang-dev \
|
||||
libgtk-3-dev \
|
||||
llvm-10-dev \
|
||||
llvm-dev \
|
||||
nasm \
|
||||
ninja-build \
|
||||
pkg-config \
|
||||
wget
|
||||
|
||||
- name: Install Rust toolchain
|
||||
uses: actions-rs/toolchain@v1
|
||||
uses: dtolnay/rust-toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
target: ${{ matrix.job.target }}
|
||||
override: true
|
||||
profile: minimal # minimal component installation (ie, no documentation)
|
||||
targets: ${{ matrix.job.target }}
|
||||
components: ''
|
||||
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
prefix-key: bridge-${{ matrix.job.os }}
|
||||
workspace: "/tmp/flutter_rust_bridge/frb_codegen"
|
||||
|
||||
- name: Cache Bridge
|
||||
id: cache-bridge
|
||||
@@ -75,5 +88,5 @@ jobs:
|
||||
path: |
|
||||
./src/bridge_generated.rs
|
||||
./src/bridge_generated.io.rs
|
||||
./flutter/lib/generated_bridge.dart
|
||||
./flutter/lib/generated_bridge.dart
|
||||
./flutter/lib/generated_bridge.freezed.dart
|
||||
|
||||
61
.github/workflows/build-macos-arm64.yml
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
name: Flutter Nightly MacOS Arm64 Build
|
||||
|
||||
on:
|
||||
#schedule:
|
||||
# schedule build every night
|
||||
# - cron: "0/6 * * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
CARGO_NDK_VERSION: "3.1.2"
|
||||
LLVM_VERSION: "15.0.6"
|
||||
FLUTTER_VERSION: "3.16.9"
|
||||
FLUTTER_RUST_BRIDGE_VERSION: "1.80.1"
|
||||
# for arm64 linux because official Dart SDK does not work
|
||||
FLUTTER_ELINUX_VERSION: "3.16.9"
|
||||
FLUTTER_ELINUX_COMMIT_ID: "c02bd16e1630f5bd690b85c5c2456ac1920e25af"
|
||||
TAG_NAME: "nightly"
|
||||
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
|
||||
# vcpkg version: 2023.10.19
|
||||
# for multiarch gcc compatibility
|
||||
VCPKG_COMMIT_ID: "8eb57355a4ffb410a2e94c07b4dca2dffbee8e50"
|
||||
VERSION: "1.2.4"
|
||||
NDK_VERSION: "r26b"
|
||||
#signing keys env variable checks
|
||||
ANDROID_SIGNING_KEY: '${{ secrets.ANDROID_SIGNING_KEY }}'
|
||||
MACOS_P12_BASE64: '${{ secrets.MACOS_P12_BASE64 }}'
|
||||
# To make a custom build with your own servers set the below secret values
|
||||
RS_PUB_KEY: '${{ secrets.RS_PUB_KEY }}'
|
||||
RENDEZVOUS_SERVER: '${{ secrets.RENDEZVOUS_SERVER }}'
|
||||
API_SERVER: '${{ secrets.API_SERVER }}'
|
||||
UPLOAD_ARTIFACT: true
|
||||
SIGN_BASE_URL: "${{ secrets.SIGN_BASE_URL }}"
|
||||
|
||||
jobs:
|
||||
build-for-macOS-arm64:
|
||||
name: build-for-macOS-arm64
|
||||
runs-on: [self-hosted, macOS, ARM64]
|
||||
steps:
|
||||
#- name: Import the codesign cert
|
||||
# if: env.MACOS_P12_BASE64 != null
|
||||
# uses: apple-actions/import-codesign-certs@v1
|
||||
# continue-on-error: true
|
||||
# with:
|
||||
# p12-file-base64: ${{ secrets.MACOS_P12_BASE64 }}
|
||||
# p12-password: ${{ secrets.MACOS_P12_PASSWORD }}
|
||||
# keychain: rustdesk
|
||||
|
||||
#- name: Check sign and import sign key
|
||||
# if: env.MACOS_P12_BASE64 != null
|
||||
# run: |
|
||||
# security default-keychain -s rustdesk.keychain
|
||||
# security find-identity -v
|
||||
|
||||
- name: Run
|
||||
shell: bash
|
||||
run: |
|
||||
cd /opt/build
|
||||
#./update_mac_template.sh
|
||||
#security default-keychain -s rustdesk.keychain
|
||||
#security unlock-keychain -p ${{ secrets.MACOS_P12_PASSWORD }} rustdesk.keychain
|
||||
./agent.sh
|
||||
76
.github/workflows/ci.yml
vendored
@@ -1,8 +1,12 @@
|
||||
name: CI
|
||||
|
||||
# env:
|
||||
env:
|
||||
# MIN_SUPPORTED_RUST_VERSION: "1.46.0"
|
||||
# CICD_INTERMEDIATES_DIR: "_cicd-intermediates"
|
||||
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
|
||||
# vcpkg version: 2023.10.19
|
||||
# for multiarch gcc compatibility
|
||||
VCPKG_COMMIT_ID: "8eb57355a4ffb410a2e94c07b4dca2dffbee8e50"
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
@@ -13,8 +17,6 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
tags:
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- ".github/**"
|
||||
- "docs/**"
|
||||
@@ -78,36 +80,63 @@ jobs:
|
||||
- { target: x86_64-unknown-linux-gnu , os: ubuntu-20.04 }
|
||||
# - { target: x86_64-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
|
||||
steps:
|
||||
- name: Export GitHub Actions cache environment variables
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
script: |
|
||||
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
|
||||
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
|
||||
|
||||
- name: Checkout source code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install prerequisites
|
||||
shell: bash
|
||||
run: |
|
||||
case ${{ matrix.job.target }} in
|
||||
x86_64-unknown-linux-gnu) sudo apt-get -y update ; sudo apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev;;
|
||||
x86_64-unknown-linux-gnu)
|
||||
sudo apt-get -y update
|
||||
sudo apt-get install -y \
|
||||
clang \
|
||||
cmake \
|
||||
curl \
|
||||
gcc \
|
||||
git \
|
||||
g++ \
|
||||
libasound2-dev \
|
||||
libgstreamer1.0-dev \
|
||||
libgstreamer-plugins-base1.0-dev \
|
||||
libgtk-3-dev \
|
||||
libpulse-dev \
|
||||
libxcb-randr0-dev \
|
||||
libxcb-shape0-dev \
|
||||
libxcb-xfixes0-dev \
|
||||
libxdo-dev \
|
||||
libxfixes-dev \
|
||||
nasm \
|
||||
wget
|
||||
;;
|
||||
# arm-unknown-linux-*) sudo apt-get -y update ; sudo apt-get -y install gcc-arm-linux-gnueabihf ;;
|
||||
# aarch64-unknown-linux-gnu) sudo apt-get -y update ; sudo apt-get -y install gcc-aarch64-linux-gnu ;;
|
||||
esac
|
||||
|
||||
- name: Restore from cache and install vcpkg
|
||||
uses: lukka/run-vcpkg@v7
|
||||
- name: Setup vcpkg with Github Actions binary cache
|
||||
uses: lukka/run-vcpkg@v11
|
||||
with:
|
||||
setupOnly: true
|
||||
vcpkgGitCommitId: '501db0f17ef6df184fcdbfbe0f87cde2313b6ab1' #2023.04.15
|
||||
|
||||
vcpkgDirectory: /opt/artifacts/vcpkg
|
||||
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT_ID }}
|
||||
|
||||
- name: Install vcpkg dependencies
|
||||
run: |
|
||||
$VCPKG_ROOT/vcpkg install libvpx libyuv opus aom
|
||||
shell: bash
|
||||
$VCPKG_ROOT/vcpkg install --x-install-root="$VCPKG_ROOT/installed"
|
||||
shell: bash
|
||||
|
||||
- name: Install Rust toolchain
|
||||
uses: actions-rs/toolchain@v1
|
||||
uses: dtolnay/rust-toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
target: ${{ matrix.job.target }}
|
||||
override: true
|
||||
profile: minimal # minimal component installation (ie, no documentation)
|
||||
targets: ${{ matrix.job.target }}
|
||||
components: ''
|
||||
|
||||
- name: Show version information (Rust, cargo, GCC)
|
||||
shell: bash
|
||||
@@ -119,14 +148,19 @@ jobs:
|
||||
cargo -V
|
||||
rustc -V
|
||||
|
||||
- uses: Swatinem/rust-cache@v1
|
||||
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
|
||||
- name: Build
|
||||
uses: actions-rs/cargo@v1
|
||||
with:
|
||||
use-cross: ${{ matrix.job.use-cross }}
|
||||
command: build
|
||||
args: --locked --release --target=${{ matrix.job.target }}
|
||||
args: --locked --target=${{ matrix.job.target }}
|
||||
|
||||
- name: clean
|
||||
shell: bash
|
||||
run: |
|
||||
cargo clean
|
||||
|
||||
# - name: Strip debug information from executable
|
||||
# id: strip
|
||||
@@ -180,7 +214,9 @@ jobs:
|
||||
;;
|
||||
esac;
|
||||
|
||||
echo ::set-output name=CARGO_TEST_OPTIONS::${CARGO_TEST_OPTIONS}
|
||||
#deprecated echo ::set-output name=CARGO_TEST_OPTIONS::${CARGO_TEST_OPTIONS}
|
||||
echo "CARGO_TEST_OPTIONS=${CARGO_TEST_OPTIONS}" >> $GITHUB_ENV
|
||||
echo "CARGO_TEST_OPTIONS=${CARGO_TEST_OPTIONS}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Run tests
|
||||
uses: actions-rs/cargo@v1
|
||||
|
||||
37
.github/workflows/clear-cache.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
name: Clear cache
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
|
||||
jobs:
|
||||
clear-cache:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Clear cache
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
console.log("About to clear")
|
||||
const caches = await github.rest.actions.getActionsCacheList({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
})
|
||||
for (const cache of caches.data.actions_caches) {
|
||||
console.log(cache)
|
||||
github.rest.actions.deleteActionsCacheById({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
cache_id: cache.id,
|
||||
})
|
||||
}
|
||||
console.log("Clear completed")
|
||||
|
||||
- name: Purge cache # Above seems not clear thouroughly, so add this to double clear
|
||||
uses: MyAlbum/purge-cache@v2
|
||||
with:
|
||||
accessed: true # Purge caches by their last accessed time (default)
|
||||
created: false # Purge caches by their created time (default)
|
||||
max-age: 1 # in seconds
|
||||
1163
.github/workflows/flutter-build.yml
vendored
3
.github/workflows/flutter-ci.yml
vendored
@@ -9,8 +9,6 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
tags:
|
||||
- '*'
|
||||
paths-ignore:
|
||||
- ".github/**"
|
||||
- "docs/**"
|
||||
@@ -21,4 +19,3 @@ jobs:
|
||||
uses: ./.github/workflows/flutter-build.yml
|
||||
with:
|
||||
upload-artifact: false
|
||||
|
||||
1
.github/workflows/flutter-nightly.yml
vendored
@@ -12,3 +12,4 @@ jobs:
|
||||
secrets: inherit
|
||||
with:
|
||||
upload-artifact: true
|
||||
upload-tag: "nightly"
|
||||
|
||||
38
.github/workflows/flutter-tag.yml
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
name: Flutter Tag Build
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
tags:
|
||||
- 'v[0-9]+.[0-9]+.[0-9]+'
|
||||
- '[0-9]+.[0-9]+.[0-9]+'
|
||||
- 'v[0-9]+.[0-9]+.[0-9]+-[0-9]+'
|
||||
- '[0-9]+.[0-9]+.[0-9]+-[0-9]+'
|
||||
|
||||
jobs:
|
||||
run-flutter-tag-build:
|
||||
uses: ./.github/workflows/flutter-build.yml
|
||||
secrets: inherit
|
||||
with:
|
||||
upload-artifact: true
|
||||
upload-tag: ${{ env.GITHUB_REF_NAME }}
|
||||
|
||||
update-fdroid-version-file:
|
||||
name: Publish RustDesk version file for F-Droid updater
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Generate RustDesk version file
|
||||
run: |
|
||||
UPSTREAM_VERNAME="$GITHUB_REF_NAME"
|
||||
UPSTREAM_VERCODE="$(echo "$UPSTREAM_VERNAME" | tr -d '.')"
|
||||
echo "versionName=$UPSTREAM_VERNAME" > rustdesk-version.txt
|
||||
echo "versionCode=$UPSTREAM_VERCODE" >> rustdesk-version.txt
|
||||
shell: bash
|
||||
|
||||
- name: Publish RustDesk version file
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
prerelease: true
|
||||
tag_name: "fdroid-version"
|
||||
files: |
|
||||
./rustdesk-version.txt
|
||||
324
.github/workflows/history.yml
vendored
@@ -4,30 +4,26 @@ on: [workflow_dispatch]
|
||||
|
||||
env:
|
||||
LLVM_VERSION: "10.0"
|
||||
# Note: currently 3.0.5 does not support arm64 officially, we use latest stable version first.
|
||||
FLUTTER_VERSION: "3.0.5"
|
||||
FLUTTER_VERSION: "3.16.9"
|
||||
TAG_NAME: "tmp"
|
||||
# vcpkg version: 2022.05.10
|
||||
# for multiarch gcc compatibility
|
||||
VCPKG_COMMIT_ID: "14e7bb4ae24616ec54ff6b2f6ef4e8659434ea44"
|
||||
VERSION: "1.2.0"
|
||||
FLUTTER_RUST_BRIDGE_VERSION: "1.80.1"
|
||||
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
|
||||
VERSION: "1.2.4"
|
||||
|
||||
jobs:
|
||||
build-for-windows-2022-12-05:
|
||||
name: ${{ matrix.job.target }} (${{ matrix.job.os }})
|
||||
build-for-history-windows:
|
||||
name: ${{ matrix.job.date }}
|
||||
runs-on: ${{ matrix.job.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
job:
|
||||
# - { target: i686-pc-windows-msvc , os: windows-2019 }
|
||||
# - { target: x86_64-pc-windows-gnu , os: windows-2019 }
|
||||
- { target: x86_64-pc-windows-msvc, os: windows-2019 }
|
||||
- { target: x86_64-pc-windows-msvc, os: windows-2019, arch: x86_64, date: 2023-08-04, ref: 72c198a1e94cc1e0242fce88f92b3f3caedcd0c3 }
|
||||
steps:
|
||||
- name: Checkout source code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: '8d1254cf14b69f545c9cefa026c5eeb0e7dd3e7c'
|
||||
ref: ${{ matrix.job.ref }}
|
||||
|
||||
- name: Install LLVM and Clang
|
||||
uses: KyleMayes/install-llvm-action@v1
|
||||
@@ -35,51 +31,36 @@ jobs:
|
||||
version: ${{ env.LLVM_VERSION }}
|
||||
|
||||
- name: Install flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
uses: subosito/flutter-action@v2.12.0 #https://github.com/subosito/flutter-action/issues/277
|
||||
with:
|
||||
channel: "stable"
|
||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||
cache: true
|
||||
|
||||
- name: Replace engine with rustdesk custom flutter engine
|
||||
run: |
|
||||
flutter doctor -v
|
||||
flutter precache --windows
|
||||
Invoke-WebRequest -Uri https://github.com/Kingtous/engine/releases/download/v3.0.5-rustdesk.2/windows-x64-flutter-release.zip -OutFile windows-x64-flutter-release.zip
|
||||
Expand-Archive windows-x64-flutter-release.zip -DestinationPath engine
|
||||
mv -Force engine/* C:/hostedtoolcache/windows/flutter/stable-3.0.5-x64/bin/cache/artifacts/engine/windows-x64-release/
|
||||
- name: Install Rust toolchain
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: "1.62"
|
||||
toolchain: stable
|
||||
target: ${{ matrix.job.target }}
|
||||
override: true
|
||||
components: rustfmt
|
||||
profile: minimal # minimal component installation (ie, no documentation)
|
||||
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
prefix-key: ${{ matrix.job.os }}
|
||||
|
||||
- name: Install flutter rust bridge deps
|
||||
run: |
|
||||
dart pub global activate ffigen --version 5.0.1
|
||||
$exists = Test-Path ~/.cargo/bin/flutter_rust_bridge_codegen.exe
|
||||
Push-Location ..
|
||||
git clone https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge --depth=1
|
||||
Push-Location flutter_rust_bridge/frb_codegen ; cargo install --path . ; Pop-Location
|
||||
Pop-Location
|
||||
cargo install flutter_rust_bridge_codegen --version ${{ env.FLUTTER_RUST_BRIDGE_VERSION }} --features "uuid"
|
||||
Push-Location flutter ; flutter pub get ; Pop-Location
|
||||
~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart
|
||||
- name: Restore from cache and install vcpkg
|
||||
uses: lukka/run-vcpkg@v7
|
||||
|
||||
- name: Setup vcpkg with Github Actions binary cache
|
||||
uses: lukka/run-vcpkg@v11
|
||||
with:
|
||||
setupOnly: true
|
||||
vcpkgDirectory: C:\vcpkg
|
||||
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT_ID }}
|
||||
|
||||
- name: Install vcpkg dependencies
|
||||
run: |
|
||||
$VCPKG_ROOT/vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static
|
||||
$VCPKG_ROOT/vcpkg install --x-install-root="$VCPKG_ROOT/installed"
|
||||
shell: bash
|
||||
|
||||
- name: Build rustdesk
|
||||
@@ -92,275 +73,8 @@ jobs:
|
||||
python3 ./generate.py -f ../../flutter/build/windows/runner/Release/ -o . -e ../../flutter/build/windows/runner/Release/rustdesk.exe
|
||||
popd
|
||||
mkdir -p ./SignOutput
|
||||
mv ./target/release/rustdesk-portable-packer.exe ./SignOutput/rustdesk-2022-12-05-${{ matrix.job.target }}.exe
|
||||
|
||||
- name: Publish Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
prerelease: true
|
||||
tag_name: ${{ env.TAG_NAME }}
|
||||
files: |
|
||||
./SignOutput/rustdesk-*.exe
|
||||
|
||||
build-for-windows-2022-12-12:
|
||||
name: ${{ matrix.job.target }} (${{ matrix.job.os }})
|
||||
runs-on: ${{ matrix.job.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
job:
|
||||
# - { target: i686-pc-windows-msvc , os: windows-2019 }
|
||||
# - { target: x86_64-pc-windows-gnu , os: windows-2019 }
|
||||
- { target: x86_64-pc-windows-msvc, os: windows-2019 }
|
||||
steps:
|
||||
- name: Checkout source code
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
ref: '3dd43b79ec0409fc38103bed0c7eb0bc3cd993d5'
|
||||
|
||||
- name: Install LLVM and Clang
|
||||
uses: KyleMayes/install-llvm-action@v1
|
||||
with:
|
||||
version: ${{ env.LLVM_VERSION }}
|
||||
|
||||
- name: Install flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: "stable"
|
||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||
cache: true
|
||||
|
||||
- name: Replace engine with rustdesk custom flutter engine
|
||||
run: |
|
||||
flutter doctor -v
|
||||
flutter precache --windows
|
||||
Invoke-WebRequest -Uri https://github.com/Kingtous/engine/releases/download/v3.0.5-rustdesk.2/windows-x64-flutter-release.zip -OutFile windows-x64-flutter-release.zip
|
||||
Expand-Archive windows-x64-flutter-release.zip -DestinationPath engine
|
||||
mv -Force engine/* C:/hostedtoolcache/windows/flutter/stable-3.0.5-x64/bin/cache/artifacts/engine/windows-x64-release/
|
||||
- name: Install Rust toolchain
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: "1.62"
|
||||
target: ${{ matrix.job.target }}
|
||||
override: true
|
||||
components: rustfmt
|
||||
profile: minimal # minimal component installation (ie, no documentation)
|
||||
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
prefix-key: ${{ matrix.job.os }}
|
||||
|
||||
- name: Install flutter rust bridge deps
|
||||
run: |
|
||||
dart pub global activate ffigen --version 5.0.1
|
||||
$exists = Test-Path ~/.cargo/bin/flutter_rust_bridge_codegen.exe
|
||||
Push-Location ..
|
||||
git clone https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge --depth=1
|
||||
Push-Location flutter_rust_bridge/frb_codegen ; cargo install --path . ; Pop-Location
|
||||
Pop-Location
|
||||
Push-Location flutter ; flutter pub get ; Pop-Location
|
||||
~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart
|
||||
- name: Restore from cache and install vcpkg
|
||||
uses: lukka/run-vcpkg@v7
|
||||
with:
|
||||
setupOnly: true
|
||||
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT_ID }}
|
||||
|
||||
- name: Install vcpkg dependencies
|
||||
run: |
|
||||
$VCPKG_ROOT/vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static
|
||||
shell: bash
|
||||
|
||||
- name: Build rustdesk
|
||||
run: python3 .\build.py --portable --hwcodec --flutter
|
||||
|
||||
- name: Build self-extracted executable
|
||||
shell: bash
|
||||
run: |
|
||||
pushd ./libs/portable
|
||||
python3 ./generate.py -f ../../flutter/build/windows/runner/Release/ -o . -e ../../flutter/build/windows/runner/Release/rustdesk.exe
|
||||
popd
|
||||
mkdir -p ./SignOutput
|
||||
mv ./target/release/rustdesk-portable-packer.exe ./SignOutput/rustdesk-2022-12-12-${{ matrix.job.target }}.exe
|
||||
|
||||
- name: Publish Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
prerelease: true
|
||||
tag_name: ${{ env.TAG_NAME }}
|
||||
files: |
|
||||
./SignOutput/rustdesk-*.exe
|
||||
|
||||
build-for-windows-2022-12-19:
|
||||
name: ${{ matrix.job.target }} (${{ matrix.job.os }})
|
||||
runs-on: ${{ matrix.job.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
job:
|
||||
# - { target: i686-pc-windows-msvc , os: windows-2019 }
|
||||
# - { target: x86_64-pc-windows-gnu , os: windows-2019 }
|
||||
- { target: x86_64-pc-windows-msvc, os: windows-2019 }
|
||||
steps:
|
||||
- name: Checkout source code
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
ref: '1054715891c4e73ad9b164acec6dadecfc599a65'
|
||||
|
||||
- name: Install LLVM and Clang
|
||||
uses: KyleMayes/install-llvm-action@v1
|
||||
with:
|
||||
version: ${{ env.LLVM_VERSION }}
|
||||
|
||||
- name: Install flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: "stable"
|
||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||
cache: true
|
||||
|
||||
- name: Replace engine with rustdesk custom flutter engine
|
||||
run: |
|
||||
flutter doctor -v
|
||||
flutter precache --windows
|
||||
Invoke-WebRequest -Uri https://github.com/Kingtous/engine/releases/download/v3.0.5-rustdesk.2/windows-x64-flutter-release.zip -OutFile windows-x64-flutter-release.zip
|
||||
Expand-Archive windows-x64-flutter-release.zip -DestinationPath engine
|
||||
mv -Force engine/* C:/hostedtoolcache/windows/flutter/stable-3.0.5-x64/bin/cache/artifacts/engine/windows-x64-release/
|
||||
- name: Install Rust toolchain
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: "1.62"
|
||||
target: ${{ matrix.job.target }}
|
||||
override: true
|
||||
components: rustfmt
|
||||
profile: minimal # minimal component installation (ie, no documentation)
|
||||
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
prefix-key: ${{ matrix.job.os }}
|
||||
|
||||
- name: Install flutter rust bridge deps
|
||||
run: |
|
||||
dart pub global activate ffigen --version 5.0.1
|
||||
$exists = Test-Path ~/.cargo/bin/flutter_rust_bridge_codegen.exe
|
||||
Push-Location ..
|
||||
git clone https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge --depth=1
|
||||
Push-Location flutter_rust_bridge/frb_codegen ; cargo install --path . ; Pop-Location
|
||||
Pop-Location
|
||||
Push-Location flutter ; flutter pub get ; Pop-Location
|
||||
~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart
|
||||
- name: Restore from cache and install vcpkg
|
||||
uses: lukka/run-vcpkg@v7
|
||||
with:
|
||||
setupOnly: true
|
||||
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT_ID }}
|
||||
|
||||
- name: Install vcpkg dependencies
|
||||
run: |
|
||||
$VCPKG_ROOT/vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static
|
||||
shell: bash
|
||||
|
||||
- name: Build rustdesk
|
||||
run: python3 .\build.py --portable --hwcodec --flutter
|
||||
|
||||
- name: Build self-extracted executable
|
||||
shell: bash
|
||||
run: |
|
||||
pushd ./libs/portable
|
||||
python3 ./generate.py -f ../../flutter/build/windows/runner/Release/ -o . -e ../../flutter/build/windows/runner/Release/rustdesk.exe
|
||||
popd
|
||||
mkdir -p ./SignOutput
|
||||
mv ./target/release/rustdesk-portable-packer.exe ./SignOutput/rustdesk-2022-12-19-${{ matrix.job.target }}.exe
|
||||
|
||||
- name: Publish Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
prerelease: true
|
||||
tag_name: ${{ env.TAG_NAME }}
|
||||
files: |
|
||||
./SignOutput/rustdesk-*.exe
|
||||
|
||||
build-for-windows-2022-12-26:
|
||||
name: ${{ matrix.job.target }} (${{ matrix.job.os }})
|
||||
runs-on: ${{ matrix.job.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
job:
|
||||
# - { target: i686-pc-windows-msvc , os: windows-2019 }
|
||||
# - { target: x86_64-pc-windows-gnu , os: windows-2019 }
|
||||
- { target: x86_64-pc-windows-msvc, os: windows-2019 }
|
||||
steps:
|
||||
- name: Checkout source code
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
ref: 'b241925fe093dc4da804a5aac419375f4ca7653f'
|
||||
|
||||
- name: Install LLVM and Clang
|
||||
uses: KyleMayes/install-llvm-action@v1
|
||||
with:
|
||||
version: ${{ env.LLVM_VERSION }}
|
||||
|
||||
- name: Install flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: "stable"
|
||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||
cache: true
|
||||
|
||||
- name: Replace engine with rustdesk custom flutter engine
|
||||
run: |
|
||||
flutter doctor -v
|
||||
flutter precache --windows
|
||||
Invoke-WebRequest -Uri https://github.com/Kingtous/engine/releases/download/v3.0.5-rustdesk.2/windows-x64-flutter-release.zip -OutFile windows-x64-flutter-release.zip
|
||||
Expand-Archive windows-x64-flutter-release.zip -DestinationPath engine
|
||||
mv -Force engine/* C:/hostedtoolcache/windows/flutter/stable-3.0.5-x64/bin/cache/artifacts/engine/windows-x64-release/
|
||||
- name: Install Rust toolchain
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: "1.62"
|
||||
target: ${{ matrix.job.target }}
|
||||
override: true
|
||||
components: rustfmt
|
||||
profile: minimal # minimal component installation (ie, no documentation)
|
||||
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
prefix-key: ${{ matrix.job.os }}
|
||||
|
||||
- name: Install flutter rust bridge deps
|
||||
run: |
|
||||
dart pub global activate ffigen --version 5.0.1
|
||||
$exists = Test-Path ~/.cargo/bin/flutter_rust_bridge_codegen.exe
|
||||
Push-Location ..
|
||||
git clone https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge --depth=1
|
||||
Push-Location flutter_rust_bridge/frb_codegen ; cargo install --path . ; Pop-Location
|
||||
Pop-Location
|
||||
Push-Location flutter ; flutter pub get ; Pop-Location
|
||||
~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart
|
||||
- name: Restore from cache and install vcpkg
|
||||
uses: lukka/run-vcpkg@v7
|
||||
with:
|
||||
setupOnly: true
|
||||
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT_ID }}
|
||||
|
||||
- name: Install vcpkg dependencies
|
||||
run: |
|
||||
$VCPKG_ROOT/vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static
|
||||
shell: bash
|
||||
|
||||
- name: Build rustdesk
|
||||
run: python3 .\build.py --portable --hwcodec --flutter
|
||||
|
||||
- name: Build self-extracted executable
|
||||
shell: bash
|
||||
run: |
|
||||
pushd ./libs/portable
|
||||
python3 ./generate.py -f ../../flutter/build/windows/runner/Release/ -o . -e ../../flutter/build/windows/runner/Release/rustdesk.exe
|
||||
popd
|
||||
mkdir -p ./SignOutput
|
||||
mv ./target/release/rustdesk-portable-packer.exe ./SignOutput/rustdesk-2022-12-26-${{ matrix.job.target }}.exe
|
||||
|
||||
mv ./target/release/rustdesk-portable-packer.exe ./SignOutput/rustdesk-${{ matrix.job.date }}-${{ matrix.job.target }}.exe
|
||||
|
||||
- name: Publish Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
|
||||
60
.github/workflows/third-party-RustDeskTempTopMostWindow.yml
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
name: build RustDeskTempTopMostWindow
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
upload-artifact:
|
||||
type: boolean
|
||||
default: true
|
||||
target:
|
||||
description: 'Target'
|
||||
required: true
|
||||
type: string
|
||||
default: 'windows-2019'
|
||||
configuration:
|
||||
description: 'Configuration'
|
||||
required: true
|
||||
type: string
|
||||
default: 'Release'
|
||||
platform:
|
||||
description: 'Platform'
|
||||
required: true
|
||||
type: string
|
||||
default: 'x64'
|
||||
target_version:
|
||||
description: 'TargetVersion'
|
||||
required: true
|
||||
type: string
|
||||
default: 'Windows10'
|
||||
|
||||
env:
|
||||
project_path: WindowInjection/WindowInjection.vcxproj
|
||||
|
||||
jobs:
|
||||
build-RustDeskTempTopMostWindow:
|
||||
runs-on: ${{ inputs.target }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
env:
|
||||
build_output_dir: RustDeskTempTopMostWindow/WindowInjection/${{ inputs.platform }}/${{ inputs.configuration }}
|
||||
steps:
|
||||
- name: Add MSBuild to PATH
|
||||
uses: microsoft/setup-msbuild@v2
|
||||
|
||||
- name: Download the source code
|
||||
run: |
|
||||
git clone https://github.com/rustdesk-org/RustDeskTempTopMostWindow RustDeskTempTopMostWindow
|
||||
|
||||
# Build. commit 53b548a5398624f7149a382000397993542ad796 is tag v0.3
|
||||
- name: Build the project
|
||||
run: |
|
||||
cd RustDeskTempTopMostWindow && git checkout 53b548a5398624f7149a382000397993542ad796
|
||||
msbuild ${{ env.project_path }} -p:Configuration=${{ inputs.configuration }} -p:Platform=${{ inputs.platform }} /p:TargetVersion=${{ inputs.target_version }}
|
||||
|
||||
- name: Archive build artifacts
|
||||
uses: actions/upload-artifact@master
|
||||
if: ${{ inputs.upload-artifact }}
|
||||
with:
|
||||
name: topmostwindow-artifacts
|
||||
path: |
|
||||
./${{ env.build_output_dir }}/WindowInjection.dll
|
||||
88
.github/workflows/vcpkg-deps-linux.yml
vendored
@@ -1,88 +0,0 @@
|
||||
name: Build vcpkg dependencies for linux clients
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
|
||||
jobs:
|
||||
build-vcpkg-deps-linux:
|
||||
runs-on: ${{ matrix.job.os }}
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
job:
|
||||
- { arch: armv7, os: ubuntu-20.04 }
|
||||
- { arch: x86_64, os: ubuntu-20.04 }
|
||||
- { arch: aarch64, os: ubuntu-20.04 }
|
||||
steps:
|
||||
- name: Create vcpkg artifacts folder
|
||||
run: mkdir -p /opt/artifacts
|
||||
|
||||
- name: Cache Vcpkg
|
||||
id: cache-vcpkg
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /opt/artifacts
|
||||
key: vcpkg-${{ matrix.job.arch }}
|
||||
|
||||
- uses: Kingtous/run-on-arch-action@amd64-support
|
||||
name: Run vcpkg install on ${{ matrix.job.arch }}
|
||||
id: vcpkg
|
||||
with:
|
||||
arch: ${{ matrix.job.arch }}
|
||||
distro: ubuntu18.04
|
||||
githubToken: ${{ github.token }}
|
||||
setup: |
|
||||
ls -l "/opt/artifacts"
|
||||
dockerRunArgs: |
|
||||
--volume "/opt/artifacts:/artifacts"
|
||||
shell: /bin/bash
|
||||
install: |
|
||||
apt update -y
|
||||
case "${{ matrix.job.arch }}" in
|
||||
x86_64)
|
||||
# CMake 3.15+
|
||||
apt install -y gpg wget ca-certificates
|
||||
echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null
|
||||
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
|
||||
apt update -y
|
||||
apt install -y curl zip unzip tar git cmake g++ gcc build-essential pkg-config wget nasm yasm ninja-build libjpeg8-dev
|
||||
cmake --version
|
||||
gcc -v
|
||||
;;
|
||||
aarch64|armv7)
|
||||
apt install -y curl zip unzip git
|
||||
esac
|
||||
run: |
|
||||
# disable git safe.directory
|
||||
git config --global --add safe.directory "*"
|
||||
case "${{ matrix.job.arch }}" in
|
||||
x86_64)
|
||||
export VCPKG_FORCE_SYSTEM_BINARIES=1
|
||||
pushd /artifacts
|
||||
git clone https://github.com/microsoft/vcpkg.git || true
|
||||
pushd vcpkg
|
||||
git reset --hard ${{ env.VCPKG_COMMIT_ID }}
|
||||
./bootstrap-vcpkg.sh
|
||||
./vcpkg install libvpx libyuv opus aom
|
||||
;;
|
||||
aarch64)
|
||||
pushd /artifacts
|
||||
rm -rf rustdesk_thirdparty_lib
|
||||
git clone https://github.com/Kingtous/rustdesk_thirdparty_lib.git --depth=1
|
||||
mkdir -p /artifacts/vcpkg/installed
|
||||
mv ./rustdesk_thirdparty_lib/vcpkg/installed/arm64-linux /artifacts/vcpkg/installed/arm64-linux
|
||||
;;
|
||||
armv7)
|
||||
pushd /artifacts
|
||||
rm -rf rustdesk_thirdparty_lib
|
||||
git clone https://github.com/Kingtous/rustdesk_thirdparty_lib.git --depth=1
|
||||
mkdir -p /artifacts/vcpkg/installed
|
||||
mv ./rustdesk_thirdparty_lib/vcpkg/installed/arm-linux /artifacts/vcpkg/installed/arm-linux
|
||||
;;
|
||||
esac
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@master
|
||||
with:
|
||||
name: vcpkg-artifact-${{ matrix.job.arch }}
|
||||
path: |
|
||||
/opt/artifacts/vcpkg/installed
|
||||
4
.gitignore
vendored
@@ -49,4 +49,6 @@ lib/generated_bridge.dart
|
||||
.ssh
|
||||
.devcontainer/.*
|
||||
# build cache in examples
|
||||
examples/**/target/
|
||||
examples/**/target/
|
||||
# ===
|
||||
vcpkg_installed
|
||||
3657
Cargo.lock
generated
69
Cargo.toml
@@ -1,11 +1,12 @@
|
||||
[package]
|
||||
name = "rustdesk"
|
||||
version = "1.2.0"
|
||||
version = "1.2.4"
|
||||
authors = ["rustdesk <info@rustdesk.com>"]
|
||||
edition = "2021"
|
||||
build= "build.rs"
|
||||
description = "A remote control software."
|
||||
description = "RustDesk Remote Desktop"
|
||||
default-run = "rustdesk"
|
||||
rust-version = "1.75"
|
||||
|
||||
[lib]
|
||||
name = "librustdesk"
|
||||
@@ -27,16 +28,25 @@ use_dasp = ["dasp"]
|
||||
flutter = ["flutter_rust_bridge"]
|
||||
default = ["use_dasp"]
|
||||
hwcodec = ["scrap/hwcodec"]
|
||||
gpucodec = ["scrap/gpucodec"]
|
||||
mediacodec = ["scrap/mediacodec"]
|
||||
linux_headless = ["pam" ]
|
||||
virtual_display_driver = ["virtual_display"]
|
||||
plugin_framework = []
|
||||
linux-pkg-config = ["magnum-opus/linux-pkg-config", "scrap/linux-pkg-config"]
|
||||
unix-file-copy-paste = [
|
||||
"dep:x11-clipboard",
|
||||
"dep:x11rb",
|
||||
"dep:percent-encoding",
|
||||
"dep:once_cell",
|
||||
"clipboard/unix-file-copy-paste",
|
||||
]
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
whoami = "1.4"
|
||||
async-trait = "0.1"
|
||||
whoami = "1.5.0"
|
||||
scrap = { path = "libs/scrap", features = ["wayland"] }
|
||||
hbb_common = { path = "libs/hbb_common" }
|
||||
serde_derive = "1.0"
|
||||
@@ -47,13 +57,11 @@ cfg-if = "1.0"
|
||||
lazy_static = "1.4"
|
||||
sha2 = "0.10"
|
||||
repng = "0.2"
|
||||
parity-tokio-ipc = { git = "https://github.com/open-trade/parity-tokio-ipc" }
|
||||
runas = "1.0"
|
||||
magnum-opus = { git = "https://github.com/rustdesk/magnum-opus" }
|
||||
parity-tokio-ipc = { git = "https://github.com/rustdesk-org/parity-tokio-ipc" }
|
||||
magnum-opus = { git = "https://github.com/rustdesk-org/magnum-opus" }
|
||||
dasp = { version = "0.11", features = ["signal", "interpolate-linear", "interpolate"], optional = true }
|
||||
rubato = { version = "0.12", optional = true }
|
||||
samplerate = { version = "0.2", optional = true }
|
||||
async-trait = "0.1"
|
||||
uuid = { version = "1.3", features = ["v4"] }
|
||||
clap = "4.2"
|
||||
rpassword = "7.2"
|
||||
@@ -62,18 +70,19 @@ num_cpus = "1.15"
|
||||
bytes = { version = "1.4", features = ["serde"] }
|
||||
default-net = "0.14"
|
||||
wol-rs = "1.0"
|
||||
flutter_rust_bridge = { version = "1.75", features = ["uuid"], optional = true}
|
||||
flutter_rust_bridge = { version = "=1.80", features = ["uuid"], optional = true}
|
||||
errno = "0.3"
|
||||
rdev = { git = "https://github.com/fufesou/rdev" }
|
||||
url = { version = "2.3", features = ["serde"] }
|
||||
crossbeam-queue = "0.3"
|
||||
hex = "0.4"
|
||||
reqwest = { git = "https://github.com/rustdesk-org/reqwest", features = ["blocking", "json", "rustls-tls"], default-features=false }
|
||||
chrono = "0.4"
|
||||
cidr-utils = "0.5"
|
||||
libloading = "0.8"
|
||||
fon = "0.6"
|
||||
zip = "0.6"
|
||||
shutdown_hooks = "0.1"
|
||||
totp-rs = { version = "5.4", default-features = false, features = ["gen_secret", "otpauth"] }
|
||||
|
||||
[target.'cfg(not(any(target_os = "android", target_os = "linux")))'.dependencies]
|
||||
cpal = "0.15"
|
||||
@@ -86,17 +95,19 @@ sys-locale = "0.3"
|
||||
enigo = { path = "libs/enigo", features = [ "with_serde" ] }
|
||||
clipboard = { path = "libs/clipboard" }
|
||||
ctrlc = "3.2"
|
||||
arboard = "3.2"
|
||||
arboard = { git = "https://github.com/fufesou/arboard", branch = "feat/x11_set_conn_timeout", features = ["wayland-data-control"] }
|
||||
system_shutdown = "4.0"
|
||||
qrcode-generator = "4.1"
|
||||
|
||||
[target.'cfg(target_os = "windows")'.dependencies]
|
||||
winapi = { version = "0.3", features = ["winuser", "wincrypt", "shellscalingapi"] }
|
||||
winapi = { version = "0.3", features = ["winuser", "wincrypt", "shellscalingapi", "pdh", "synchapi", "memoryapi", "shellapi"] }
|
||||
winreg = "0.11"
|
||||
windows-service = "0.6"
|
||||
virtual_display = { path = "libs/virtual_display", optional = true }
|
||||
impersonate_system = { git = "https://github.com/21pages/impersonate-system" }
|
||||
shared_memory = "0.12"
|
||||
shutdown_hooks = "0.1"
|
||||
tauri-winrt-notification = "0.1.2"
|
||||
runas = "1.2"
|
||||
|
||||
[target.'cfg(target_os = "macos")'.dependencies]
|
||||
objc = "0.2"
|
||||
@@ -105,18 +116,27 @@ dispatch = "0.2"
|
||||
core-foundation = "0.9"
|
||||
core-graphics = "0.22"
|
||||
include_dir = "0.7"
|
||||
dark-light = "1.0"
|
||||
fruitbasket = "0.10"
|
||||
objc_id = "0.1"
|
||||
|
||||
[target.'cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))'.dependencies]
|
||||
tray-icon = { git = "https://github.com/rustdesk-org/tray-icon" }
|
||||
tao = { git = "https://github.com/rustdesk-org/tao", branch = "muda" }
|
||||
tray-icon = { git = "https://github.com/tauri-apps/tray-icon" }
|
||||
tao = { git = "https://github.com/rustdesk-org/tao", branch = "dev" }
|
||||
image = "0.24"
|
||||
|
||||
[target.'cfg(any(target_os = "macos", target_os = "linux"))'.dependencies]
|
||||
keepawake = { git = "https://github.com/rustdesk-org/keepawake-rs" }
|
||||
|
||||
[target.'cfg(any(target_os = "windows", target_os = "linux"))'.dependencies]
|
||||
wallpaper = { git = "https://github.com/21pages/wallpaper.rs" }
|
||||
|
||||
[target.'cfg(any(target_os = "macos", target_os = "windows"))'.dependencies]
|
||||
# https://github.com/rustdesk/rustdesk-server-pro/issues/189, using native-tls for better tls support
|
||||
reqwest = { git = "https://github.com/rustdesk-org/reqwest", features = ["blocking", "json", "native-tls", "gzip"], default-features=false }
|
||||
|
||||
[target.'cfg(not(any(target_os = "macos", target_os = "windows")))'.dependencies]
|
||||
reqwest = { git = "https://github.com/rustdesk-org/reqwest", features = ["blocking", "json", "rustls-tls", "rustls-tls-native-roots", "gzip"], default-features=false }
|
||||
|
||||
[target.'cfg(target_os = "linux")'.dependencies]
|
||||
psimple = { package = "libpulse-simple-binding", version = "2.27" }
|
||||
pulse = { package = "libpulse-binding", version = "2.27" }
|
||||
@@ -128,28 +148,33 @@ dbus = "0.9"
|
||||
dbus-crossroads = "0.5"
|
||||
pam = { git="https://github.com/fufesou/pam", optional = true }
|
||||
users = { version = "0.11" }
|
||||
x11-clipboard = {git="https://github.com/clslaid/x11-clipboard", branch = "feat/store-batch", optional = true}
|
||||
x11rb = {version = "0.12", features = ["all-extensions"], optional = true}
|
||||
percent-encoding = {version = "2.3", optional = true}
|
||||
once_cell = {version = "1.18", optional = true}
|
||||
|
||||
[target.'cfg(target_os = "android")'.dependencies]
|
||||
android_logger = "0.13"
|
||||
jni = "0.21"
|
||||
android-wakelock = { git = "https://github.com/21pages/android-wakelock" }
|
||||
|
||||
[workspace]
|
||||
members = ["libs/scrap", "libs/hbb_common", "libs/enigo", "libs/clipboard", "libs/virtual_display", "libs/virtual_display/dylib", "libs/portable"]
|
||||
exclude = ["vdi/host", "examples/custom_plugin"]
|
||||
|
||||
[package.metadata.winres]
|
||||
LegalCopyright = "Copyright © 2023 Purslane, Inc."
|
||||
# this FileDescription overrides package.description
|
||||
FileDescription = "RustDesk"
|
||||
LegalCopyright = "Copyright © 2024 Purslane Ltd. All rights reserved."
|
||||
ProductName = "RustDesk"
|
||||
FileDescription = "RustDesk Remote Desktop"
|
||||
OriginalFilename = "rustdesk.exe"
|
||||
|
||||
[target.'cfg(target_os="windows")'.build-dependencies]
|
||||
winres = "0.1"
|
||||
winapi = { version = "0.3", features = [ "winnt" ] }
|
||||
winapi = { version = "0.3", features = [ "winnt", "pdh", "synchapi" ] }
|
||||
|
||||
[build-dependencies]
|
||||
cc = "1.0"
|
||||
hbb_common = { path = "libs/hbb_common" }
|
||||
flutter_rust_bridge_codegen = "1.75"
|
||||
os-version = "0.2"
|
||||
|
||||
[dev-dependencies]
|
||||
@@ -169,3 +194,7 @@ panic = 'abort'
|
||||
strip = true
|
||||
#opt-level = 'z' # only have smaller size after strip
|
||||
rpath = true
|
||||
|
||||
[profile.dev]
|
||||
split-debuginfo = '...' # Platform-specific.
|
||||
#strip = "debuginfo"
|
||||
|
||||
57
Dockerfile
@@ -1,21 +1,54 @@
|
||||
FROM debian
|
||||
FROM debian:bullseye-slim
|
||||
|
||||
WORKDIR /
|
||||
RUN apt update -y && apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake unzip zip sudo libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev cmake ninja-build
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
RUN apt update -y && \
|
||||
apt install --yes --no-install-recommends \
|
||||
g++ \
|
||||
gcc \
|
||||
git \
|
||||
curl \
|
||||
nasm \
|
||||
yasm \
|
||||
libgtk-3-dev \
|
||||
clang \
|
||||
libxcb-randr0-dev \
|
||||
libxdo-dev \
|
||||
libxfixes-dev \
|
||||
libxcb-shape0-dev \
|
||||
libxcb-xfixes0-dev \
|
||||
libasound2-dev \
|
||||
libpulse-dev \
|
||||
make \
|
||||
cmake \
|
||||
unzip \
|
||||
zip \
|
||||
sudo \
|
||||
libgstreamer1.0-dev \
|
||||
libgstreamer-plugins-base1.0-dev \
|
||||
ca-certificates \
|
||||
ninja-build && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN git clone https://github.com/microsoft/vcpkg && cd vcpkg && git checkout 2023.04.15
|
||||
RUN /vcpkg/bootstrap-vcpkg.sh -disableMetrics
|
||||
RUN /vcpkg/vcpkg --disable-metrics install libvpx libyuv opus aom
|
||||
RUN git clone --branch 2023.04.15 --depth=1 https://github.com/microsoft/vcpkg && \
|
||||
/vcpkg/bootstrap-vcpkg.sh -disableMetrics && \
|
||||
/vcpkg/vcpkg --disable-metrics install libvpx libyuv opus aom
|
||||
|
||||
RUN groupadd -r user && \
|
||||
useradd -r -g user user --home /home/user && \
|
||||
mkdir -p /home/user/rustdesk && \
|
||||
chown -R user: /home/user && \
|
||||
echo "user ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/user
|
||||
|
||||
RUN groupadd -r user && useradd -r -g user user --home /home/user && mkdir -p /home/user && chown user /home/user && echo "user ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/user
|
||||
WORKDIR /home/user
|
||||
RUN wget https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so
|
||||
RUN curl -LO https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so
|
||||
|
||||
USER user
|
||||
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > rustup.sh
|
||||
RUN chmod +x rustup.sh
|
||||
RUN ./rustup.sh -y
|
||||
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > rustup.sh && \
|
||||
chmod +x rustup.sh && \
|
||||
./rustup.sh -y
|
||||
|
||||
USER root
|
||||
ENV HOME=/home/user
|
||||
COPY ./entrypoint /
|
||||
ENTRYPOINT ["/entrypoint"]
|
||||
COPY ./entrypoint.sh /
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
|
||||
68
README.md
@@ -5,7 +5,7 @@
|
||||
<a href="#how-to-build-with-docker">Docker</a> •
|
||||
<a href="#file-structure">Structure</a> •
|
||||
<a href="#snapshot">Snapshot</a><br>
|
||||
[<a href="docs/README-UA.md">Українська</a>] | [<a href="docs/README-CS.md">česky</a>] | [<a href="docs/README-ZH.md">中文</a>] | [<a href="docs/README-HU.md">Magyar</a>] | [<a href="docs/README-ES.md">Español</a>] | [<a href="docs/README-FA.md">فارسی</a>] | [<a href="docs/README-FR.md">Français</a>] | [<a href="docs/README-DE.md">Deutsch</a>] | [<a href="docs/README-PL.md">Polski</a>] | [<a href="docs/README-ID.md">Indonesian</a>] | [<a href="docs/README-FI.md">Suomi</a>] | [<a href="docs/README-ML.md">മലയാളം</a>] | [<a href="docs/README-JP.md">日本語</a>] | [<a href="docs/README-NL.md">Nederlands</a>] | [<a href="docs/README-IT.md">Italiano</a>] | [<a href="docs/README-RU.md">Русский</a>] | [<a href="docs/README-PTBR.md">Português (Brasil)</a>] | [<a href="docs/README-EO.md">Esperanto</a>] | [<a href="docs/README-KR.md">한국어</a>] | [<a href="docs/README-AR.md">العربي</a>] | [<a href="docs/README-VN.md">Tiếng Việt</a>] | [<a href="docs/README-DA.md">Dansk</a>] | [<a href="docs/README-GR.md">Ελληνικά</a>]<br>
|
||||
[<a href="docs/README-UA.md">Українська</a>] | [<a href="docs/README-CS.md">česky</a>] | [<a href="docs/README-ZH.md">中文</a>] | [<a href="docs/README-HU.md">Magyar</a>] | [<a href="docs/README-ES.md">Español</a>] | [<a href="docs/README-FA.md">فارسی</a>] | [<a href="docs/README-FR.md">Français</a>] | [<a href="docs/README-DE.md">Deutsch</a>] | [<a href="docs/README-PL.md">Polski</a>] | [<a href="docs/README-ID.md">Indonesian</a>] | [<a href="docs/README-FI.md">Suomi</a>] | [<a href="docs/README-ML.md">മലയാളം</a>] | [<a href="docs/README-JP.md">日本語</a>] | [<a href="docs/README-NL.md">Nederlands</a>] | [<a href="docs/README-IT.md">Italiano</a>] | [<a href="docs/README-RU.md">Русский</a>] | [<a href="docs/README-PTBR.md">Português (Brasil)</a>] | [<a href="docs/README-EO.md">Esperanto</a>] | [<a href="docs/README-KR.md">한국어</a>] | [<a href="docs/README-AR.md">العربي</a>] | [<a href="docs/README-VN.md">Tiếng Việt</a>] | [<a href="docs/README-DA.md">Dansk</a>] | [<a href="docs/README-GR.md">Ελληνικά</a>] | [<a href="docs/README-TR.md">Türkçe</a>]<br>
|
||||
<b>We need your help to translate this README, <a href="https://github.com/rustdesk/rustdesk/tree/master/src/lang">RustDesk UI</a> and <a href="https://github.com/rustdesk/doc.rustdesk.com">RustDesk Doc</a> to your native language</b>
|
||||
</p>
|
||||
|
||||
@@ -29,27 +29,9 @@ RustDesk welcomes contribution from everyone. See [CONTRIBUTING.md](docs/CONTRIB
|
||||
alt="Get it on F-Droid"
|
||||
height="80">](https://f-droid.org/en/packages/com.carriez.flutter_hbb)
|
||||
|
||||
## Free Public Servers
|
||||
|
||||
Below are the servers you are using for free, they may change over time. If you are not close to one of these, your network may be slow.
|
||||
| Location | Vendor | Specification |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| South Korea (Seoul) | [AWS lightsail](https://aws.amazon.com) | 1 vCPU / 0.5 GB RAM |
|
||||
| Germany | [Hetzner](https://www.hetzner.com) | 2 vCPU / 4 GB RAM |
|
||||
| Germany | [Codext](https://codext.de) | 4 vCPU / 8 GB RAM |
|
||||
| Ukraine (Kyiv) | [dc.volia](https://dc.volia.com) | 2 vCPU / 4 GB RAM |
|
||||
|
||||
## Dev Container
|
||||
|
||||
[](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/rustdesk/rustdesk)
|
||||
|
||||
If you already have VS Code and Docker installed, you can click the badge above to get started. Clicking will cause VS Code to automatically install the Dev Containers extension if needed, clone the source code into a container volume, and spin up a dev container for use.
|
||||
|
||||
Go through [DEVCONTAINER.md](docs/DEVCONTAINER.md) for more info.
|
||||
|
||||
## Dependencies
|
||||
|
||||
Desktop versions use [Sciter](https://sciter.com/) or Flutter for GUI, this tutorial is for Sciter only.
|
||||
Desktop versions use Flutter or Sciter (deprecated) for GUI, this tutorial is for Sciter only, since it is easier and more friendly to start. Check out our [CI](https://github.com/rustdesk/rustdesk/blob/master/.github/workflows/flutter-build.yml) for building Flutter version.
|
||||
|
||||
Please download Sciter dynamic library yourself.
|
||||
|
||||
@@ -80,11 +62,12 @@ sudo apt install -y zip g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxc
|
||||
libclang-dev ninja-build libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
|
||||
```
|
||||
|
||||
### openSUSE Tumbleweed
|
||||
### openSUSE Tumbleweed
|
||||
|
||||
```sh
|
||||
sudo zypper install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libXfixes-devel cmake alsa-lib-devel gstreamer-devel gstreamer-plugins-base-devel xdotool-devel
|
||||
```
|
||||
|
||||
### Fedora 28 (CentOS 8)
|
||||
|
||||
```sh
|
||||
@@ -135,34 +118,6 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### Change Wayland to X11 (Xorg)
|
||||
|
||||
RustDesk does not support Wayland. Check [this](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) to configuring Xorg as the default GNOME session.
|
||||
|
||||
## Wayland support
|
||||
|
||||
Wayland does not seem to provide any API for sending keypresses to other windows. Therefore, the RustDesk uses an API from a lower level, namely the `/dev/uinput` device (Linux kernel level).
|
||||
|
||||
When Wayland is the controlled side, you have to start in the following way:
|
||||
```bash
|
||||
# Start uinput service
|
||||
$ sudo rustdesk --service
|
||||
$ rustdesk
|
||||
```
|
||||
**Notice**: Wayland screen recording uses different interfaces. RustDesk currently only supports org.freedesktop.portal.ScreenCast.
|
||||
```bash
|
||||
$ dbus-send --session --print-reply \
|
||||
--dest=org.freedesktop.portal.Desktop \
|
||||
/org/freedesktop/portal/desktop \
|
||||
org.freedesktop.DBus.Properties.Get \
|
||||
string:org.freedesktop.portal.ScreenCast string:version
|
||||
# Not support
|
||||
Error org.freedesktop.DBus.Error.InvalidArgs: No such interface “org.freedesktop.portal.ScreenCast”
|
||||
# Support
|
||||
method return time=1662544486.931020 sender=:1.54 -> destination=:1.139 serial=257 reply_serial=2
|
||||
variant uint32 4
|
||||
```
|
||||
|
||||
## How to build with Docker
|
||||
|
||||
Begin by cloning the repository and building the Docker container:
|
||||
@@ -198,20 +153,21 @@ Please ensure that you are running these commands from the root of the RustDesk
|
||||
- **[libs/hbb_common](https://github.com/rustdesk/rustdesk/tree/master/libs/hbb_common)**: video codec, config, tcp/udp wrapper, protobuf, fs functions for file transfer, and some other utility functions
|
||||
- **[libs/scrap](https://github.com/rustdesk/rustdesk/tree/master/libs/scrap)**: screen capture
|
||||
- **[libs/enigo](https://github.com/rustdesk/rustdesk/tree/master/libs/enigo)**: platform specific keyboard/mouse control
|
||||
- **[src/ui](https://github.com/rustdesk/rustdesk/tree/master/src/ui)**: GUI
|
||||
- **[libs/clipboard](https://github.com/rustdesk/rustdesk/tree/master/libs/clipboard)**: file copy and paste implementation for Windows, Linux, macOS.
|
||||
- **[src/ui](https://github.com/rustdesk/rustdesk/tree/master/src/ui)**: obsolete Sciter UI (deprecated)
|
||||
- **[src/server](https://github.com/rustdesk/rustdesk/tree/master/src/server)**: audio/clipboard/input/video services, and network connections
|
||||
- **[src/client.rs](https://github.com/rustdesk/rustdesk/tree/master/src/client.rs)**: start a peer connection
|
||||
- **[src/rendezvous_mediator.rs](https://github.com/rustdesk/rustdesk/tree/master/src/rendezvous_mediator.rs)**: Communicate with [rustdesk-server](https://github.com/rustdesk/rustdesk-server), wait for remote direct (TCP hole punching) or relayed connection
|
||||
- **[src/platform](https://github.com/rustdesk/rustdesk/tree/master/src/platform)**: platform specific code
|
||||
- **[flutter](https://github.com/rustdesk/rustdesk/tree/master/flutter)**: Flutter code for mobile
|
||||
- **[flutter](https://github.com/rustdesk/rustdesk/tree/master/flutter)**: Flutter code for desktop and mobile
|
||||
- **[flutter/web/js](https://github.com/rustdesk/rustdesk/tree/master/flutter/web/js)**: JavaScript for Flutter web client
|
||||
|
||||
## Snapshots
|
||||
## Screenshots
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
@@ -2,12 +2,13 @@
|
||||
version: 1
|
||||
script:
|
||||
- rm -rf ./AppDir || true
|
||||
- bsdtar -zxvf ../rustdesk-1.2.0.deb
|
||||
- bsdtar -zxvf ../rustdesk-1.2.4.deb
|
||||
- tar -xvf ./data.tar.xz
|
||||
- mkdir ./AppDir
|
||||
- mv ./usr ./AppDir/usr
|
||||
# 32x32 icon
|
||||
- for i in {32,64,128}; do mkdir -p ./AppDir/usr/share/icons/hicolor/$i\x$i/apps/; cp ../res/$i\x$i.png ./AppDir/usr/share/icons/hicolor/$i\x$i/apps/rustdesk.png; done
|
||||
- mkdir -p ./AppDir/usr/share/icons/hicolor/scalable/apps/; cp ../res/scalable.svg ./AppDir/usr/share/icons/hicolor/scalable/apps/rustdesk.svg
|
||||
# desktop file
|
||||
# - sed -i "s/Icon=\/usr\/share\/rustdesk\/files\/rustdesk.png/Icon=rustdesk/g" ./AppDir/usr/share/applications/rustdesk.desktop
|
||||
- rm -rf ./AppDir/usr/share/applications
|
||||
@@ -17,7 +18,7 @@ AppDir:
|
||||
id: rustdesk
|
||||
name: rustdesk
|
||||
icon: rustdesk
|
||||
version: 1.2.0
|
||||
version: 1.2.4
|
||||
exec: usr/lib/rustdesk/rustdesk
|
||||
exec_args: $@
|
||||
apt:
|
||||
|
||||
@@ -2,12 +2,13 @@
|
||||
version: 1
|
||||
script:
|
||||
- rm -rf ./AppDir || true
|
||||
- bsdtar -zxvf ../rustdesk-1.2.0.deb
|
||||
- bsdtar -zxvf ../rustdesk-1.2.4.deb
|
||||
- tar -xvf ./data.tar.xz
|
||||
- mkdir ./AppDir
|
||||
- mv ./usr ./AppDir/usr
|
||||
# 32x32 icon
|
||||
- for i in {32,64,128}; do mkdir -p ./AppDir/usr/share/icons/hicolor/$i\x$i/apps/; cp ../res/$i\x$i.png ./AppDir/usr/share/icons/hicolor/$i\x$i/apps/rustdesk.png; done
|
||||
- mkdir -p ./AppDir/usr/share/icons/hicolor/scalable/apps/; cp ../res/scalable.svg ./AppDir/usr/share/icons/hicolor/scalable/apps/rustdesk.svg
|
||||
# desktop file
|
||||
# - sed -i "s/Icon=\/usr\/share\/rustdesk\/files\/rustdesk.png/Icon=rustdesk/g" ./AppDir/usr/share/applications/rustdesk.desktop
|
||||
- rm -rf ./AppDir/usr/share/applications
|
||||
@@ -17,7 +18,7 @@ AppDir:
|
||||
id: rustdesk
|
||||
name: rustdesk
|
||||
icon: rustdesk
|
||||
version: 1.2.0
|
||||
version: 1.2.4
|
||||
exec: usr/lib/rustdesk/rustdesk
|
||||
exec_args: $@
|
||||
apt:
|
||||
@@ -52,6 +53,7 @@ AppDir:
|
||||
- libva-x11-2
|
||||
- libvdpau1
|
||||
- libgstreamer-plugins-base1.0-0
|
||||
- gstreamer1.0-pipewire
|
||||
- libwayland-cursor0
|
||||
- libwayland-egl1
|
||||
- libpulse0
|
||||
|
||||
105
build.py
@@ -16,7 +16,7 @@ osx = platform.platform().startswith(
|
||||
hbb_name = 'rustdesk' + ('.exe' if windows else '')
|
||||
exe_path = 'target/release/' + hbb_name
|
||||
if windows:
|
||||
flutter_build_dir = 'build/windows/runner/Release/'
|
||||
flutter_build_dir = 'build/windows/x64/runner/Release/'
|
||||
elif osx:
|
||||
flutter_build_dir = 'build/macos/Build/Products/Release/'
|
||||
else:
|
||||
@@ -24,18 +24,21 @@ else:
|
||||
flutter_build_dir_2 = f'flutter/{flutter_build_dir}'
|
||||
skip_cargo = False
|
||||
|
||||
|
||||
def get_arch() -> str:
|
||||
custom_arch = os.environ.get("ARCH")
|
||||
if custom_arch is None:
|
||||
return "amd64"
|
||||
return custom_arch
|
||||
|
||||
|
||||
def system2(cmd):
|
||||
err = os.system(cmd)
|
||||
if err != 0:
|
||||
print(f"Error occurred when executing: {cmd}. Exiting.")
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
def get_version():
|
||||
with open("Cargo.toml", encoding="utf-8") as fh:
|
||||
for line in fh:
|
||||
@@ -46,17 +49,11 @@ def get_version():
|
||||
|
||||
def parse_rc_features(feature):
|
||||
available_features = {
|
||||
'IddDriver': {
|
||||
'platform': ['windows'],
|
||||
'zip_url': 'https://github.com/fufesou/RustDeskIddDriver/releases/download/v0.3/RustDeskIddDriver_x64.zip',
|
||||
'checksum_url': 'https://github.com/fufesou/RustDeskIddDriver/releases/download/v0.3/checksum_md5',
|
||||
'exclude': ['README.md', 'certmgr.exe', 'install_cert_runas_admin.bat', 'RustDeskIddApp.exe'],
|
||||
},
|
||||
'PrivacyMode': {
|
||||
'platform': ['windows'],
|
||||
'zip_url': 'https://github.com/fufesou/RustDeskTempTopMostWindow/releases/download/v0.1'
|
||||
'/TempTopMostWindow_x64_pic_en.zip',
|
||||
'checksum_url': 'https://github.com/fufesou/RustDeskTempTopMostWindow/releases/download/v0.1/checksum_md5',
|
||||
'zip_url': 'https://github.com/fufesou/RustDeskTempTopMostWindow/releases/download/v0.3'
|
||||
'/TempTopMostWindow_x64.zip',
|
||||
'checksum_url': 'https://github.com/fufesou/RustDeskTempTopMostWindow/releases/download/v0.3/checksum_md5',
|
||||
'include': ['WindowInjection.dll'],
|
||||
}
|
||||
}
|
||||
@@ -71,20 +68,22 @@ def parse_rc_features(feature):
|
||||
return 'osx' in platforms
|
||||
else:
|
||||
return 'linux' in platforms
|
||||
|
||||
|
||||
def get_all_features():
|
||||
features = []
|
||||
for (feat, feat_info) in available_features.items():
|
||||
if platform_check(feat_info['platform']):
|
||||
features.append(feat)
|
||||
return features
|
||||
|
||||
|
||||
if isinstance(feature, str) and feature.upper() == 'ALL':
|
||||
return get_all_features()
|
||||
elif isinstance(feature, list):
|
||||
if windows:
|
||||
# download third party is deprecated, we use github ci instead.
|
||||
# force add PrivacyMode
|
||||
feature.append('PrivacyMode')
|
||||
# feature.append('PrivacyMode')
|
||||
pass
|
||||
for feat in feature:
|
||||
if isinstance(feat, str) and feat.upper() == 'ALL':
|
||||
return get_all_features()
|
||||
@@ -109,7 +108,7 @@ def make_parser():
|
||||
nargs='+',
|
||||
default='',
|
||||
help='Integrate features, windows only.'
|
||||
'Available: IddDriver, PrivacyMode. Special value is "ALL" and empty "". Default is empty.')
|
||||
'Available: PrivacyMode. Special value is "ALL" and empty "". Default is empty.')
|
||||
parser.add_argument('--flutter', action='store_true',
|
||||
help='Build flutter package', default=False)
|
||||
parser.add_argument(
|
||||
@@ -118,11 +117,21 @@ def make_parser():
|
||||
help='Enable feature hwcodec' + (
|
||||
'' if windows or osx else ', need libva-dev, libvdpau-dev.')
|
||||
)
|
||||
parser.add_argument(
|
||||
'--gpucodec',
|
||||
action='store_true',
|
||||
help='Enable feature gpucodec, only available on windows now.'
|
||||
)
|
||||
parser.add_argument(
|
||||
'--portable',
|
||||
action='store_true',
|
||||
help='Build windows portable'
|
||||
)
|
||||
parser.add_argument(
|
||||
'--unix-file-copy-paste',
|
||||
action='store_true',
|
||||
help='Build with unix file copy paste feature'
|
||||
)
|
||||
parser.add_argument(
|
||||
'--flatpak',
|
||||
action='store_true',
|
||||
@@ -138,6 +147,12 @@ def make_parser():
|
||||
action='store_true',
|
||||
help='Skip cargo build process, only flutter version + Linux supported currently'
|
||||
)
|
||||
if windows:
|
||||
parser.add_argument(
|
||||
'--skip-portable-pack',
|
||||
action='store_true',
|
||||
help='Skip packing, only flutter version + Windows supported'
|
||||
)
|
||||
parser.add_argument(
|
||||
"--package",
|
||||
type=str
|
||||
@@ -172,8 +187,8 @@ def generate_build_script_for_docker():
|
||||
export VCPKG_ROOT=`pwd`/vcpkg
|
||||
git clone https://github.com/microsoft/vcpkg
|
||||
vcpkg/bootstrap-vcpkg.sh
|
||||
vcpkg/vcpkg install libvpx libyuv opus
|
||||
popd
|
||||
$VCPKG_ROOT/vcpkg install --x-install-root="$VCPKG_ROOT/installed"
|
||||
# build rustdesk
|
||||
./build.py --flutter --hwcodec
|
||||
''')
|
||||
@@ -181,10 +196,14 @@ def generate_build_script_for_docker():
|
||||
system2("bash /tmp/build.sh")
|
||||
|
||||
|
||||
# Downloading third party resources is deprecated.
|
||||
# We can use this function in an offline build environment.
|
||||
# Even in an online environment, we recommend building third-party resources yourself.
|
||||
def download_extract_features(features, res_dir):
|
||||
import re
|
||||
|
||||
proxy = ''
|
||||
|
||||
def req(url):
|
||||
if not proxy:
|
||||
return url
|
||||
@@ -196,9 +215,9 @@ def download_extract_features(features, res_dir):
|
||||
|
||||
for (feat, feat_info) in features.items():
|
||||
includes = feat_info['include'] if 'include' in feat_info and feat_info['include'] else []
|
||||
includes = [ re.compile(p) for p in includes ]
|
||||
includes = [re.compile(p) for p in includes]
|
||||
excludes = feat_info['exclude'] if 'exclude' in feat_info and feat_info['exclude'] else []
|
||||
excludes = [ re.compile(p) for p in excludes ]
|
||||
excludes = [re.compile(p) for p in excludes]
|
||||
|
||||
print(f'{feat} download begin')
|
||||
download_filename = feat_info['zip_url'].split('/')[-1]
|
||||
@@ -261,10 +280,10 @@ def external_resources(flutter, args, res_dir):
|
||||
|
||||
def get_features(args):
|
||||
features = ['inline'] if not args.flutter else []
|
||||
if windows:
|
||||
features.append('virtual_display_driver')
|
||||
if args.hwcodec:
|
||||
features.append('hwcodec')
|
||||
if args.gpucodec:
|
||||
features.append('gpucodec')
|
||||
if args.flutter:
|
||||
features.append('flutter')
|
||||
features.append('flutter_texture_render')
|
||||
@@ -272,6 +291,8 @@ def get_features(args):
|
||||
features.append('flatpak')
|
||||
if args.appimage:
|
||||
features.append('appimage')
|
||||
if args.unix_file_copy_paste:
|
||||
features.append('unix-file-copy-paste')
|
||||
print("features:", features)
|
||||
return features
|
||||
|
||||
@@ -285,7 +306,7 @@ Version: %s
|
||||
Architecture: %s
|
||||
Maintainer: rustdesk <info@rustdesk.com>
|
||||
Homepage: https://rustdesk.com
|
||||
Depends: libgtk-3-0, libxcb-randr0, libxdo3, libxfixes3, libxcb-shape0, libxcb-xfixes0, libasound2, libsystemd0, curl, libva-drm2, libva-x11-2, libvdpau1, libgstreamer-plugins-base1.0-0, libpam0g
|
||||
Depends: libgtk-3-0, libxcb-randr0, libxdo3, libxfixes3, libxcb-shape0, libxcb-xfixes0, libasound2, libsystemd0, curl, libva-drm2, libva-x11-2, libvdpau1, libgstreamer-plugins-base1.0-0, libpam0g, libappindicator3-1, gstreamer1.0-pipewire
|
||||
Description: A remote control software.
|
||||
|
||||
""" % (version, get_arch())
|
||||
@@ -311,6 +332,8 @@ def build_flutter_deb(version, features):
|
||||
system2('mkdir -p tmpdeb/etc/rustdesk/')
|
||||
system2('mkdir -p tmpdeb/etc/pam.d/')
|
||||
system2('mkdir -p tmpdeb/usr/share/rustdesk/files/systemd/')
|
||||
system2('mkdir -p tmpdeb/usr/share/icons/hicolor/256x256/apps/')
|
||||
system2('mkdir -p tmpdeb/usr/share/icons/hicolor/scalable/apps/')
|
||||
system2('mkdir -p tmpdeb/usr/share/applications/')
|
||||
system2('mkdir -p tmpdeb/usr/share/polkit-1/actions')
|
||||
system2('rm tmpdeb/usr/bin/rustdesk || true')
|
||||
@@ -319,7 +342,9 @@ def build_flutter_deb(version, features):
|
||||
system2(
|
||||
'cp ../res/rustdesk.service tmpdeb/usr/share/rustdesk/files/systemd/')
|
||||
system2(
|
||||
'cp ../res/128x128@2x.png tmpdeb/usr/share/rustdesk/files/rustdesk.png')
|
||||
'cp ../res/128x128@2x.png tmpdeb/usr/share/icons/hicolor/256x256/apps/rustdesk.png')
|
||||
system2(
|
||||
'cp ../res/scalable.svg tmpdeb/usr/share/icons/hicolor/scalable/apps/rustdesk.svg')
|
||||
system2(
|
||||
'cp ../res/rustdesk.desktop tmpdeb/usr/share/applications/rustdesk.desktop')
|
||||
system2(
|
||||
@@ -346,11 +371,14 @@ def build_flutter_deb(version, features):
|
||||
os.rename('rustdesk.deb', '../rustdesk-%s.deb' % version)
|
||||
os.chdir("..")
|
||||
|
||||
|
||||
def build_deb_from_folder(version, binary_folder):
|
||||
os.chdir('flutter')
|
||||
system2('mkdir -p tmpdeb/usr/bin/')
|
||||
system2('mkdir -p tmpdeb/usr/lib/rustdesk')
|
||||
system2('mkdir -p tmpdeb/usr/share/rustdesk/files/systemd/')
|
||||
system2('mkdir -p tmpdeb/usr/share/icons/hicolor/256x256/apps/')
|
||||
system2('mkdir -p tmpdeb/usr/share/icons/hicolor/scalable/apps/')
|
||||
system2('mkdir -p tmpdeb/usr/share/applications/')
|
||||
system2('mkdir -p tmpdeb/usr/share/polkit-1/actions')
|
||||
system2('rm tmpdeb/usr/bin/rustdesk || true')
|
||||
@@ -359,7 +387,9 @@ def build_deb_from_folder(version, binary_folder):
|
||||
system2(
|
||||
'cp ../res/rustdesk.service tmpdeb/usr/share/rustdesk/files/systemd/')
|
||||
system2(
|
||||
'cp ../res/128x128@2x.png tmpdeb/usr/share/rustdesk/files/rustdesk.png')
|
||||
'cp ../res/128x128@2x.png tmpdeb/usr/share/icons/hicolor/256x256/apps/rustdesk.png')
|
||||
system2(
|
||||
'cp ../res/scalable.svg tmpdeb/usr/share/icons/hicolor/scalable/apps/rustdesk.svg')
|
||||
system2(
|
||||
'cp ../res/rustdesk.desktop tmpdeb/usr/share/applications/rustdesk.desktop')
|
||||
system2(
|
||||
@@ -380,18 +410,22 @@ def build_deb_from_folder(version, binary_folder):
|
||||
os.rename('rustdesk.deb', '../rustdesk-%s.deb' % version)
|
||||
os.chdir("..")
|
||||
|
||||
|
||||
def build_flutter_dmg(version, features):
|
||||
if not skip_cargo:
|
||||
# set minimum osx build target, now is 10.14, which is the same as the flutter xcode project
|
||||
system2(f'MACOSX_DEPLOYMENT_TARGET=10.14 cargo build --features {features} --lib --release')
|
||||
system2(
|
||||
f'MACOSX_DEPLOYMENT_TARGET=10.14 cargo build --features {features} --lib --release')
|
||||
# copy dylib
|
||||
system2(
|
||||
"cp target/release/liblibrustdesk.dylib target/release/librustdesk.dylib")
|
||||
os.chdir('flutter')
|
||||
system2('flutter build macos --release')
|
||||
'''
|
||||
system2(
|
||||
"create-dmg --volname \"RustDesk Installer\" --window-pos 200 120 --window-size 800 400 --icon-size 100 --app-drop-link 600 185 --icon RustDesk.app 200 190 --hide-extension RustDesk.app rustdesk.dmg ./build/macos/Build/Products/Release/RustDesk.app")
|
||||
os.rename("rustdesk.dmg", f"../rustdesk-{version}.dmg")
|
||||
'''
|
||||
os.chdir("..")
|
||||
|
||||
|
||||
@@ -406,7 +440,7 @@ def build_flutter_arch_manjaro(version, features):
|
||||
system2('HBB=`pwd`/.. FLUTTER=1 makepkg -f')
|
||||
|
||||
|
||||
def build_flutter_windows(version, features):
|
||||
def build_flutter_windows(version, features, skip_portable_pack):
|
||||
if not skip_cargo:
|
||||
system2(f'cargo build --features {features} --lib --release')
|
||||
if not os.path.exists("target/release/librustdesk.dll"):
|
||||
@@ -417,6 +451,8 @@ def build_flutter_windows(version, features):
|
||||
os.chdir('..')
|
||||
shutil.copy2('target/release/deps/dylib_virtual_display.dll',
|
||||
flutter_build_dir_2)
|
||||
if skip_portable_pack:
|
||||
return
|
||||
os.chdir('libs/portable')
|
||||
system2('pip3 install -r requirements.txt')
|
||||
system2(
|
||||
@@ -466,13 +502,14 @@ def main():
|
||||
os.chdir('../../..')
|
||||
|
||||
if flutter:
|
||||
build_flutter_windows(version, features)
|
||||
build_flutter_windows(version, features, args.skip_portable_pack)
|
||||
return
|
||||
system2('cargo build --release --features ' + features)
|
||||
# system2('upx.exe target/release/rustdesk.exe')
|
||||
system2('mv target/release/rustdesk.exe target/release/RustDesk.exe')
|
||||
pa = os.environ.get('P')
|
||||
if pa:
|
||||
# https://certera.com/kb/tutorial-guide-for-safenet-authentication-client-for-code-signing/
|
||||
system2(
|
||||
f'signtool sign /a /v /p {pa} /debug /f .\\cert.pfx /t http://timestamp.digicert.com '
|
||||
'target\\release\\rustdesk.exe')
|
||||
@@ -537,13 +574,6 @@ def main():
|
||||
'cp libsciter.dylib target/release/bundle/osx/RustDesk.app/Contents/MacOS/')
|
||||
# https://github.com/sindresorhus/create-dmg
|
||||
system2('/bin/rm -rf *.dmg')
|
||||
plist = "target/release/bundle/osx/RustDesk.app/Contents/Info.plist"
|
||||
txt = open(plist).read()
|
||||
with open(plist, "wt") as fh:
|
||||
fh.write(txt.replace("</dict>", """
|
||||
<key>LSUIElement</key>
|
||||
<string>1</string>
|
||||
</dict>"""))
|
||||
pa = os.environ.get('P')
|
||||
if pa:
|
||||
system2('''
|
||||
@@ -556,7 +586,8 @@ def main():
|
||||
codesign -s "Developer ID Application: {0}" --force --options runtime ./target/release/bundle/osx/RustDesk.app/Contents/MacOS/*
|
||||
codesign -s "Developer ID Application: {0}" --force --options runtime ./target/release/bundle/osx/RustDesk.app
|
||||
'''.format(pa))
|
||||
system2('create-dmg target/release/bundle/osx/RustDesk.app')
|
||||
system2(
|
||||
'create-dmg "RustDesk %s.dmg" "target/release/bundle/osx/RustDesk.app"' % version)
|
||||
os.rename('RustDesk %s.dmg' %
|
||||
version, 'rustdesk-%s.dmg' % version)
|
||||
if pa:
|
||||
@@ -576,15 +607,19 @@ def main():
|
||||
else:
|
||||
print('Not signed')
|
||||
else:
|
||||
# buid deb package
|
||||
# build deb package
|
||||
system2(
|
||||
'mv target/release/bundle/deb/rustdesk*.deb ./rustdesk.deb')
|
||||
system2('dpkg-deb -R rustdesk.deb tmpdeb')
|
||||
system2('mkdir -p tmpdeb/usr/share/rustdesk/files/systemd/')
|
||||
system2('mkdir -p tmpdeb/usr/share/icons/hicolor/256x256/apps/')
|
||||
system2('mkdir -p tmpdeb/usr/share/icons/hicolor/scalable/apps/')
|
||||
system2(
|
||||
'cp res/rustdesk.service tmpdeb/usr/share/rustdesk/files/systemd/')
|
||||
system2(
|
||||
'cp res/128x128@2x.png tmpdeb/usr/share/rustdesk/files/rustdesk.png')
|
||||
'cp res/128x128@2x.png tmpdeb/usr/share/icons/hicolor/256x256/apps/rustdesk.png')
|
||||
system2(
|
||||
'cp res/scalable.svg tmpdeb/usr/share/icons/hicolor/scalable/apps/rustdesk.svg')
|
||||
system2(
|
||||
'cp res/rustdesk.desktop tmpdeb/usr/share/applications/rustdesk.desktop')
|
||||
system2(
|
||||
|
||||
60
build.rs
@@ -1,9 +1,11 @@
|
||||
#[cfg(windows)]
|
||||
fn build_windows() {
|
||||
let file = "src/platform/windows.cc";
|
||||
cc::Build::new().file(file).compile("windows");
|
||||
let file2 = "src/platform/windows_delete_test_cert.cc";
|
||||
cc::Build::new().file(file).file(file2).compile("windows");
|
||||
println!("cargo:rustc-link-lib=WtsApi32");
|
||||
println!("cargo:rerun-if-changed={}", file);
|
||||
println!("cargo:rerun-if-changed={}", file2);
|
||||
}
|
||||
|
||||
#[cfg(target_os = "macos")]
|
||||
@@ -41,7 +43,7 @@ fn build_manifest() {
|
||||
}
|
||||
}
|
||||
|
||||
fn install_oboe() {
|
||||
fn install_android_deps() {
|
||||
let target_os = std::env::var("CARGO_CFG_TARGET_OS").unwrap();
|
||||
if target_os != "android" {
|
||||
return;
|
||||
@@ -49,6 +51,8 @@ fn install_oboe() {
|
||||
let mut target_arch = std::env::var("CARGO_CFG_TARGET_ARCH").unwrap();
|
||||
if target_arch == "x86_64" {
|
||||
target_arch = "x64".to_owned();
|
||||
} else if target_arch == "x86" {
|
||||
target_arch = "x86".to_owned();
|
||||
} else if target_arch == "aarch64" {
|
||||
target_arch = "arm64".to_owned();
|
||||
} else {
|
||||
@@ -66,62 +70,16 @@ fn install_oboe() {
|
||||
path.join("lib").to_str().unwrap()
|
||||
)
|
||||
);
|
||||
println!("cargo:rustc-link-lib=ndk_compat");
|
||||
println!("cargo:rustc-link-lib=oboe");
|
||||
println!("cargo:rustc-link-lib=oboe_wrapper");
|
||||
println!("cargo:rustc-link-lib=c++");
|
||||
println!("cargo:rustc-link-lib=OpenSLES");
|
||||
// I always got some strange link error with oboe, so as workaround, put oboe.cc into oboe src: src/common/AudioStreamBuilder.cpp
|
||||
// also to avoid libc++_shared not found issue, cp ndk's libc++_shared.so to jniLibs, e.g.
|
||||
// ./flutter_hbb/android/app/src/main/jniLibs/arm64-v8a/libc++_shared.so
|
||||
// let include = path.join("include");
|
||||
//cc::Build::new().file("oboe.cc").include(include).compile("oboe_wrapper");
|
||||
}
|
||||
|
||||
#[cfg(feature = "flutter")]
|
||||
fn gen_flutter_rust_bridge() {
|
||||
if !std::env::var("RUN_FFIGEN").is_ok() {
|
||||
return;
|
||||
}
|
||||
use lib_flutter_rust_bridge_codegen::{
|
||||
config_parse, frb_codegen, get_symbols_if_no_duplicates, RawOpts,
|
||||
};
|
||||
let llvm_path = match std::env::var("LLVM_HOME") {
|
||||
Ok(path) => Some(vec![path]),
|
||||
Err(_) => None,
|
||||
};
|
||||
// Tell Cargo that if the given file changes, to rerun this build script.
|
||||
println!("cargo:rerun-if-changed=src/flutter_ffi.rs");
|
||||
// Options for frb_codegen
|
||||
let raw_opts = RawOpts {
|
||||
// Path of input Rust code
|
||||
rust_input: vec!["src/flutter_ffi.rs".to_string()],
|
||||
// Path of output generated Dart code
|
||||
dart_output: vec!["flutter/lib/generated_bridge.dart".to_string()],
|
||||
// Path of output generated C header
|
||||
c_output: Some(vec!["flutter/macos/Runner/bridge_generated.h".to_string()]),
|
||||
/// Path to the installed LLVM
|
||||
llvm_path,
|
||||
// for other options use defaults
|
||||
..Default::default()
|
||||
};
|
||||
// get opts from raw opts
|
||||
let configs = config_parse(raw_opts);
|
||||
// generation of rust api for ffi
|
||||
let all_symbols = get_symbols_if_no_duplicates(&configs).unwrap();
|
||||
for config in configs.iter() {
|
||||
frb_codegen(config, &all_symbols).unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
hbb_common::gen_version();
|
||||
install_oboe();
|
||||
// there is problem with cfg(target_os) in build.rs, so use our workaround
|
||||
// let target_os = std::env::var("CARGO_CFG_TARGET_OS").unwrap();
|
||||
// if target_os == "android" || target_os == "ios" {
|
||||
#[cfg(feature = "flutter")]
|
||||
gen_flutter_rust_bridge();
|
||||
// return;
|
||||
// }
|
||||
install_android_deps();
|
||||
#[cfg(all(windows, feature = "inline"))]
|
||||
build_manifest();
|
||||
#[cfg(windows)]
|
||||
|
||||
101
docs/CODE_OF_CONDUCT-JP.md
Normal file
@@ -0,0 +1,101 @@
|
||||
|
||||
# コントリビューター規約 行動規範
|
||||
|
||||
## 私たちの誓い
|
||||
|
||||
私たちは、メンバー、貢献者、リーダーとして、年齢、体格、目に見える・見えない障害、
|
||||
民族性、性の特徴、性自認と表現、経験のレベル、教育、社会経済的地位、国籍、個人の外見、
|
||||
人種、宗教、性的自認と指向に関係なく、誰もがハラスメントのないコミュニティに参加できるようにすることを誓います。
|
||||
|
||||
私たちは、開かれた、歓迎された、多様で、包容力のある、健全な地域社会に貢献するように行動し、交流することを誓います。
|
||||
|
||||
## 私たちの基準
|
||||
|
||||
地域社会にとって好ましい環境にコントリビュートする行動の例には、以下のようなものがある:
|
||||
|
||||
* 他者への共感と優しさ
|
||||
* 異なる意見、視点、経験を尊重すること
|
||||
* 建設的なフィードバックを与え、潔く受け入れること
|
||||
* 私たちの過ちによって影響を受けた人々に責任を受け入れ、謝罪し、経験から学ぶこと
|
||||
* 私たち個人にとってだけでなく、地域社会全体にとって何が最善であるかに焦点を合わせること
|
||||
|
||||
許されない行為の例:
|
||||
|
||||
* 性的な言葉やイメージの使用、性的な注目や誘いかけ
|
||||
* 荒らし、侮辱的または軽蔑的なコメント、個人的または政治的な攻撃
|
||||
* 公的または私的な嫌がらせ
|
||||
* 明示的な許可なく、他人の住所や電子メールアドレスなどの個人情報を公開すること
|
||||
* 職業上不適切と見なされるその他の行為
|
||||
|
||||
## 執行責任
|
||||
|
||||
コミュニティリーダーは、許容される行動の基準を明確にし、実施する責任があり、
|
||||
不適切、脅迫的、攻撃的、または有害と判断される行動に対しては、適切かつ公正な是正措置をとります
|
||||
|
||||
コミュニティリーダーは、本行動規範に沿わないコメント、コミット、コード、ウィキ編集、
|
||||
課題、その他の貢献を削除、編集、拒否する権利と責任を有し、適切な場合にはモデレーション決定の理由を伝えます。
|
||||
|
||||
## スコープ
|
||||
|
||||
この行動規範は、すべてのコミュニティスペースで適用され、また個人が公的なスペースでコミュニティを公式に代表している場合にも適用されます。
|
||||
当コミュニティを代表する例としては、公式 E メールアドレスの使用、公式ソーシャルメディアアカウントによる投稿、
|
||||
オンラインまたはオフラインのイベントでの任命された代表としての行動などが挙げられます。
|
||||
|
||||
## 施行
|
||||
|
||||
虐待、ハラスメント、その他容認できない行為があった場合は、[info@rustdesk.com](mailto:info@rustdesk.com) の
|
||||
執行担当コミュニティリーダーに報告することができる。
|
||||
すべての苦情は、迅速かつ公正に検討・調査されます。
|
||||
|
||||
すべての地域社会の指導者は、いかなる事件の報告者のプライバシーと安全を尊重する義務がある。
|
||||
|
||||
## 執行ガイドライン
|
||||
|
||||
コミュニティリーダーは、本行動規範に違反すると判断した行為に対する結果を決定する際、
|
||||
以下の「コミュニティへの影響に関するガイドライン」に従います:
|
||||
|
||||
### 1. 修正
|
||||
|
||||
**コミュニティへの影響**: 不適切な言葉の使用、またはプロフェッショナルでない、あるいは地域社会で歓迎されないとみなされるその他の行動。
|
||||
|
||||
**結果**: コミュニティリーダーからの私的な書面による警告。違反の性質と、
|
||||
なぜその行為が不適切であったのかについての説明を明確にする。公的な謝罪が要求される場合もある。
|
||||
|
||||
### 2. 警告
|
||||
|
||||
**コミュニティへの影響**: 単一の出来事または一連の行動による違反。
|
||||
|
||||
**結果**: 行動を続けた場合の結果を伴う警告。一定期間、行動規範の実施者との勝手な交流を含め、
|
||||
関係者と交流しないこと。これには、ソーシャルメディアなどの外部チャンネルだけでなく、
|
||||
コミュニティスペースでの交流を避けることも含まれます。これらの条件に違反した場合、一時的または恒久的に追放される可能性があります。
|
||||
|
||||
### 3. 一時的な禁止
|
||||
|
||||
**コミュニティへの影響**: 継続的な不適切な行動を含む、コミュニティ基準に対する重大な違反。
|
||||
|
||||
**結果**: 一定期間、地域社会とのあらゆる交流や公的なコミュニケーションを一時的に禁止すること。
|
||||
この期間中は、行動規範を執行する人々との未承諾の交流を含め、関係者との公私にわたる交流は許されない。
|
||||
これらの条件に違反した場合、永久禁止となる可能性があります。
|
||||
|
||||
### 4. 永久禁止
|
||||
|
||||
**コミュニティへの影響**: 継続的な不適切な行動、個人に対する嫌がらせ、
|
||||
または個人クラスに対する攻撃や中傷など、地域社会の基準に対する違反のパターンを示すこと。
|
||||
|
||||
**結果**: コミュニティ内でのあらゆる公的交流の永久禁止。
|
||||
|
||||
## 帰属
|
||||
|
||||
この行動規範は、[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0] に掲載されている
|
||||
[コントリビューター規約][ホームページ]、バージョン 2.0 から引用したものです。
|
||||
|
||||
コミュニティインパクトガイドラインは、[Mozilla's code of conduct enforcement ladder][Mozilla CoC] に触発されました。
|
||||
|
||||
この行動規範に関するよくある質問については、[https://www.contributor-covenant.org/faq][FAQ] の FAQ をご覧ください。
|
||||
翻訳は [https://www.contributor-covenant.org/translations][翻訳] にあります。
|
||||
|
||||
[ホームページ]: https://www.contributor-covenant.org
|
||||
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
|
||||
[Mozilla CoC]: https://github.com/mozilla/diversity
|
||||
[FAQ]: https://www.contributor-covenant.org/faq
|
||||
[翻訳]: https://www.contributor-covenant.org/translations
|
||||
89
docs/CODE_OF_CONDUCT-TR.md
Normal file
@@ -0,0 +1,89 @@
|
||||
# Katkıda Bulunanların Davranış Kuralları
|
||||
|
||||
## Taahhüdümüz
|
||||
|
||||
Biz üyeler, katkıda bulunanlar ve liderler olarak, yaş, beden büyüklüğü, görünür veya görünmez engellilik, etnik köken, cinsiyet özellikleri, cinsiyet kimliği ve ifadesi, deneyim seviyesi, eğitim, sosyo-ekonomik durum, milliyet, kişisel görünüm, ırk, din veya cinsel kimlik ve yönelim ayrımı gözetmeksizin herkes için topluluğumuzdaki katılımı taciz içermeyen bir deneyim haline getirmeyi taahhüt ederiz.
|
||||
|
||||
Açık, hoşgörülü, çeşitli, kapsayıcı ve sağlıklı bir topluluğa katkıda bulunacak şekillerde hareket etmeyi ve etkileşimde bulunmayı taahhüt ederiz.
|
||||
|
||||
## Standartlarımız
|
||||
|
||||
Topluluğumuz için olumlu bir ortam yaratmaya katkıda bulunan davranış örnekleri şunlardır:
|
||||
|
||||
* Diğer insanlara empati ve nezaket göstermek
|
||||
* Farklı görüşlere, bakış açılarına ve deneyimlere saygılı olmak
|
||||
* Yapıcı eleştiriyi vermek ve zarifçe kabul etmek
|
||||
* Hatalarımızdan etkilenenlere sorumluluk kabul etmek, özür dilemek ve deneyimden öğrenmek
|
||||
* Sadece bireyler olarak değil, aynı zamanda genel topluluk için en iyisi üzerine odaklanmak
|
||||
|
||||
Kabul edilemez davranış örnekleri şunları içerir:
|
||||
|
||||
* Cinselleştirilmiş dil veya imgelerin kullanımı ve cinsel ilgi veya herhangi bir türdeki yaklaşımlar
|
||||
* Trollük, aşağılayıcı veya hakaret içeren yorumlar ve kişisel veya siyasi saldırılar
|
||||
* Kamuoyu veya özel taciz
|
||||
* Başkalarının fiziksel veya e-posta adresi gibi özel bilgilerini, açık izinleri olmadan yayınlamak
|
||||
* Profesyonel bir ortamda makul bir şekilde uygunsuz kabul edilebilecek diğer davranışlar
|
||||
|
||||
## Uygulama Sorumlulukları
|
||||
|
||||
Topluluk liderleri, kabul edilebilir davranış standartlarımızı açıklığa kavuşturmak ve uygulamakla sorumludur ve uygunsuz, tehditkar, saldırgan veya zarar verici herhangi bir davranışa yanıt olarak uygun ve adil düzeltici önlemler alacaklardır.
|
||||
|
||||
Topluluk liderleri, bu Davranış Kurallarına uyumlu olmayan yorumları, taahhütlerini veya kodu, wiki düzenlemelerini, sorunları ve diğer katkıları kaldırma, düzenleme veya reddetme hakkına sahiptir. Denetim kararlarının nedenlerini uygun olduğunda ileteceklerdir.
|
||||
|
||||
## Kapsam
|
||||
|
||||
Bu Davranış Kuralları, tüm topluluk alanlarında geçerlidir ve aynı zamanda birey resmi olarak topluluğu halka açık alanlarda temsil ettiğinde de geçerlidir. Topluluğumuzu temsil etme örnekleri, resmi bir e-posta adresi kullanmak, resmi bir sosyal medya hesabı üzerinden gönderi yapmak veya çevrimiçi veya çevrimdışı bir etkinlikte atanmış bir temsilci olarak hareket etmeyi içerir.
|
||||
|
||||
## Uygulama
|
||||
|
||||
Taciz edici, rahatsız edici veya başka türlü kabul edilemez davranış örnekleri, [info@rustdesk.com](mailto:info@rustdesk.com) adresindeki uygulama sorumlularına bildirilebilir. Tüm şikayetler hızlı ve adil bir şekilde incelenecek ve araştırılacaktır.
|
||||
|
||||
Tüm topluluk liderleri, olayın raporlayıcısının gizliliğine ve güvenliğine saygı gösterme yükümlülüğündedir.
|
||||
|
||||
## Uygulama Kılavuzları
|
||||
|
||||
Topluluk liderleri, bu Davranış Kurallarını ihlal olarak değerlendirdikleri herhangi bir eylem için bu Topluluk Etkisi Kılavuzlarını izleyeceklerdir:
|
||||
|
||||
### 1. Düzeltme
|
||||
|
||||
**Topluluk Etkisi**: Topluluk içinde profesyonel veya hoşgörülü olmayan uygun olmayan dil veya diğer davranışların kullanımı.
|
||||
|
||||
**Sonuç**: Topluluk liderlerinden özel ve yazılı bir uyarı almak, ihlalin niteliği ve davranışın nedeninin açıklığa kavuşturulması. Bir kamu özrü istenebilir.
|
||||
|
||||
### 2. Uyarı
|
||||
|
||||
**Topluluk Etkisi**: Tek bir olay veya dizi aracılığıyla bir ihlal.
|
||||
|
||||
**Sonuç**: Devam eden davranış için sonuçları olan bir uyarı. Topluluk liderleri de dahil olmak üzere ihlalle ilgili kişilerle etkileşim, belirli bir süre boyunca önerilmez. Bu, topluluk alanlarında ve sosyal medya gibi harici kanallarda etkileşimleri içerir. Bu koşulları ihlal etmek geçici veya kalıcı bir yasağa yol açabilir.
|
||||
|
||||
### 3. Geçici Yasak
|
||||
|
||||
**Topluluk Etkisi**: Sürekli uygunsuz davranış da dahil olmak üzere topluluk standartlarının ciddi bir ihlali.
|
||||
|
||||
**Sonuç**: Belirli bir süre için toplulukla herhangi bir türdeki etkileşim veya halka açık iletişimden geçici bir yasak. Bu dönem boyunca, toplul
|
||||
|
||||
ukla veya uygulama kurallarını uygulayanlarla her türlü kamuoyu veya özel etkileşim izin verilmez. Bu koşulları ihlal etmek geçici veya kalıcı bir yasağa yol açabilir.
|
||||
|
||||
### 4. Kalıcı Yasak
|
||||
|
||||
**Topluluk Etkisi**: Topluluk standartlarının ihlalinde sürekli bir desen sergilemek, bireye sürekli olarak uygun olmayan davranışlarda bulunmak, bir bireye tacizde bulunmak veya birey sınıflarına karşı saldırganlık veya aşağılama yapmak.
|
||||
|
||||
**Sonuç**: Topluluk içinde her türlü halka açık etkileşimden kalıcı bir yasak.
|
||||
|
||||
## Atıf
|
||||
|
||||
Bu Davranış Kuralları, [Contributor Covenant][anasayfa], 2.0 sürümünden uyarlanmıştır ve
|
||||
[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0] adresinde bulunmaktadır.
|
||||
|
||||
Topluluk Etkisi Kılavuzları,
|
||||
[Mozilla'nın davranış kuralları uygulama merdiveni][Mozilla DK] tarafından ilham alınarak oluşturulmuştur.
|
||||
|
||||
Bu davranış kuralları hakkında yaygın soruların cevapları için, SSS'ye göz atın:
|
||||
[https://www.contributor-covenant.org/faq][SSS]. Çeviriler,
|
||||
[https://www.contributor-covenant.org/translations][çeviriler] adresinde bulunabilir.
|
||||
|
||||
[anasayfa]: https://www.contributor-covenant.org
|
||||
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
|
||||
[Mozilla DK]: https://github.com/mozilla/diversity
|
||||
[SSS]: https://www.contributor-covenant.org/faq
|
||||
[çeviriler]: https://www.contributor-covenant.org/translations
|
||||
31
docs/CONTRIBUTING-ID.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# Berkontribusi dalam pengembangan RustDesk
|
||||
|
||||
RustDesk mengajak semua orang untuk ikut berkontribusi. Berikut ini adalah panduan jika kamu sedang mempertimbangkan untuk memberikan bantuan kepada kami:
|
||||
|
||||
## Kontirbusi
|
||||
|
||||
Untuk melakukan kontribusi pada RustDesk atau dependensinya, sebaiknya dilakukan dalam bentuk pull request di GitHub. Setiap permintaan pull request akan ditinjau oleh kontributor utama atau seseorang yang memiliki wewenang untuk menggabungkan perubahan kode, baik yang sudah dimasukkan ke dalam struktur utama ataupun memberikan umpan balik untuk perubahan yang akan diperlukan. Setiap kontribusi harus sesuai dengan format ini, juga termasuk yang berasal dari kontributor utama.
|
||||
|
||||
Apabila kamu ingin mengatasi sebuah masalah yang sudah ada di daftar issue, harap klaim terlebih dahulu dengan memberikan komentar pada GitHub issue yang ingin kamu kerjakan. Hal ini dilakukan untuk mencegah terjadinya duplikasi dari kontributor pada daftar issue yang sama.
|
||||
|
||||
## Pemeriksaan Pull Request
|
||||
|
||||
- Branch yang menjadi acuan adalah branch master dari repositori utama dan, jika diperlukan, lakukan rebase ke branch master yang terbaru sebelum kamu mengirim pull request. Apabila terdapat masalah kita melakukan proses merge ke branch master kemungkinan kamu akan diminta untuk melakukan rebase pada perubahan yang sudah dibuat.
|
||||
|
||||
- Sebaiknya buatlah commit seminimal mungkin, sambil memastikan bahwa setiap commit yang dibuat sudah benar (contohnya, setiap commit harus bisa di kompilasi dan berhasil melewati tahap test).
|
||||
|
||||
- Setiap commit harus disertai dengan tanda tangan Sertifikat Asal Pengembang (Developer Certificate of Origin) (<http://developercertificate.org>), yang mengindikasikan bahwa kamu (and your employer if applicable) bersedia untuk patuh terhadap persyaratan dari [lisensi projek](../LICENCE). Di git bash, ini adalah opsi parameter `-s` pada `git commit`
|
||||
|
||||
- Jika perubahan yang kamu buat tidak mendapat tinjauan atau kamu membutuhkan orang tertentu untuk meninjaunya, kamu bisa @-reply seorang reviewer meminta peninjauan dalam permintaan pull request atau komentar, atau kamu bisa meminta tinjauan melalui [email](mailto:info@rustdesk.com).
|
||||
|
||||
- Sertakan test yang relevan terhadap bug atau fitur baru yang sudah dikerjakan.
|
||||
|
||||
Untuk instruksi Git yang lebih lanjut, cek disini [GitHub workflow 101](https://github.com/servo/servo/wiki/GitHub-workflow).
|
||||
|
||||
## Tindakan
|
||||
|
||||
<https://github.com/rustdesk/rustdesk/blob/master/docs/CODE_OF_CONDUCT-ID.md>
|
||||
|
||||
## Komunikasi
|
||||
|
||||
Kontributor RustDesk sering berkunjung ke [Discord](https://discord.gg/nDceKgxnkV).
|
||||
37
docs/CONTRIBUTING-IT.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# Contribuzione a RustDesk
|
||||
|
||||
RustDesk accoglie con favore il contributo di tutti.
|
||||
Ecco le linee guida se stai pensando di aiutarci.
|
||||
|
||||
## Contribuzione
|
||||
|
||||
I contributi a RustDesk o alle sue dipendenze dovrebbero essere forniti sotto forma di richieste pull GitHub.
|
||||
Ogni richiesta pull verr<72> esaminata da un collaboratore principale (qualcuno con il permesso di applicare) ed <20> abilitato all'uso dell'albero principale o dare un feedback per le modifiche che sarebbero necessarie.
|
||||
Tutti i contributi dovrebbero seguire questo formato, anche quelli dei contributori principali.
|
||||
|
||||
Se desideri lavorare su un problema, rivendicalo prima commentando
|
||||
il problema di GitHub su cui vuoi lavorare.
|
||||
Questo per evitare duplicati sforzi dei contributori sullo stesso problema.
|
||||
|
||||
## Elenco di controllo delle richieste pull
|
||||
|
||||
- Branch del master branch e, se necessario, rebase al master attuale branch prima di inviare la richiesta pull.
|
||||
Se l'unione non <20> in mod pulito con il master ti potrebbe essere chiesto di effettuare il rebase delle modifiche.
|
||||
|
||||
- Le modifiche dovrebbero essere le pi<70> piccole possibile, assicurando al tempo stesso che ogni modifica sia corretta in modo indipendente (ovvero, ogni modifica dovrebbe essere compilabile e superare i test).
|
||||
|
||||
- Le modifiche devono essere accompagnati da un certificato di origine per sviluppatori firmato (http://developercertificate.org), che indica che tu (e il tuo datore di lavoro se applicabile) accetti di essere vincolato dai termini della [licenza progetto](../LICENCE). In git, questa <20> l'opzione `-s` di `git commit`
|
||||
|
||||
- Se la tua patch non viene esaminata o hai bisogno che una persona specifica la esamini, puoi @-rispondere ad un revisore chiedendo una revisione nella richiesta pull o un commento, oppure puoi chiedere una revisione tramite [email](mailto:info@rustdesk.com).
|
||||
|
||||
- Aggiungi test relativi al bug corretto o alla nuova funzionalit<69>.
|
||||
|
||||
Per istruzioni specifiche su git, vedi [Workflow GitHub - 101](https://github.com/servo/servo/wiki/GitHub-workflow).
|
||||
|
||||
## Condotta
|
||||
|
||||
https://github.com/rustdesk/rustdesk/blob/master/docs/CODE_OF_CONDUCT-IT.md
|
||||
|
||||
## Comunicazioni
|
||||
|
||||
I contributori di RustDesk frequentano [Discord](https://discord.gg/nDceKgxnkV).
|
||||
41
docs/CONTRIBUTING-JP.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# RustDesk へのコントリビュート
|
||||
|
||||
RustDesk は皆さんからのコントリビュートを歓迎します。ご協力いただける方のガイドラインは
|
||||
以下の通りです:
|
||||
|
||||
## コントリビューション
|
||||
|
||||
RustDesk またはその依存関係へのコントリビュートは、GitHub のプルリクエストの形で行ってください。
|
||||
それぞれのプルリクエストは、コアコントリビューター(パッチの適用を許可されている人)によってレビューされ、
|
||||
メインツリーに適用されるか、必要な変更についてのフィードバックが与えられます。
|
||||
コアコントリビューターからのものであっても、すべてのコントリビューターはこのフォーマットに従うべきです。
|
||||
|
||||
ある issue に取り組みたい場合は、GitHub の issue にコメントすることで、まずその対応を主張してください。
|
||||
これは、同じ issue に対するコントリビューターの重複作業を防ぐためです。
|
||||
|
||||
## プルリクエストのチェックリスト
|
||||
|
||||
- master ブランチからブランチし、必要であればプルリクエストを提出する前に現在の master ブランチにリベースしてください。
|
||||
master と正しくマージできない場合、変更をリベースするよう求められる可能性があります。
|
||||
|
||||
- コミットは、各コミットが独立して正しい(すなわち、各コミットがコンパイルされ、テストに合格する)ことを保証しながら、
|
||||
可能な限り小さくすべきです。
|
||||
|
||||
- コミットには、Developer Certificate of Origin (http://developercertificate.org) の sign-off を添えてください。
|
||||
これは、あなた(および該当する場合はあなたの雇用主)が [プロジェクトのライセンス](../LICENCE) の条項に拘束されることに
|
||||
同意していることを示すものです。git では、これは `git commit` の `-s` オプションを使います。
|
||||
|
||||
- もしあなたのパッチがレビューされなかったり、特定の人にレビューしてもらう必要がある場合、
|
||||
プルリクエストやコメントでレビューを依頼するレビュアーに@返信したり、[email](mailto:info@rustdesk.com) でレビューを依頼することができます。
|
||||
|
||||
- 修正したバグや新機能に関連するテストを追加する。
|
||||
|
||||
具体的なgitの手順については、[GitHub workflow 101](https://github.com/servo/servo/wiki/GitHub-workflow)を参照してください。
|
||||
|
||||
## 行動規範
|
||||
|
||||
https://github.com/rustdesk/rustdesk/blob/master/docs/CODE_OF_CONDUCT.md
|
||||
|
||||
## コミュニケーション
|
||||
|
||||
RustDesk のコントリビューターは、[Discord](https://discord.gg/nDceKgxnkV) を良く使っています。
|
||||
31
docs/CONTRIBUTING-TR.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# RustDesk'a Katkı Sağlamak
|
||||
|
||||
RustDesk, herkesten katkıyı memnuniyetle karşılar. Eğer bize yardımcı olmayı düşünüyorsanız, işte rehberlik eden kurallar:
|
||||
|
||||
## Katkılar
|
||||
|
||||
RustDesk veya bağımlılıklarına yapılan katkılar, GitHub pull istekleri şeklinde yapılmalıdır. Her bir pull isteği, çekirdek katkıcı tarafından gözden geçirilecek (yamaları kabul etme izni olan biri) ve ana ağaca kabul edilecek veya gerekli değişiklikler için geri bildirim verilecektir. Tüm katkılar bu formata uymalıdır, çekirdek katkıcılardan gelenler bile.
|
||||
|
||||
Eğer bir konu üzerinde çalışmak isterseniz, önce üzerinde çalışmak istediğinizi belirten bir yorum yaparak konuyu talep ediniz. Bu, katkı sağlayanların aynı konuda çift çalışmasını engellemek içindir.
|
||||
|
||||
## Pull İstek Kontrol Listesi
|
||||
|
||||
- Master dalından dallandırın ve gerekiyorsa pull isteğinizi göndermeden önce mevcut master dalına rebase yapın. Eğer master ile temiz bir şekilde birleşmezse, değişikliklerinizi rebase yapmanız istenebilir.
|
||||
|
||||
- Her bir commit mümkün olduğunca küçük olmalıdır, ancak her commit'in bağımsız olarak doğru olduğundan emin olun (örneğin, her commit derlenebilir ve testleri geçmelidir).
|
||||
|
||||
- Commit'ler, bir Geliştirici Sertifikası ile desteklenmelidir (http://developercertificate.org). Bu, [proje lisansının](../LICENCE) koşullarına uymayı kabul ettiğinizi gösteren bir onaydır. Git'te bunu `git commit` seçeneği olarak `-s` seçeneği ile yapabilirsiniz.
|
||||
|
||||
- Yamalarınız gözden geçirilmiyorsa veya belirli bir kişinin gözden geçirmesine ihtiyacınız varsa, çekme isteği veya yorum içinde bir gözden geçirmeyi istemek için bir inceleyiciyi @etiketleyebilir veya inceleme için [e-posta](mailto:info@rustdesk.com) ile talep edebilirsiniz.
|
||||
|
||||
- Düzelttiğiniz hatanın veya eklediğiniz yeni özelliğin ilgili testlerini ekleyin.
|
||||
|
||||
Daha spesifik git talimatları için, [GitHub iş akışı 101](https://github.com/servo/servo/wiki/GitHub-workflow)'e bakınız.
|
||||
|
||||
## Davranış
|
||||
|
||||
https://github.com/rustdesk/rustdesk/blob/master/docs/CODE_OF_CONDUCT-TR.md
|
||||
|
||||
## İletişim
|
||||
|
||||
RustDesk katkı sağlayıcıları, [Discord](https://discord.gg/nDceKgxnkV) kanalını sık sık ziyaret ederler.
|
||||
14
docs/DEVCONTAINER-IT.md
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
Dopo l'avvio di devcontainer nel contenitore docker, viene creato un binario linux in modalità debug.
|
||||
|
||||
Attualmente devcontainer consente creazione build Linux e Android sia in modalità debug che in modalità rilascio.
|
||||
|
||||
Di seguito è riportata la tabella dei comandi da eseguire dalla root del progetto per la creazione di build specifiche.
|
||||
|
||||
Comando|Tipo build|Modo
|
||||
-|-|-|
|
||||
`.devcontainer/build.sh --debug linux`|Linux|debug
|
||||
`.devcontainer/build.sh --release linux`|Linux|release
|
||||
`.devcontainer/build.sh --debug android`|android-arm64|debug
|
||||
`.devcontainer/build.sh --release android`|android-arm64|release
|
||||
|
||||
14
docs/DEVCONTAINER-JP.md
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
docker コンテナで devcontainer を起動すると、デバッグモードの linux バイナリが作成されます。
|
||||
|
||||
現在 devcontainer では、Linux と android のビルドをデバッグモードとリリースモードの両方で提供しています。
|
||||
|
||||
以下は、特定のビルドを作成するためにプロジェクトのルートから実行するコマンドの表になります。
|
||||
|
||||
コマンド|ビルド タイプ|モード
|
||||
-|-|-|
|
||||
`.devcontainer/build.sh --debug linux`|Linux|debug
|
||||
`.devcontainer/build.sh --release linux`|Linux|release
|
||||
`.devcontainer/build.sh --debug android`|android-arm64|debug
|
||||
`.devcontainer/build.sh --release android`|android-arm64|release
|
||||
|
||||
12
docs/DEVCONTAINER-TR.md
Normal file
@@ -0,0 +1,12 @@
|
||||
Docker konteynerinde devcontainer'ın başlatılmasından sonra, hata ayıklama modunda bir Linux ikili dosyası oluşturulur.
|
||||
|
||||
Şu anda devcontainer, hata ayıklama ve sürüm modunda hem Linux hem de Android derlemeleri sunmaktadır.
|
||||
|
||||
Aşağıda, belirli derlemeler oluşturmak için projenin kökünden çalıştırılması gereken komutlar yer almaktadır.
|
||||
|
||||
Komut | Derleme Türü | Mod
|
||||
-|-|-
|
||||
`.devcontainer/build.sh --debug linux` | Linux | hata ayıklama
|
||||
`.devcontainer/build.sh --release linux` | Linux | sürüm
|
||||
`.devcontainer/build.sh --debug android` | Android-arm64 | hata ayıklama
|
||||
`.devcontainer/build.sh --release android` | Android-arm64 | sürüm
|
||||
@@ -27,15 +27,6 @@
|
||||
|
||||
[**BINARY تنزيل**](https://github.com/rustdesk/rustdesk/releases)
|
||||
|
||||
## خوادم مفتوحة ومجانية
|
||||
|
||||
فيما يلي الخوادم التي تستخدمها مجانًا، وقد تتغير طوال الوقت. إذا لم تكن قريبًا من أحد هؤلاء، فقد تكون شبكتك بطيئة.
|
||||
| الموقع | المورد | المواصفات |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Seoul | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Germany | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Germany | Codext | 4 vCPU / 8GB RAM |
|
||||
|
||||
## التبعيات
|
||||
|
||||
لواجهة المستخدم الرسومية [sciter](https://sciter.com/) نسخة سطح المكتب تستخدم
|
||||
@@ -119,10 +110,6 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### X11 (Xorg) إلى Wayland تغيير
|
||||
|
||||
افتراضية GNOME session ك Xorg إتبع [هذه](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) الخطوات لإعداد Wayland لا تدعم RustDesk
|
||||
|
||||
## Docker طريقة البناء باستخدام
|
||||
|
||||
ابدأ باستنساخ المستودع وبناء الكونتاينر:
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
<a href="#file-structure">Struktura</a> •
|
||||
<a href="#snapshot">Ukázky</a><br>
|
||||
[<a href="../README.md">English</a>] | [<a href="README-UA.md">Українська</a>] | [<a href="README-ZH.md">中文</a>] | [<a href="README-HU.md">Magyar</a>] | [<a href="README-ES.md">Español</a>] | [<a href="README-FA.md">فارسی</a>] | [<a href="README-FR.md">Français</a>] | [<a href="README-DE.md">Deutsch</a>] | [<a href="README-PL.md">Polski</a>] | [<a href="README-ID.md">Indonesian</a>] | [<a href="README-FI.md">Suomi</a>] | [<a href="README-ML.md">മലയാളം</a>] | [<a href="README-JP.md">日本語</a>] | [<a href="README-NL.md">Nederlands</a>] | [<a href="README-IT.md">Italiano</a>] | [<a href="README-RU.md">Русский</a>] | [<a href="README-PTBR.md">Português (Brasil)</a>] | [<a href="README-EO.md">Esperanto</a>] | [<a href="README-KR.md">한국어</a>] | [<a href="README-AR.md">العربي</a>] | [<a href="README-VN.md">Tiếng Việt</a>] | [<a href="README-GR.md">Ελληνικά</a>]<br>
|
||||
<b>Potřebujeme Vaši pomoc s překláním textů tohoto ČTIMNE, <a href="https://github.com/rustdesk/rustdesk/tree/master/src/lang">uživatelského rozhraní aplikace RustDesk</a> a <a href="https://github.com/rustdesk/doc.rustdesk.com">dokumentace k ní</a> do vašeho jazyka</b>
|
||||
<b>Potřebujeme Vaši pomoc s překladem tohoto README, <a href="https://github.com/rustdesk/rustdesk/tree/master/src/lang">uživatelského rozhraní aplikace RustDesk</a> a <a href="https://github.com/rustdesk/doc.rustdesk.com">dokumentace k ní</a> do vašeho jazyka</b>
|
||||
</p>
|
||||
|
||||
Dopisujte si s námi: [Discord](https://discord.gg/nDceKgxnkV) | [Twitter](https://twitter.com/rustdesk) | [Reddit](https://www.reddit.com/r/rustdesk)
|
||||
Popovídejte si s námi: [Discord](https://discord.gg/nDceKgxnkV) | [Twitter](https://twitter.com/rustdesk) | [Reddit](https://www.reddit.com/r/rustdesk)
|
||||
|
||||
|
||||
[](https://ko-fi.com/I2I04VU09)
|
||||
@@ -22,15 +22,6 @@ Projekt RustDesk vítá přiložení ruky k dílu od každého. Jak začít se d
|
||||
|
||||
[**STAHOVÁNÍ ZKOMPILOVANÝCH APLIKACÍ**](https://github.com/rustdesk/rustdesk/releases)
|
||||
|
||||
## Veřejné, zdarma službu nabízející servery
|
||||
|
||||
Níže jsou uvedeny servery zdarma k vašemu použití (údaje se mohou v čase měnit). Pokud se nenacházíte v oblastech světa poblíž nich, spojení může být pomalé.
|
||||
| umístění | dodavatel | parametry |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Seoul | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Germany | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Germany | Codext | 4 vCPU / 8GB RAM |
|
||||
|
||||
## Softwarové součásti, na kterých závisí
|
||||
|
||||
Varianta pro počítač používá pro grafické uživatelské rozhraní [sciter](https://sciter.com/) – stáhněte si potřebnou knihovnu.
|
||||
@@ -45,7 +36,7 @@ Varianta pro mobilní platformy používá aplikační rámec (framework) Flutte
|
||||
|
||||
- Připravte si vývojové prostředí pro jazyky Rust a C++
|
||||
|
||||
- Nainstalujte [vcpkg](https://github.com/microsoft/vcpkg), a nastavte správně proměnnou prostsředí `VCPKG_ROOT`
|
||||
- Nainstalujte [vcpkg](https://github.com/microsoft/vcpkg), a správně nastavte proměnnou prostředí `VCPKG_ROOT`
|
||||
|
||||
- Windows: vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static aom:x64-windows-static
|
||||
- Linux/MacOS: vcpkg install libvpx libyuv opus aom
|
||||
@@ -112,10 +103,6 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### Změna z Wayland na X11 (Xorg)
|
||||
|
||||
RustDesk (zatím) nepodporuje zobrazovací server Wayland. Jak nastavit Xorg jako výchozí pro relace v prostředí GNOME naleznete [zde](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/).
|
||||
|
||||
## Jak sestavit prostřednictvím Docker kontejnerizace
|
||||
|
||||
Začněte tím, že si naklonujete tento repozitář a sestavíte docker kontejner:
|
||||
@@ -132,7 +119,7 @@ Poté pokaždé, když bude třeba aplikaci sestavit, spusťte následující p
|
||||
docker run --rm -it -v $PWD:/home/user/rustdesk -v rustdesk-git-cache:/home/user/.cargo/git -v rustdesk-registry-cache:/home/user/.cargo/registry -e PUID="$(id -u)" -e PGID="$(id -g)" rustdesk-builder
|
||||
```
|
||||
|
||||
Všimněte si, že prvotní sestavení může trvat déle (než se do mezipaměti uloží veškeré softwarové součásti, které jsou potřeba) – následná opakování už budou rychlejší. Dále, pokud potřebujete příkazu pro sestavení zadat nějaké argumenty, je možné je zapsat na konec příkazu na pozici `<OPTIONAL-ARGS>`. Například, pokud byste chtěli sestavit optimalizovaně pro vydání, spustili byste výše uvedený příkaz následovaný `--release`. Výsledný spustitelný soubor se objeví v cílové složce na vašem systému a bude ho možné spustit pomocí:
|
||||
Všimněte si, že prvotní sestavení může trvat déle (než se do mezipaměti uloží veškeré softwarové součásti, které jsou potřeba) – následná opakování už budou rychlejší. Pokud navíc potřebujete zadat různé argumenty příkazu pro sestavení, můžete tak učinit na konci příkazu v pozici `<OPTIONAL-ARGS>`. Například, pokud byste chtěli sestavit optimalizovanou verzi pro vydání, spustili byste výše uvedený příkaz následovaný `--release`. Výsledný spustitelný soubor se objeví v cílové složce na vašem systému a bude ho možné spustit pomocí:
|
||||
|
||||
```sh
|
||||
target/debug/rustdesk
|
||||
@@ -144,7 +131,7 @@ Nebo, pokud spouštíte variantu pro vydání:
|
||||
target/release/rustdesk
|
||||
```
|
||||
|
||||
Zajistětě, abyste tyto příkazy spouštěli z kořene repozitáře s RustDesk, jinak aplikace nemusí být schopná nalézt potřebné prostředky (resources). Také si všimněte, že ostatní dílčí príkazy nástroje cargo, jako třeba `install` nebo `run` zatím nejsou prostřednictvím této metody podporovány, protože by vedly k instalaci či spuštění program uvnitř kontejneru namísto přímo v systému.
|
||||
Ujistěte se, že tyto příkazy spouštíte z kořenového adresáře RustDesk, jinak aplikace nemusí být schopná nalézt potřebné prostředky (resources). Také si všimněte, že ostatní dílčí príkazy nástroje cargo, jako třeba `install` nebo `run` zatím nejsou prostřednictvím této metody podporovány, protože by vedly k instalaci či spuštění program uvnitř kontejneru namísto přímo v systému.
|
||||
|
||||
## Struktura souborů
|
||||
|
||||
|
||||
@@ -19,16 +19,6 @@ RustDesk hilser bidrag fra alle velkommen. Se [`docs/CONTRIBUTING.md`](docs/CONT
|
||||
|
||||
[**PROGRAM DOWNLOAD**](https://github.com/rustdesk/rustdesk/releases)
|
||||
|
||||
## Gratis offentlige servere
|
||||
|
||||
Nedenfor er de servere, du bruger gratis, det kan ændre sig med tiden. Hvis du ikke er tæt på en af disse, kan dit netværk være langsomt.
|
||||
|
||||
| Beliggenhed | Udbyder | Specifikation |
|
||||
| ---------- | ------------- | ------------------ |
|
||||
| Seoul | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Germany | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Germany | Codext | 4 vCPU / 8GB RAM |
|
||||
|
||||
## Afhængigheder
|
||||
|
||||
Desktopversioner bruger [sciter](https://sciter.com/) eller Flutter til GUI, denne vejledning er kun for Sciter.
|
||||
@@ -110,33 +100,6 @@ mv libsciter-gtk.so target/debug
|
||||
cargo run
|
||||
```
|
||||
|
||||
### Skift Wayland til X11 (Xorg)
|
||||
|
||||
RustDesk understøtter ikke Wayland. Tjek [dette](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) for at konfigurere Xorg som standard GNOME-session.
|
||||
|
||||
## Wayland-support
|
||||
|
||||
Wayland ser ikke ud til at levere nogen API til at sende tastetryk til andre vinduer. Derfor bruger rustdesk et API fra et lavere niveau, nemlig `/dev/uinput`-enheden (Linux-kerneniveau).
|
||||
|
||||
Når wayland er den kontrollerede side, skal du starte på følgende måde:
|
||||
```bash
|
||||
# Start uinput service
|
||||
$ sudo rustdesk --service
|
||||
$ rustdesk
|
||||
```
|
||||
**Bemærk**: Wayland-skærmoptagelse bruger forskellige grænseflader. RustDesk understøtter i øjeblikket kun org.freedesktop.portal.ScreenCast.
|
||||
```bash
|
||||
$ dbus-send --session --print-reply \
|
||||
--dest=org.freedesktop.portal.Desktop \
|
||||
/org/freedesktop/portal/desktop \
|
||||
org.freedesktop.DBus.Properties.Get \
|
||||
string:org.freedesktop.portal.ScreenCast string:version
|
||||
# Not support
|
||||
Error org.freedesktop.DBus.Error.InvalidArgs: No such interface “org.freedesktop.portal.ScreenCast”
|
||||
# Support
|
||||
method return time=1662544486.931020 sender=:1.54 -> destination=:1.139 serial=257 reply_serial=2
|
||||
variant uint32 4
|
||||
```
|
||||
## Sådan bygger du med Docker
|
||||
|
||||
```sh
|
||||
|
||||
@@ -29,24 +29,6 @@ RustDesk heißt jegliche Mitarbeit willkommen. Schauen Sie sich [CONTRIBUTING-DE
|
||||
alt="Get it on F-Droid"
|
||||
height="80">](https://f-droid.org/en/packages/com.carriez.flutter_hbb)
|
||||
|
||||
## Freie öffentliche Server
|
||||
|
||||
Nachfolgend sind die Server gelistet, die Sie kostenlos nutzen können. Es kann sein, dass sich diese Liste immer mal wieder ändert. Falls Sie nicht in der Nähe einer dieser Server sind, kann es sein, dass Ihre Verbindung langsam sein wird.
|
||||
| Standort | Anbieter | Spezifikation |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Südkorea (Seoul) | [AWS lightsail](https://aws.amazon.com/de/) | 1 vCPU / 0,5 GB RAM |
|
||||
| Deutschland | [Hetzner](https://www.hetzner.com/de/) | 2 vCPU / 4 GB RAM |
|
||||
| Deutschland | [Codext](https://codext.de/) | 4 vCPU / 8 GB RAM |
|
||||
| Ukraine (Kiew) | [dc.volia](https://dc.volia.com) | 2 vCPU / 4 GB RAM |
|
||||
|
||||
## Dev-Container
|
||||
|
||||
[](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/rustdesk/rustdesk)
|
||||
|
||||
Wenn Sie VS Code und Docker bereits installiert haben, können Sie auf das Abzeichen oben klicken, um loszulegen. Wenn Sie darauf klicken, wird VS Code automatisch die Dev-Container-Erweiterung installieren, den Quellcode in ein Container-Volume klonen und einen Dev-Container für die Verwendung aufsetzen.
|
||||
|
||||
Weitere Informationen finden Sie in [DEVCONTAINER-DE.md](DEVCONTAINER-DE.md).
|
||||
|
||||
## Abhängigkeiten
|
||||
|
||||
Desktop-Versionen verwenden [Sciter](https://sciter.com/) oder Flutter für die GUI, dieses Tutorial ist nur für Sciter.
|
||||
@@ -135,34 +117,6 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### Wayland zu X11 (Xorg) ändern
|
||||
|
||||
RustDesk unterstützt Wayland nicht. Siehe [hier](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/), um Xorg als Standard-GNOME-Sitzung zu nutzen.
|
||||
|
||||
## Wayland-Unterstützung
|
||||
|
||||
Wayland scheint keine API für das Senden von Tastatureingaben an andere Fenster zu bieten. Daher verwendet RustDesk eine API von einer niedrigeren Ebene, nämlich dem Gerät `/dev/uinput` (Linux-Kernelebene).
|
||||
|
||||
Wenn Wayland die kontrollierte Seite ist, müssen Sie wie folgt vorgehen:
|
||||
```bash
|
||||
# Dienst uinput starten
|
||||
$ sudo rustdesk --service
|
||||
$ rustdesk
|
||||
```
|
||||
**Hinweis**: Die Wayland-Bildschirmaufnahme verwendet verschiedene Schnittstellen. RustDesk unterstützt derzeit nur org.freedesktop.portal.ScreenCast.
|
||||
```bash
|
||||
$ dbus-send --session --print-reply \
|
||||
--dest=org.freedesktop.portal.Desktop \
|
||||
/org/freedesktop/portal/desktop \
|
||||
org.freedesktop.DBus.Properties.Get \
|
||||
string:org.freedesktop.portal.ScreenCast string:version
|
||||
# Keine Unterstützung
|
||||
Error org.freedesktop.DBus.Error.InvalidArgs: No such interface “org.freedesktop.portal.ScreenCast”
|
||||
# Unterstützung
|
||||
method return time=1662544486.931020 sender=:1.54 -> destination=:1.139 serial=257 reply_serial=2
|
||||
variant uint32 4
|
||||
```
|
||||
|
||||
## Auf Docker kompilieren
|
||||
|
||||
Beginnen Sie damit, das Repository zu klonen und den Docker-Container zu bauen:
|
||||
|
||||
@@ -19,16 +19,6 @@ RustDesk bonvenigas kontribuon de ĉiuj. Vidu [`docs/CONTRIBUTING.md`](CONTRIBUT
|
||||
|
||||
[**BINARA ELŜUTO**](https://github.com/rustdesk/rustdesk/releases)
|
||||
|
||||
## Senpagaj publikaj serviloj
|
||||
|
||||
Malsupre estas la serviloj, kiuj vi uzas senpage, ĝi povas ŝanĝi laŭlonge de la tempo. Se vi ne estas proksima de unu de tiuj, via reto povas esti malrapida.
|
||||
| Situo | Vendanto | Detaloj |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Seoul | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Germany | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Germany | Codext | 4 vCPU / 8GB RAM |
|
||||
| Ukraine (Kyiv) | [dc.volia](https://dc.volia.com) | 2 vCPU / 4GB RAM |
|
||||
|
||||
## Dependantaĵoj
|
||||
|
||||
La labortabla versio uzas [sciter](https://sciter.com/) por la interfaco, bonvolu elŝuti la bibliotekon dinamikan sciter.
|
||||
@@ -106,10 +96,6 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### Ŝanĝi Wayland por X11 (Xorg)
|
||||
|
||||
RustDesk ne subtenas Wayland. Kontrolu [tion](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) por agordi Xorg kiel defaŭlta sesio GNOME.
|
||||
|
||||
## Kiel kompili kun Docker
|
||||
|
||||
Komencu klonante la deponejon kaj kompilu la konteneron Docker:
|
||||
|
||||
@@ -25,17 +25,6 @@ RustDesk agradece la contribución de todo el mundo. Lee [`docs/CONTRIBUTING.md`
|
||||
alt="Get it on F-Droid"
|
||||
height="80">](https://f-droid.org/en/packages/com.carriez.flutter_hbb)
|
||||
|
||||
## Servidores gratis de uso público
|
||||
|
||||
A continuación se muestran los servidores gratuitos, pueden cambiar a medida que pasa el tiempo. Si no estás cerca de uno de ellos, tu conexión puede ser lenta.
|
||||
|
||||
| Ubicación | Compañía | Especificación |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Seoul | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Germany | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Germany | Codext | 4 vCPU / 8GB RAM |
|
||||
| Ukraine (Kyiv) | [dc.volia](https://dc.volia.com) | 2 vCPU / 4GB RAM |
|
||||
|
||||
## Dependencias
|
||||
|
||||
La versión Desktop usa [Sciter](https://sciter.com/) o Flutter para el GUI, este tutorial es solo para Sciter.
|
||||
@@ -115,34 +104,6 @@ mv libsciter-gtk.so target/debug
|
||||
cargo run
|
||||
```
|
||||
|
||||
### Cambia Wayland a X11 (Xorg)
|
||||
|
||||
RustDesk no soporta Wayland. Lee [esto](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) para configurar Xorg en la sesión por defecto de GNOME.
|
||||
|
||||
## Soporte para Wayland
|
||||
|
||||
Wayland no parece proporcionar ninguna API para enviar pulsaciones de teclas a otras ventanas. Por lo tanto, rustdesk usa una API de nivel bajo, a saber, el dispositivo `/dev/uinput` (a nivel del kernel de Linux).
|
||||
|
||||
Cuando wayland esta del lado controlado, hay que iniciar de la siguiente manera:
|
||||
```bash
|
||||
# Empezar el servicio uinput
|
||||
$ sudo rustdesk --service
|
||||
$ rustdesk
|
||||
```
|
||||
**Aviso**: La grabación de pantalla de Wayland utiliza diferentes interfaces. RustDesk actualmente sólo soporta org.freedesktop.portal.ScreenCast
|
||||
```bash
|
||||
$ dbus-send --session --print-reply \
|
||||
--dest=org.freedesktop.portal.Desktop \
|
||||
/org/freedesktop/portal/desktop \
|
||||
org.freedesktop.DBus.Properties.Get \
|
||||
string:org.freedesktop.portal.ScreenCast string:version
|
||||
# No soportado
|
||||
Error org.freedesktop.DBus.Error.InvalidArgs: No such interface “org.freedesktop.portal.ScreenCast”
|
||||
# Soportado
|
||||
method return time=1662544486.931020 sender=:1.54 -> destination=:1.139 serial=257 reply_serial=2
|
||||
variant uint32 4
|
||||
```
|
||||
|
||||
## Como compilar con Docker
|
||||
|
||||
Empieza clonando el repositorio y compilando el contenedor de docker:
|
||||
|
||||
@@ -25,15 +25,6 @@
|
||||
|
||||
[دریافت نرمافزار](https://github.com/rustdesk/rustdesk/releases)
|
||||
|
||||
## سرورهای عمومی رایگان
|
||||
|
||||
شما ميتوانید از سرورهای زیر به رایگان استفاده کنید. این لیست ممکن است به مرور زمان تغییر میکند. اگر به این سرورها نزدیک نیستید، ممکن است اتصال شما کند باشد.
|
||||
| موقعیت | سرویس دهنده | مشخصات |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| کرهی جنوبی، سئول | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| آلمان | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| آلمان | Codext | 4 vCPU / 8GB RAM |
|
||||
|
||||
## وابستگی ها
|
||||
|
||||
نسخههای رومیزی از [sciter](https://sciter.com/) برای رابط کاربری گرافیکی استفاده میکنند. خواهشمندیم کتابخانهی پویای sciter را خودتان دانلود کنید از این منابع دریافت کنید.
|
||||
@@ -114,10 +105,6 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### تغییر Wayland به (X11 (Xorg
|
||||
|
||||
راستدسک از Wayland پشتیبانی نمی کند. برای جایگزنی Xorg به عنوان پیشفرض GNOM، [اینجا](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) را کلیک کنید.
|
||||
|
||||
## نحوه ساخت با داکر
|
||||
|
||||
این مخزن Git را دریافت کنید و کانتینر را به روش زیر بسازید
|
||||
|
||||
@@ -19,16 +19,6 @@ RustDesk toivottaa avustukset tervetulleiksi kaikilta. Katso lisätietoja [`docs
|
||||
|
||||
[**BINAARILATAUS**](https://github.com/rustdesk/rustdesk/releases)
|
||||
|
||||
## Vapaita julkisia palvelimia
|
||||
|
||||
Alla on palvelimia, joita voit käyttää ilmaiseksi, ne saattavat muuttua ajan mittaan. Jos et ole lähellä yhtä näistä, verkkosi voi olla hidas.
|
||||
| Sijainti | Myyjä | Määrittely |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Seoul | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Germany | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Germany | Codext | 4 vCPU / 8GB RAM |
|
||||
| Ukraine (Kyiv) | [dc.volia](https://dc.volia.com) | 2 vCPU / 4GB RAM |
|
||||
|
||||
## Riippuvuudet
|
||||
|
||||
Desktop-versiot käyttävät [sciter](https://sciter.com/) graafisena käyttöliittymänä, lataa sciter-dynaaminen kirjasto itsellesi.
|
||||
@@ -106,10 +96,6 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### Vaihda Wayland-ympäristö X11 (Xorg)-ympäristöön
|
||||
|
||||
RustDesk ei tue Waylandia. Tarkista [tämä](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) asettamalla Xorg oletus GNOME-istuntoon.
|
||||
|
||||
## Kuinka rakennetaan Dockerin kanssa
|
||||
|
||||
Aloita kloonaamalla tietovarasto ja rakentamalla docker-säiliö:
|
||||
|
||||
@@ -19,16 +19,6 @@ RustDesk accueille les contributions de tout le monde. Voir [`docs/CONTRIBUTING.
|
||||
|
||||
[**TÉLÉCHARGEMENT BINAIRE**](https://github.com/rustdesk/rustdesk/releases)
|
||||
|
||||
## Serveurs publics libres
|
||||
|
||||
Ci-dessous se trouvent les serveurs que vous utilisez gratuitement, cela peut changer au fil du temps. Si vous n'êtes pas proche de l'un d'entre eux, votre réseau peut être lent.
|
||||
|
||||
| Location | Vendor | Specification |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Seoul | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Germany | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Germany | Codext | 4 vCPU / 8GB RAM |
|
||||
|
||||
## Dépendances
|
||||
|
||||
Les versions de bureau utilisent [sciter](https://sciter.com/) pour l'interface graphique, veuillez télécharger la bibliothèque dynamique sciter vous-même.
|
||||
@@ -106,10 +96,6 @@ mv libsciter-gtk.so target/debug
|
||||
Exécution du cargo
|
||||
```
|
||||
|
||||
### Changer Wayland en X11 (Xorg)
|
||||
|
||||
RustDesk ne supporte pas Wayland. Lisez [cela](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) pour configurer Xorg comme la session GNOME par défaut.
|
||||
|
||||
## Comment construire avec Docker
|
||||
|
||||
Commencez par cloner le dépôt et construire le conteneur Docker :
|
||||
|
||||
@@ -29,24 +29,6 @@
|
||||
alt="Get it on F-Droid"
|
||||
height="80">](https://f-droid.org/en/packages/com.carriez.flutter_hbb)
|
||||
|
||||
## Δωρεάν δημόσιοι διακομιστές
|
||||
|
||||
Παρακάτω είναι οι διακομιστές που χρησιμοποιούνται δωρεάν, ενδέχεται να αλλάξουν με την πάροδο του χρόνου. Εάν δεν είστε κοντά σε ένα από αυτούς, το δίκτυό σας ίσως να είναι αργό.
|
||||
| Περιοχή | Πάροχος | Προδιαγραφές |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Σεούλ | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Γερμανία | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Γερμανία | Codext | 4 vCPU / 8GB RAM |
|
||||
| Ουκρανία (Κίεβο) | [dc.volia](https://dc.volia.com) | 2 vCPU / 4GB RAM |
|
||||
|
||||
## Dev Container
|
||||
|
||||
[](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/rustdesk/rustdesk)
|
||||
|
||||
Αν έχετε εγκατεστημένα το VS Code και το Docker, μπορείτε να ξεκινήσετε κάνοντας κλικ στην παραπάνω εικόνα. Αυτό θα έχει ως αποτέλεσμα, το VS Code να εγκαταστήσει αυτόματα την επέκταση Dev Containers, εάν χρειάζεται, θα κλωνοποιήσει τον πηγαίο κώδικα σε έναν νέο container και θα εκκινήσει ένα Dev Container για χρήση προγραμματισμού.
|
||||
|
||||
Για περισσότερες πληροφορίες μεταβείτε στο [DEVCONTAINER.md](docs/DEVCONTAINER.md).
|
||||
|
||||
## Προαπαιτούμενα για build
|
||||
|
||||
Στις παραθυρικές εκδόσεις χρησιμοποιείται είτε το [sciter](https://sciter.com/) είτε το Flutter, τα παρακάτω βήματα είναι μόνο για το Sciter.
|
||||
@@ -135,34 +117,6 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### Αλλαγή του Wayland σε X11 (Xorg)
|
||||
|
||||
Το RustDesk δεν υποστηρίζει το πρωτόκολλο Wayland. Διαβάστε [εδώ](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) ώστε να ορίσετε το Xorg ως το προκαθορισμένο GNOME περιβάλλον.
|
||||
|
||||
## Υποστήριξη Wayland
|
||||
|
||||
Το Wayland προς το παρόν δεν διαθέτει κάποιο API το οποίο να στέλνει τα πατήματα πλήκτρων στα υπόλοιπα παράθυρα. Για τον λόγο αυτό, το Rustdesk χρησιμοποιεί ένα API από κατώτερο επίπεδο, όπως το `/dev/uinput` (Linux kernel level).
|
||||
|
||||
Σε περίπτωση που το Wayland είναι η ελεγχόμενη πλευρά, θα πρέπει να ξεκινήσετε με τον παρακάτω τρόπο:
|
||||
```bash
|
||||
# Start uinput service
|
||||
$ sudo rustdesk --service
|
||||
$ rustdesk
|
||||
```
|
||||
**Σημείωση**: Η εγγραφή οθόνης του Wayland χρησιμοποιεί διαφορετικές διεπαφές. Το RustDesk προς το παρόν υποστηρίζει μόνο org.freedesktop.portal.ScreenCast.
|
||||
```bash
|
||||
$ dbus-send --session --print-reply \
|
||||
--dest=org.freedesktop.portal.Desktop \
|
||||
/org/freedesktop/portal/desktop \
|
||||
org.freedesktop.DBus.Properties.Get \
|
||||
string:org.freedesktop.portal.ScreenCast string:version
|
||||
# Not support
|
||||
Error org.freedesktop.DBus.Error.InvalidArgs: No such interface “org.freedesktop.portal.ScreenCast”
|
||||
# Support
|
||||
method return time=1662544486.931020 sender=:1.54 -> destination=:1.139 serial=257 reply_serial=2
|
||||
variant uint32 4
|
||||
```
|
||||
|
||||
## Πως να κάνετε build στο Docker
|
||||
|
||||
Ξεκινήστε κλωνοποιώντας το αποθετήριο και κάνοντας build το docker container:
|
||||
@@ -191,7 +145,7 @@ target/debug/rustdesk
|
||||
target/release/rustdesk
|
||||
```
|
||||
|
||||
Βεβαιωθείτε ότι εκτελείτε αυτές τις εντολές από την αρχική διαδρομή του αποθετηρίου του Rustdesk, διαφορετικά η εφαρμογή ενδέχεται να μην είναι σε θέση να βρεί τους απαιτούμενους πόρους. Σημειώστε επίσης ότι άλλες υποεντολές, όπως το `install` ή το `run` δεν υποστηρίζονται επί του παρόντος μέσω αυτής της μεθόδου καθώς θα εγκαταστήσουν ή θα εκτελέσουν το πρόγραμμα εντός του container αντί του κεντρικού υπολογιστή.
|
||||
Βεβαιωθείτε ότι εκτελείτε αυτές τις εντολές από την αρχική διαδρομή του αποθετηρίου του RustDesk, διαφορετικά η εφαρμογή ενδέχεται να μην είναι σε θέση να βρεί τους απαιτούμενους πόρους. Σημειώστε επίσης ότι άλλες υποεντολές, όπως το `install` ή το `run` δεν υποστηρίζονται επί του παρόντος μέσω αυτής της μεθόδου καθώς θα εγκαταστήσουν ή θα εκτελέσουν το πρόγραμμα εντός του container αντί του κεντρικού υπολογιστή.
|
||||
|
||||
## Δομή φακέλων
|
||||
|
||||
|
||||
@@ -27,16 +27,6 @@ A RustDesk szívesen fogad minden contributiont, támogatást mindenkitől. Lás
|
||||
alt="Get it on F-Droid"
|
||||
height="80">](https://f-droid.org/en/packages/com.carriez.flutter_hbb)
|
||||
|
||||
## Ingyenes publikus szerverek
|
||||
|
||||
Ezalatt az üzenet alatt találhatóak azok a publikus szerverek, amelyeket ingyen használhatsz. Ezek a szerverek változhatnak a jövőben, illetve a hálózatuk lehet hogy lassú lehet.
|
||||
| Hely | Host | Specifikáció |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Seoul | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Germany | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Germany | Codext | 4 vCPU / 8GB RAM |
|
||||
| Ukraine (Kyiv) | [dc.volia](https://dc.volia.com) | 2 vCPU / 4GB RAM |
|
||||
|
||||
## Dependencies
|
||||
|
||||
Az asztali verziók [sciter](https://sciter.com/)-t használnak a GUI-hoz, kérlek telepítsd a dynamikus könyvtárat magad.
|
||||
@@ -118,10 +108,6 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### Válts Wayland-ról X11-re (Xorg)
|
||||
|
||||
A RustDesk nem támogatja a Waylendet. [Itt](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) található egy tutorial amelynek segítségével beállíthatod a Xorg-ot mint alap GNOME session.
|
||||
|
||||
## Hogyan építs Dockerrel
|
||||
|
||||
Kezdjünk a repo clónozásával, majd pedig a Docker container megépítésével:
|
||||
|
||||
@@ -6,54 +6,62 @@
|
||||
<a href="#file-structure">Structure</a> •
|
||||
<a href="#snapshot">Snapshot</a><br>
|
||||
[<a href="../README.md">English</a>] | [<a href="README-UA.md">Українська</a>] | [<a href="README-CS.md">česky</a>] | [<a href="README-ZH.md">中文</a>] | [<a href="README-HU.md">Magyar</a>] | [<a href="README-ES.md">Español</a>] | [<a href="README-FA.md">فارسی</a>] | [<a href="README-FR.md">Français</a>] | [<a href="README-DE.md">Deutsch</a>] | [<a href="README-PL.md">Polski</a>] | [<a href="README-FI.md">Suomi</a>] | [<a href="README-ML.md">മലയാളം</a>] | [<a href="README-JP.md">日本語</a>] | [<a href="README-NL.md">Nederlands</a>] | [<a href="README-IT.md">Italiano</a>] | [<a href="README-RU.md">Русский</a>] | [<a href="README-PTBR.md">Português (Brasil)</a>] | [<a href="README-EO.md">Esperanto</a>] | [<a href="README-KR.md">한국어</a>] | [<a href="README-AR.md">العربي</a>] | [<a href="README-VN.md">Tiếng Việt</a>] | [<a href="README-GR.md">Ελληνικά</a>]<br>
|
||||
<b>Kami membutuhkan bantuan Anda untuk menerjemahkan README ini dan <a href="https://github.com/rustdesk/rustdesk/tree/master/src/lang">RustDesk UI</a> ke bahasa asli anda</b>
|
||||
<b>Kami membutuhkan bantuanmu untuk menterjemahkan file README dan <a href="https://github.com/rustdesk/rustdesk/tree/master/src/lang">RustDesk UI</a> ke Bahasa Indonesia</b>
|
||||
</p>
|
||||
|
||||
Birbincang bersama kami: [Discord](https://discord.gg/nDceKgxnkV) | [Twitter](https://twitter.com/rustdesk) | [Reddit](https://www.reddit.com/r/rustdesk)
|
||||
Mari mengobrol bersama kami: [Discord](https://discord.gg/nDceKgxnkV) | [Twitter](https://twitter.com/rustdesk) | [Reddit](https://www.reddit.com/r/rustdesk)
|
||||
|
||||
[](https://ko-fi.com/I2I04VU09)
|
||||
|
||||
Perangkat lunak desktop jarak jauh lainnya, ditulis dengan Rust. Bekerja begitu saja, tidak memerlukan konfigurasi. Anda memiliki kendali penuh atas data Anda, tanpa khawatir tentang keamanan. Anda dapat menggunakan server rendezvous/relay kami, [konfigurasi server sendiri](https://rustdesk.com/server), or [tulis rendezvous/relay server anda sendiri](https://github.com/rustdesk/rustdesk-server-demo).
|
||||
[](https://console.algora.io/org/rustdesk/bounties?status=open)
|
||||
|
||||
RustDesk menyambut baik kontribusi dari semua orang. Lihat [`docs/CONTRIBUTING.md`](CONTRIBUTING.md) untuk membantu sebelum memulai.
|
||||
Merupakan perangkat lunak Remote Desktop yang baru, dan dibangun dengan Rust. Bahkan kamu bisa langsung menggunakannya tanpa perlu melakukan konfigurasi tambahan. Serta memiliki kontrol penuh terhadap semua data, tanpa perlu merasa was-was tentang isu keamanan, dan yang lebih menarik adalah memiliki opsi untuk menggunakan server rendezvous/relay milik kami, [konfigurasi server sendiri](https://rustdesk.com/server), atau [tulis rendezvous/relay server anda sendiri](https://github.com/rustdesk/rustdesk-server-demo).
|
||||
|
||||
[**BINARY DOWNLOAD**](https://github.com/rustdesk/rustdesk/releases)
|
||||

|
||||
|
||||
## Publik Server Gratis
|
||||
RustDesk mengajak semua orang untuk ikut berkontribusi. Lihat [`docs/CONTRIBUTING-ID.md`](CONTRIBUTING-ID.md) untuk melihat panduan.
|
||||
|
||||
Di bawah ini adalah server yang bisa Anda gunakan secara gratis, dapat berubah seiring waktu. Jika Anda tidak dekat dengan salah satu dari ini, jaringan Anda mungkin lambat.
|
||||
| Lokasi | Vendor | Spesifikasi |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Seoul | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Germany | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Germany | Codext | 4 vCPU / 8GB RAM |
|
||||
| Ukraine (Kyiv) | [dc.volia](https://dc.volia.com) | 2 vCPU / 4GB RAM |
|
||||
[**FAQ**](https://github.com/rustdesk/rustdesk/wiki/FAQ)
|
||||
|
||||
## Dependencies
|
||||
[**UNDUH BINARY**](https://github.com/rustdesk/rustdesk/releases)
|
||||
|
||||
Versi desktop menggunakan [sciter](https://sciter.com/) untuk GUI, silahkan download sendiri sciter dynamic library.
|
||||
[**NIGHTLY BUILD**](https://github.com/rustdesk/rustdesk/releases/tag/nightly)
|
||||
|
||||
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
|
||||
alt="Get it on F-Droid"
|
||||
height="80">](https://f-droid.org/en/packages/com.carriez.flutter_hbb)
|
||||
|
||||
## Dependensi
|
||||
|
||||
Pada versi desktop, antarmuka pengguna (GUI) menggunakan [Sciter](https://sciter.com/) atau flutter
|
||||
|
||||
Kamu bisa mengunduh Sciter dynamic library disini.
|
||||
|
||||
[Windows](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.win/x64/sciter.dll) |
|
||||
[Linux](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so) |
|
||||
[MacOS](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.osx/libsciter.dylib)
|
||||
|
||||
## Langkah untuk RAW Build
|
||||
## Langkah awal untuk memulai
|
||||
|
||||
- Siapkan env pengembangan Rust dan C++ build env
|
||||
- Siapkan env development Rust dan env build C++
|
||||
|
||||
- Install [vcpkg](https://github.com/microsoft/vcpkg), dan arahkan `VCPKG_ROOT` env variable dengan benar
|
||||
- Install [vcpkg](https://github.com/microsoft/vcpkg), dan atur variabel env `VCPKG_ROOT` dengan benar
|
||||
|
||||
- Windows: vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static aom:x64-windows-static
|
||||
- Linux/MacOS: vcpkg install libvpx libyuv opus aom
|
||||
|
||||
- jalankan `cargo run`
|
||||
|
||||
## Bagaimana Build di Linux
|
||||
## [Build](https://rustdesk.com/docs/en/dev/build/)
|
||||
|
||||
## Cara Build di Linux
|
||||
|
||||
### Ubuntu 18 (Debian 10)
|
||||
|
||||
```sh
|
||||
sudo apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake
|
||||
sudo apt install -y zip g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev \
|
||||
libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake make \
|
||||
libclang-dev ninja-build libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
|
||||
```
|
||||
|
||||
### Fedora 28 (CentOS 8)
|
||||
@@ -80,7 +88,7 @@ export VCPKG_ROOT=$HOME/vcpkg
|
||||
vcpkg/vcpkg install libvpx libyuv opus aom
|
||||
```
|
||||
|
||||
### Perbaiki libvpx (Untuk Fedora)
|
||||
### Mengatasi masalah libvpx (Untuk Fedora)
|
||||
|
||||
```sh
|
||||
cd vcpkg/buildtrees/libvpx/src
|
||||
@@ -106,13 +114,9 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### Ubah Wayland menjadi X11 (Xorg)
|
||||
## Cara Build dengan Docker
|
||||
|
||||
RustDesk tidak mendukung Wayland. Cek [ini](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) untuk mengonfigurasi Xorg sebagai sesi GNOME default.
|
||||
|
||||
## Bagaimana build dengan Docker
|
||||
|
||||
Mulailah dengan mengkloning repositori dan build dengan docker container:
|
||||
Mulailah dengan melakukan kloning (clone) repositori dan build dengan docker container:
|
||||
|
||||
```sh
|
||||
git clone https://github.com/rustdesk/rustdesk
|
||||
@@ -120,25 +124,25 @@ cd rustdesk
|
||||
docker build -t "rustdesk-builder" .
|
||||
```
|
||||
|
||||
Kemudian, setiap kali Anda perlu build aplikasi, jalankan perintah berikut:
|
||||
Selanjutnya, setiap kali ketika kamu akan melakukan build aplikasi, jalankan perintah berikut:
|
||||
|
||||
```sh
|
||||
docker run --rm -it -v $PWD:/home/user/rustdesk -v rustdesk-git-cache:/home/user/.cargo/git -v rustdesk-registry-cache:/home/user/.cargo/registry -e PUID="$(id -u)" -e PGID="$(id -g)" rustdesk-builder
|
||||
```
|
||||
|
||||
Perhatikan bahwa build pertama mungkin memerlukan waktu lebih lama sebelum dependensi di-cache, build berikutnya akan lebih cepat. Selain itu, jika Anda perlu menentukan argumen yang berbeda untuk perintah build, Anda dapat melakukannya di akhir perintah di posisi `<OPTIONAL-ARGS>`. Misalnya, jika Anda ingin membangun versi rilis yang dioptimalkan, Anda akan menjalankan perintah di atas diikuti oleh `--release`. Hasil eksekusi akan tersedia pada target folder di sistem anda, dan dapat dijalankan dengan:
|
||||
Perlu diingat bahwa pada saat build pertama kali, mungkin memerlukan waktu lebih lama sebelum dependensi di-cache, build berikutnya akan lebih cepat. Selain itu, jika perlu menentukan argumen yang berbeda untuk perintah build, kamu dapat melakukannya di akhir perintah di posisi `<OPTIONAL-ARGS>`. Misalnya, jika ingin membangun versi rilis yang dioptimalkan, jalankan perintah di atas dan tambahkan `--release`. Hasil eksekusi perintah tersebut akan tersimpan pada target folder di sistem kamu, dan dapat dijalankan dengan:
|
||||
|
||||
```sh
|
||||
target/debug/rustdesk
|
||||
```
|
||||
|
||||
Atau, jika Anda menjalankan rilis yang dapat dieksekusi:
|
||||
Atau, jika kamu menjalankan rilis yang dapat dieksekusi:
|
||||
|
||||
```sh
|
||||
target/release/rustdesk
|
||||
```
|
||||
|
||||
Harap pastikan bahwa Anda menjalankan perintah ini dari root repositori RustDesk, jika tidak, aplikasi mungkin tidak dapat menemukan sumber daya yang diperlukan. Perhatikan juga perintah cargo seperti `install` atau `run` saat ini tidak didukung melalui metode ini karena mereka akan menginstal atau menjalankan program di dalam container bukan pada host.
|
||||
Harap pastikan bahwa kamu menjalankan perintah ini dari repositori root RustDesk, jika tidak demikian, aplikasi mungkin tidak dapat menemukan sumber yang diperlukan. Dan juga, perintah cargo seperti `install` atau `run` saat ini tidak didukung melalui metode ini karena, proses menginstal atau menjalankan program terjadi di dalam container bukan pada host.
|
||||
|
||||
## Struktur File
|
||||
|
||||
|
||||
@@ -1,37 +1,41 @@
|
||||
<p align="center">
|
||||
<img src="../res/logo-header.svg" alt="RustDesk - Your remote desktop"><br>
|
||||
<a href="#server-pubblici-gratuiti">Servers</a> •
|
||||
<img src="../res/logo-header.svg" alt="RustDesk - il tuo desktop remoto"><br>
|
||||
<a href="#server-pubblici-gratuiti">Server</a> •
|
||||
<a href="#passaggi-per-la-compilazione">Compilazione</a> •
|
||||
<a href="#come-compilare-con-docker">Docker</a> •
|
||||
<a href="#struttura-dei-file">Struttura</a> •
|
||||
<a href="#screenshots">Screenshots</a><br>
|
||||
[<a href="../README.md">English</a>] | [<a href="README-UA.md">Українська</a>] | [<a href="README-CS.md">česky</a>] | [<a href="README-ZH.md">中文</a>] | [<a href="README-HU.md">Magyar</a>] | [<a href="README-ES.md">Español</a>] | [<a href="README-FA.md">فارسی</a>] | [<a href="README-FR.md">Français</a>] | [<a href="README-DE.md">Deutsch</a>] | [<a href="README-PL.md">Polski</a>] | [<a href="README-ID.md">Indonesian</a>] | [<a href="README-FI.md">Suomi</a>] | [<a href="README-ML.md">മലയാളം</a>] | [<a href="README-JP.md">日本語</a>] | [<a href="README-NL.md">Nederlands</a>] | [<a href="README-RU.md">Русский</a>] | [<a href="README-PTBR.md">Português (Brasil)</a>] | [<a href="README-EO.md">Esperanto</a>] | [<a href="README-KR.md">한국어</a>] | [<a href="README-AR.md">العربي</a>] | [<a href="README-VN.md">Tiếng Việt</a>] | [<a href="README-GR.md">Ελληνικά</a>]<br>
|
||||
<b>Abbiamo bisogno del tuo aiuto per tradurre questo README e la <a href="https://github.com/rustdesk/rustdesk/tree/master/src/lang">RustDesk UI</a> nella tua lingua nativa</b>
|
||||
<a href="#schermate">Schermate</a><br>
|
||||
[<a href="../README.md">English</a>] | [<a href="README-UA.md">Українська</a>] | [<a href="README-CS.md">česky</a>] | [<a href="README-ZH.md">中文</a>] | [<a href="README-HU.md">Magyar</a>] | [<a href="README-ES.md">Español</a>] | [<a href="README-FA.md">فارسی</a>] | [<a href="README-FR.md">Français</a>] | [<a href="README-DE.md">Deutsch</a>] | [<a href="README-PL.md">Polski</a>] | [<a href="README-ID.md">Indonesian</a>] | [<a href="README-FI.md">Suomi</a>] | [<a href="README-ML.md">മലയാളം</a>] | [<a href="README-JP.md">日本語</a>] | [<a href="README-NL.md">Nederlands</a>] | [<a href="README-RU.md">Русский</a>] | [<a href="README-PTBR.md">Português (Brasil)</a>] | [<a href="README-EO.md">Esperanto</a>] | [<a href="README-KR.md">한국어</a>] | [<a href="README-AR.md">العربي</a>] | [<a href="README-VN.md">Tiếng Việt</a>] | [<a href="README-DA.md">Dansk</a>] | [<a href="README-GR.md">Ελληνικά</a>] | [<a href="README-TR.md">Türkçe</a>]<br>
|
||||
<b>Abbiamo bisogno del tuo aiuto per tradurre questo file README e la <a href="https://github.com/rustdesk/rustdesk/tree/master/src/lang">UI RustDesk</a> nella tua lingua nativa</b>
|
||||
</p>
|
||||
|
||||
Chatta con noi: [Discord](https://discord.gg/nDceKgxnkV) | [Twitter](https://twitter.com/rustdesk) | [Reddit](https://www.reddit.com/r/rustdesk)
|
||||
Chatta con noi su: [Discord](https://discord.gg/nDceKgxnkV) | [Twitter](https://twitter.com/rustdesk) | [Reddit](https://www.reddit.com/r/rustdesk)
|
||||
|
||||
[](https://ko-fi.com/I2I04VU09)
|
||||
|
||||
Ancora un altro software per il controllo remoto del desktop, scritto in Rust. Funziona immediatamente, nessuna configurazione richiesta. Hai il pieno controllo dei tuoi dati, senza preoccupazioni per la sicurezza. Puoi utilizzare il nostro server rendezvous/relay, [configurare il tuo](https://rustdesk.com/server) o [scrivere il tuo rendezvous/relay server](https://github.com/rustdesk/rustdesk-server-demo).
|
||||
[](https://console.algora.io/org/rustdesk/bounties?status=open)
|
||||
|
||||
RustDesk accoglie il contributo di tutti. Per ulteriori informazioni su come inizare a contribuire, vedere [`docs/CONTRIBUTING.md`](CONTRIBUTING.md).
|
||||
Ancora un altro software per il controllo remoto del desktop, scritto in Rust. Funziona immediatamente, nessuna configurazione richiesta. Hai il pieno controllo dei tuoi dati, senza preoccupazioni per la sicurezza. Puoi usare il nostro server rendezvous/relay, [configurare il tuo server](https://rustdesk.com/server) o [realizzare il tuo server rendezvous/relay](https://github.com/rustdesk/rustdesk-server-demo).
|
||||
|
||||
[**BINARY DOWNLOAD**](https://github.com/rustdesk/rustdesk/releases)
|
||||

|
||||
|
||||
## Server pubblici gratuiti
|
||||
RustDesk accoglie il contributo di tutti. Per ulteriori informazioni su come iniziare a contribuire, vedi [CONTRIBUTING.md](CONTRIBUTING-IT.md).
|
||||
|
||||
Qui sotto trovate i server che possono essere usati gratuitamente, la lista potrebbe cambiare nel tempo. Se non si è vicini a uno di questi server, la vostra connessione potrebbe essere lenta.
|
||||
| Posizione | Vendor | Specifiche |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Seoul | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Germany | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Germany | Codext | 4 vCPU / 8GB RAM |
|
||||
| Ukraine (Kyiv) | [dc.volia](https://dc.volia.com) | 2 vCPU / 4GB RAM |
|
||||
[**FAQ**](https://github.com/rustdesk/rustdesk/wiki/FAQ)
|
||||
|
||||
[**SCARICA PROGRAMMA**](https://github.com/rustdesk/rustdesk/releases)
|
||||
|
||||
[**SCARICA NIGHTLY**](https://github.com/rustdesk/rustdesk/releases/tag/nightly)
|
||||
|
||||
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
|
||||
alt="Get it on F-Droid"
|
||||
height="80">](https://f-droid.org/en/packages/com.carriez.flutter_hbb)
|
||||
|
||||
## Dipendenze
|
||||
|
||||
La versione Desktop utilizza [sciter](https://sciter.com/) per la GUI, per favore scarica sciter dynamic library.
|
||||
Le versioni desktop utilizzano Flutter o Sciter (deprecato) per l'interfaccia utente, questo tutorial è solo per Sciter, poiché è più facile per iniziare. Controlla il nostro [CI](https://github.com/rustdesk/rustdesk/blob/master/.github/workflows/flutter-build.yml) per la compilazione della versione Flutter.
|
||||
|
||||
Scarica la libreria dinamica Sciter.
|
||||
|
||||
[Windows](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.win/x64/sciter.dll) |
|
||||
[Linux](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so) |
|
||||
@@ -48,12 +52,22 @@ La versione Desktop utilizza [sciter](https://sciter.com/) per la GUI, per favor
|
||||
|
||||
- Esegui `cargo run`
|
||||
|
||||
## Come compilare su Linux
|
||||
## [Build](https://rustdesk.com/docs/en/dev/build/)
|
||||
|
||||
## Come compilare in Linux
|
||||
|
||||
### Ubuntu 18 (Debian 10)
|
||||
|
||||
```sh
|
||||
sudo apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake
|
||||
sudo apt install -y zip g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev \
|
||||
libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake make \
|
||||
libclang-dev ninja-build libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
|
||||
```
|
||||
|
||||
### openSUSE Tumbleweed
|
||||
|
||||
```sh
|
||||
sudo zypper install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libXfixes-devel cmake alsa-lib-devel gstreamer-devel gstreamer-plugins-base-devel xdotool-devel
|
||||
```
|
||||
|
||||
### Fedora 28 (CentOS 8)
|
||||
@@ -68,7 +82,7 @@ sudo yum -y install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-
|
||||
sudo pacman -Syu --needed unzip git cmake gcc curl wget yasm nasm zip make pkg-config clang gtk3 xdotool libxcb libxfixes alsa-lib pipewire
|
||||
```
|
||||
|
||||
### Installare vcpkg
|
||||
### Installa vcpkg
|
||||
|
||||
```sh
|
||||
git clone https://github.com/microsoft/vcpkg
|
||||
@@ -80,7 +94,7 @@ export VCPKG_ROOT=$HOME/vcpkg
|
||||
vcpkg/vcpkg install libvpx libyuv opus aom
|
||||
```
|
||||
|
||||
### Fix libvpx (Per Fedora)
|
||||
### Correzione libvpx (per Fedora)
|
||||
|
||||
```sh
|
||||
cd vcpkg/buildtrees/libvpx/src
|
||||
@@ -106,13 +120,9 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### Cambiare Wayland a X11 (Xorg)
|
||||
|
||||
RustDesk non supporta Wayland. Controlla [questo](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) per configurare Xorg come sessione di default di GNOME.
|
||||
|
||||
## Come compilare con Docker
|
||||
|
||||
Cominciare clonando il repository e compilare i container docker:
|
||||
Clona il repository e compila i container docker:
|
||||
|
||||
```sh
|
||||
git clone https://github.com/rustdesk/rustdesk
|
||||
@@ -120,38 +130,41 @@ cd rustdesk
|
||||
docker build -t "rustdesk-builder" .
|
||||
```
|
||||
|
||||
Quindi, ogni volta che devi compilare l'applicazione, esegui il comando seguente:
|
||||
Quindi, ogni volta che devi compilare l'applicazione, esegui il seguente comando:
|
||||
|
||||
```sh
|
||||
docker run --rm -it -v $PWD:/home/user/rustdesk -v rustdesk-git-cache:/home/user/.cargo/git -v rustdesk-registry-cache:/home/user/.cargo/registry -e PUID="$(id -u)" -e PGID="$(id -g)" rustdesk-builder
|
||||
```
|
||||
|
||||
Tieni presente che la prima build potrebbe richiedere più tempo prima che le dipendenze vengano memorizzate nella cache, le build successive saranno più veloci. Inoltre, se hai bisogno di specificare argomenti diversi per il comando build, puoi farlo alla fine del comando nella posizione `<OPTIONAL-ARGS>`. Ad esempio, se si desidera creare una versione di rilascio ottimizzata, eseguire il comando sopra seguito da `--release`. L'eseguibile generato sarà creato nella cartella di destinazione del proprio sistema e può essere eseguito con:
|
||||
Tieni presente che la prima build potrebbe richiedere più tempo prima che le dipendenze vengano memorizzate nella cache, le build successive saranno più veloci. Inoltre, se hai bisogno di specificare argomenti diversi per il comando build, puoi farlo alla fine del comando nella posizione `<OPTIONAL-ARGS>`. Ad esempio, se vuoi creare una versione di rilascio ottimizzata, esegui il comando precedentemente indicato seguito da `--release`. L'eseguibile generato sarà creato nella cartella destinazione del sistema e può essere eseguito con:
|
||||
|
||||
```sh
|
||||
target/debug/rustdesk
|
||||
```
|
||||
|
||||
Oppure, se si sta eseguendo un eseguibile di rilascio:
|
||||
Oppure, se stai avviando un eseguibile di rilascio:
|
||||
|
||||
```sh
|
||||
target/release/rustdesk
|
||||
```
|
||||
|
||||
Assicurati di eseguire questi comandi dalla radice del repository RustDesk, altrimenti l'applicazione potrebbe non essere in grado di trovare le risorse richieste. Notare inoltre che altri sottocomandi cargo come `install` o `run` non sono attualmente supportati tramite questo metodo poiché installerebbero o eseguirebbero il programma all'interno del container anziché nell'host.
|
||||
Assicurati di eseguire questi comandi dalla radice del repository RustDesk, altrimenti l'applicazione potrebbe non essere in grado di trovare le risorse richieste. Nota inoltre che altri sottocomandi cargo come `install` o `run` non sono attualmente supportati tramite questo metodo poiché installerebbero o eseguirebbero il programma all'interno del container anziché nell'host.
|
||||
|
||||
## Struttura dei file
|
||||
|
||||
- **[libs/hbb_common](https://github.com/rustdesk/rustdesk/tree/master/libs/hbb_common)**: video codec, config, tcp/udp wrapper, protobuf, fs funzioni per il trasferimento file, e altre funzioni utili.
|
||||
- **[libs/hbb_common](https://github.com/rustdesk/rustdesk/tree/master/libs/hbb_common)**: codec video, config, wrapper tcp/udp, protobuf, funzioni per il trasferimento file, e altre funzioni utili.
|
||||
- **[libs/scrap](https://github.com/rustdesk/rustdesk/tree/master/libs/scrap)**: cattura dello schermo
|
||||
- **[libs/enigo](https://github.com/rustdesk/rustdesk/tree/master/libs/enigo)**: controllo tastiera/mouse specifico della piattaforma
|
||||
- **[src/ui](https://github.com/rustdesk/rustdesk/tree/master/src/ui)**: GUI
|
||||
- **[libs/clipboard](https://github.com/rustdesk/rustdesk/tree/master/libs/clipboard)**: implementazione del copia e incolla dei file per Windows, Linux, macOS.
|
||||
- **[src/ui](https://github.com/rustdesk/rustdesk/tree/master/src/ui)**: Sciter UI obsoleto (deprecato)
|
||||
- **[src/server](https://github.com/rustdesk/rustdesk/tree/master/src/server)**: servizi audio/appunti/input/video e connessioni di rete
|
||||
- **[src/client.rs](https://github.com/rustdesk/rustdesk/tree/master/src/client.rs)**: avviare una connessione peer
|
||||
- **[src/rendezvous_mediator.rs](https://github.com/rustdesk/rustdesk/tree/master/src/rendezvous_mediator.rs)**: Comunica con [rustdesk-server](https://github.com/rustdesk/rustdesk-server), attende la connessione remota diretta (TCP hole punching) oppure indiretta (relayed)
|
||||
- **[src/client.rs](https://github.com/rustdesk/rustdesk/tree/master/src/client.rs)**: avvio di una connessione peer
|
||||
- **[src/rendezvous_mediator.rs](https://github.com/rustdesk/rustdesk/tree/master/src/rendezvous_mediator.rs)**: comunica con [rustdesk-server](https://github.com/rustdesk/rustdesk-server), attende la connessione remota diretta (TCP hole punching) oppure indiretta (relayed)
|
||||
- **[src/platform](https://github.com/rustdesk/rustdesk/tree/master/src/platform)**: codice specifico della piattaforma
|
||||
- **[flutter](https://github.com/rustdesk/rustdesk/tree/master/flutter)**: codice Flutter per desktop e mobile
|
||||
- **[flutter/web/js](https://github.com/rustdesk/rustdesk/tree/master/flutter/web/js)**: JavaScript per client web Flutter
|
||||
|
||||
## Screenshots
|
||||
## Schermate
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -24,15 +24,6 @@ RustDeskは誰からの貢献も歓迎します。 貢献するには [`docs/CON
|
||||
|
||||
[**BINARY DOWNLOAD**](https://github.com/rustdesk/rustdesk/releases)
|
||||
|
||||
## 無料のパブリックサーバー
|
||||
|
||||
下記のサーバーは、無料で使用できますが、後々変更されることがあります。これらのサーバーから遠い場合、接続が遅い可能性があります。
|
||||
| Location | Vendor | Specification |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Seoul | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Germany | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Germany | Codext | 4 vCPU / 8GB RAM |
|
||||
|
||||
## 依存関係
|
||||
|
||||
デスクトップ版ではGUIに [sciter](https://sciter.com/) が使われています。 sciter dynamic library をダウンロードしてください。
|
||||
@@ -116,11 +107,6 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### Wayland の場合、X11(Xorg)に変更します
|
||||
|
||||
RustDeskはWaylandをサポートしていません。
|
||||
[こちら](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) を確認して、XorgをデフォルトのGNOMEセッションとして構成します。
|
||||
|
||||
## Dockerでビルドする方法
|
||||
|
||||
リポジトリのクローンを作成し、Dockerコンテナを構築することから始めます。
|
||||
|
||||
@@ -24,15 +24,6 @@ RustDesk는 모든 기여를 환영합니다. 기여하고자 한다면 [`docs/C
|
||||
|
||||
[**BINARY DOWNLOAD**](https://github.com/rustdesk/rustdesk/releases)
|
||||
|
||||
## 무료 퍼블릭 서버
|
||||
|
||||
표에 있는 서버는 무료로 사용할 수 있지만 추후 변경될 수도 있습니다. 이 서버에서 멀다면, 네트워크가 느려질 가능성도 있습니다.
|
||||
| Location | Vendor | Specification |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Seoul | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Germany | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Germany | Codext | 4 vCPU / 8GB RAM |
|
||||
|
||||
## 의존관계
|
||||
|
||||
데스크탑판에는 GUI에 [sciter](https://sciter.com/)가 사용되었습니다. sciter dynamic library 를 다운로드해주세요.
|
||||
@@ -114,10 +105,6 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### Wayland 일 경우, X11(Xorg)로 변경
|
||||
|
||||
RustDesk는 Wayland를 지원하지 않습니다. [링크](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/)를 확인해서 Xorg 기본값의 GNOME 세션을 구성합니다.
|
||||
|
||||
## Docker에 빌드하는 방법
|
||||
|
||||
레포지토리를 클론하고, Docker 컨테이너 구성하는 것으로 시작합니다.
|
||||
|
||||
@@ -19,15 +19,6 @@
|
||||
|
||||
[**BINARY DOWNLOAD**](https://github.com/rustdesk/rustdesk/releases)
|
||||
|
||||
## സൗജന്യ പൊതു സെർവറുകൾ
|
||||
|
||||
നിങ്ങൾ സൗജന്യമായി ഉപയോഗിക്കുന്ന സെർവറുകൾ ചുവടെയുണ്ട്, അത് സമയത്തിനനുസരിച്ച് മാറിയേക്കാം. നിങ്ങൾ ഇവയിലൊന്നിനോട് അടുത്തല്ലെങ്കിൽ, നിങ്ങളുടെ നെറ്റ്വർക്ക് സ്ലോ ആയേക്കാം.
|
||||
| സ്ഥാനം | കച്ചവടക്കാരൻ | വിവരണം |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Seoul | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Germany | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Germany | Codext | 4 vCPU / 8GB RAM |
|
||||
|
||||
## ഡിപെൻഡൻസികൾ
|
||||
|
||||
ഡെസ്ക്ടോപ്പ് പതിപ്പുകൾ GUI-യ്ക്കായി [sciter](https://sciter.com/) ഉപയോഗിക്കുന്നു, ദയവായി സ്സൈറ്റർ ഡൈനാമിക് ലൈബ്രറി സ്വയം ഡൗൺലോഡ് ചെയ്യുക.
|
||||
@@ -105,10 +96,6 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### വേലാൻഡ് X11 (Xorg) ആയി മാറ്റുക
|
||||
|
||||
RustDesk Wayland-നെ പിന്തുണയ്ക്കുന്നില്ല. സ്ഥിരസ്ഥിതി ഗ്നോം സെഷനായി Xorg കോൺഫിഗർ ചെയ്യുന്നതിന് [ഇത്](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) പരിശോധിക്കുക.
|
||||
|
||||
## ഡോക്കർ ഉപയോഗിച്ച് എങ്ങനെ നിർമ്മിക്കാം
|
||||
|
||||
റെപ്പോസിറ്റോറി ക്ലോണുചെയ്ത് ഡോക്കർ കണ്ടെയ്നർ നിർമ്മിക്കുന്നതിലൂടെ ആരംഭിക്കുക:
|
||||
|
||||
@@ -27,24 +27,6 @@ RustDesk verwelkomt bijdragen van iedereen. Zie [`docs/CONTRIBUTING.md`](CONTRIB
|
||||
alt="Download het op F-Droid"
|
||||
height="80">](https://f-droid.org/en/packages/com.carriez.flutter_hbb)
|
||||
|
||||
## Gratis openbare servers
|
||||
|
||||
Hieronder staan de servers die u gratis gebruikt, ze kunnen in de loop van de tijd veranderen. Als u niet in de buurt van een van deze servers bevindt, kan uw vervinding langzamer zijn.
|
||||
| Locatie | Aanbieder | Specificaties |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Seoul | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Duitsland | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Duitsland | Codext | 4 vCPU / 8GB RAM |
|
||||
| Oekraine (Kyiv) | [dc.volia](https://dc.volia.com) | 2 vCPU / 4GB RAM |
|
||||
|
||||
## Dev Container
|
||||
|
||||
[](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/rustdesk/rustdesk)
|
||||
|
||||
Als u VS Code en Docker al hebt geinstalleerd, kunt u op de bovenstaande badge klikken om te beginnen. Door te klikken zal VS Code automatisch de Dev Containers-extensie installeren indien nodig, de broncode klonen naar een containervolume en een dev container opstarten voor gebruik.
|
||||
|
||||
Bekijk [DEVCONTAINER.md](docs/DEVCONTAINER.md) voor meer informatie.
|
||||
|
||||
## Afhankelijkheden
|
||||
|
||||
Desktop versies gebruiken [sciter](https://sciter.com/) of Flutter voor GUI, deze handleiding is alleen voor Sciter.
|
||||
@@ -132,34 +114,6 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### Wissel van Wayland naar X11 (Xorg)
|
||||
|
||||
RustDesk ondersteunt Wayland niet. Lees [hier](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) hoe je Xorg als standaardsessie kunt instellen voor GNOME.
|
||||
|
||||
## Wayland support
|
||||
|
||||
Wayland lijkt geen API te bieden voor het verzenden van toetsaanslagen naar andere vensters. Daarom gebruikt de rustdesk een API van een lager niveau, namelijk het `/dev/uinput` apparaat (Linux kernel niveau).
|
||||
|
||||
Als wayland de gecontroleerde kant is, moet je op de volgende manier beginnen:
|
||||
```bash
|
||||
# Start uinput service
|
||||
$ sudo rustdesk --service
|
||||
$ rustdesk
|
||||
```
|
||||
**Let op**: Wayland schermopname gebruikt verschillende interfaces. RustDesk ondersteunt momenteel alleen org.freedesktop.portal.ScreenCast.
|
||||
```bash
|
||||
$ dbus-send --session --print-reply \
|
||||
--dest=org.freedesktop.portal.Desktop \
|
||||
/org/freedesktop/portal/desktop \
|
||||
org.freedesktop.DBus.Properties.Get \
|
||||
string:org.freedesktop.portal.ScreenCast string:version
|
||||
# Not support
|
||||
Error org.freedesktop.DBus.Error.InvalidArgs: No such interface “org.freedesktop.portal.ScreenCast”
|
||||
# Support
|
||||
method return time=1662544486.931020 sender=:1.54 -> destination=:1.139 serial=257 reply_serial=2
|
||||
variant uint32 4
|
||||
```
|
||||
|
||||
## Bouwen met Docker
|
||||
|
||||
Begin met het klonen van de repository en het bouwen van de docker container:
|
||||
|
||||
@@ -29,24 +29,6 @@ RustDesk zaprasza do współpracy każdego. Zobacz [`docs/CONTRIBUTING-PL.md`](C
|
||||
alt="Get it on F-Droid"
|
||||
height="80">](https://f-droid.org/en/packages/com.carriez.flutter_hbb)
|
||||
|
||||
## Darmowe Serwery Publiczne
|
||||
|
||||
Poniżej znajdują się serwery, z których można korzystać za darmo, może się to zmienić z upływem czasu. Jeśli nie znajdujesz się w pobliżu jednego z nich, Twoja prędkość połączenia może być niska.
|
||||
| Lokalizacja | Dostawca | Specyfikacja |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Korea Płd. (Seul) | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Niemcy | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Niemcy | Codext | 4 vCPU / 8GB RAM |
|
||||
| Ukraina (Kijów) | [dc.volia](https://dc.volia.com) | 2 vCPU / 4GB RAM |
|
||||
|
||||
## Konterner Programisty (Dev Container)
|
||||
|
||||
[](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/rustdesk/rustdesk)
|
||||
|
||||
Jeżeli masz zainstalowany VS Code i Docker, możesz kliknąć w powyższy link, aby rozpocząć. Kliknięcie spowoduje automatyczną instalację rozszrzenia Kontenera Programisty w VS Code (jeżeli wymagany), sklonuje kod źródłowy do kontenera, i przygotuje kontener do użycia.
|
||||
|
||||
Więcej informacji w pliku [DEVCONTAINER-PL.md](docs/DEVCONTAINER-PL.md) for more info.
|
||||
|
||||
## Zależności
|
||||
|
||||
Wersje desktopowe używają [sciter](https://sciter.com/) dla GUI, proszę pobrać samodzielnie bibliotekę sciter.
|
||||
@@ -130,34 +112,6 @@ mv libsciter-gtk.so target/debug
|
||||
cargo run
|
||||
```
|
||||
|
||||
### Zmień Wayland na X11 (Xorg)
|
||||
|
||||
RustDesk nie obsługuje Waylanda. Sprawdź [tutaj](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/), jak skonfigurować Xorg jako domyślną sesję GNOME.
|
||||
|
||||
## Wspracie Wayland
|
||||
|
||||
Wygląda na to, że Wayland nie wspiera żadnego API do wysyłania naciśnięć klawiszy do innych okien. Dlatego rustdesk używa API z niższego poziomu, urządzenia o nazwie `/dev/uinput` (poziom jądra Linux).
|
||||
|
||||
Gdy po stronie kontrolowanej pracuje Wayland, musisz uruchomić program w następujący sposób:
|
||||
```bash
|
||||
# Start uinput service
|
||||
$ sudo rustdesk --service
|
||||
$ rustdesk
|
||||
```
|
||||
**Uwaga**: Nagrywanie ekranu Wayland wykorzystuje różne interfejsy. RustDesk obecnie obsługuje tylko org.freedesktop.portal.ScreenCast.
|
||||
```bash
|
||||
$ dbus-send --session --print-reply \
|
||||
--dest=org.freedesktop.portal.Desktop \
|
||||
/org/freedesktop/portal/desktop \
|
||||
org.freedesktop.DBus.Properties.Get \
|
||||
string:org.freedesktop.portal.ScreenCast string:version
|
||||
# Not support
|
||||
Error org.freedesktop.DBus.Error.InvalidArgs: No such interface “org.freedesktop.portal.ScreenCast”
|
||||
# Support
|
||||
method return time=1662544486.931020 sender=:1.54 -> destination=:1.139 serial=257 reply_serial=2
|
||||
variant uint32 4
|
||||
```
|
||||
|
||||
## Jak kompilować za pomocą Dockera
|
||||
|
||||
Rozpocznij od sklonowania repozytorium i stworzenia kontenera docker:
|
||||
|
||||
@@ -19,16 +19,6 @@ RustDesk acolhe contribuições de todos. Leia [`docs/CONTRIBUTING.md`](CONTRIBU
|
||||
|
||||
[**DOWNLOAD DE BINÁRIOS**](https://github.com/rustdesk/rustdesk/releases)
|
||||
|
||||
## Servidores Públicos Grátis
|
||||
|
||||
Abaixo estão os servidores que você está utilizando de graça, ele pode mudar com o tempo. Se você não está próximo de algum deles, sua conexão pode ser lenta.
|
||||
|
||||
| Localização | Fornecedor | Especificações |
|
||||
| ----------- | ------------- | ------------------ |
|
||||
| Seoul | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Germany | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Germany | Codext | 4 vCPU / 8GB RAM |
|
||||
|
||||
## Dependências
|
||||
|
||||
Versões de desktop utilizam [sciter](https://sciter.com/) para a GUI, por favor baixe a biblioteca dinâmica sciter por conta própria.
|
||||
@@ -106,10 +96,6 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### Mude Wayland para X11 (Xorg)
|
||||
|
||||
RustDesk não suporta Wayland. Veja [esse link](https://docs.fedoraproject.org/pt_BR/quick-docs/configuring-xorg-as-default-gnome-session/) para configurar o Xorg como a sessão padrão do GNOME.
|
||||
|
||||
## Como compilar com Docker
|
||||
|
||||
Comece clonando o repositório e montando o container docker:
|
||||
|
||||
@@ -28,17 +28,6 @@ RustDesk приветствует вклад каждого. Ознакомьт
|
||||
|
||||
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" alt="Get it on F-Droid" height="80">](https://f-droid.org/en/packages/com.carriez.flutter_hbb)
|
||||
|
||||
## Бесплатные общедоступные серверы
|
||||
|
||||
Ниже приведены бесплатные публичные сервера, используемые по умолчанию. Имейте ввиду, они могут меняться со временем. Также стоит отметить, что скорость работы сети зависит от вашего местоположения и расстояния до серверов. Подключение происходит к ближайшему доступному.
|
||||
| Расположение | Поставщик | Технические характеристики |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Сеул | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Сингапур | Vultr | 1 vCPU / 1GB RAM |
|
||||
| Даллас | Vultr | 1 vCPU / 1GB RAM |
|
||||
| Германия | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Германия | Codext | 4 vCPU / 8GB RAM |
|
||||
|
||||
## Зависимости
|
||||
|
||||
Настольные версии используют [sciter](https://sciter.com/) для графического интерфейса, загрузите динамическую библиотеку sciter самостоятельно.
|
||||
@@ -118,10 +107,6 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### Смените Wayland на X11 (Xorg)
|
||||
|
||||
RustDesk не поддерживает Wayland. Смотрите [этот документ](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) для настройки Xorg в качестве сеанса GNOME по умолчанию.
|
||||
|
||||
## Как собрать с помощью Docker
|
||||
|
||||
Начните с клонирования репозитория и создания docker-контейнера:
|
||||
|
||||
178
docs/README-TR.md
Normal file
@@ -0,0 +1,178 @@
|
||||
|
||||
<p align="center">
|
||||
<img src="../res/logo-header.svg" alt="RustDesk - Uzak masaüstü uygulamanız"><br>
|
||||
<a href="#free-public-servers">Sunucular</a> •
|
||||
<a href="#raw-steps-to-build">Derleme</a> •
|
||||
<a href="#how-to-build-with-docker">Docker ile Derleme</a> •
|
||||
<a href="#file-structure">Dosya Yapısı</a> •
|
||||
<a href="#snapshot">Ekran Görüntüleri</a><br>
|
||||
[<a href="docs/README-UA.md">Українська</a>] | [<a href="docs/README-CS.md">česky</a>] | [<a href="docs/README-ZH.md">中文</a>] | [<a href="docs/README-HU.md">Magyar</a>] | [<a href="docs/README-ES.md">Español</a>] | [<a href="docs/README-FA.md">فارسی</a>] | [<a href="docs/README-FR.md">Français</a>] | [<a href="docs/README-DE.md">Deutsch</a>] | [<a href="docs/README-PL.md">Polski</a>] | [<a href="docs/README-ID.md">Indonesian</a>] | [<a href="docs/README-FI.md">Suomi</a>] | [<a href="docs/README-ML.md">മലയാളം</a>] | [<a href="docs/README-JP.md">日本語</a>] | [<a href="docs/README-NL.md">Nederlands</a>] | [<a href="docs/README-IT.md">Italiano</a>] | [<a href="docs/README-RU.md">Русский</a>] | [<a href="docs/README-PTBR.md">Português (Brasil)</a>] | [<a href="docs/README-EO.md">Esperanto</a>] | [<a href="docs/README-KR.md">한국어</a>] | [<a href="docs/README-AR.md">العربي</a>] | [<a href="docs/README-VN.md">Tiếng Việt</a>] | [<a href="docs/README-DA.md">Dansk</a>] | [<a href="docs/README-GR.md">Ελληνικά</a>]<br>
|
||||
<b>README, <a href="https://github.com/rustdesk/rustdesk/tree/master/src/lang">RustDesk UI</a> ve <a href="https://github.com/rustdesk/doc.rustdesk.com">RustDesk Belge</a>'sini ana dilinize çevirmemiz için yardımınıza ihtiyacımız var</b>
|
||||
</p>
|
||||
|
||||
Bizimle sohbet edin: [Discord](https://discord.gg/nDceKgxnkV) | [Twitter](https://twitter.com/rustdesk) | [Reddit](https://www.reddit.com/r/rustdesk)
|
||||
|
||||
[](https://ko-fi.com/I2I04VU09)
|
||||
|
||||
Başka bir uzak masaüstü yazılımı daha, Rust dilinde yazılmış. Hemen kullanıma hazır, hiçbir yapılandırma gerektirmez. Verilerinizin tam kontrolünü elinizde tutarsınız ve güvenlikle ilgili endişeleriniz olmaz. Kendi buluş/iletme sunucumuzu kullanabilirsiniz, [kendi sunucunuzu kurabilirsiniz](https://rustdesk.com/server) veya [kendi buluş/iletme sunucunuzu yazabilirsiniz](https://github.com/rustdesk/rustdesk-server-demo).
|
||||
|
||||

|
||||
|
||||
RustDesk, herkesten katkıyı kabul eder. Başlamak için [CONTRIBUTING.md](docs/CONTRIBUTING-TR.md) belgesine göz atın.
|
||||
|
||||
[**SSS**](https://github.com/rustdesk/rustdesk/wiki/FAQ)
|
||||
|
||||
[**BİNARİ İNDİR**](https://github.com/rustdesk/rustdesk/releases)
|
||||
|
||||
[**NİGHTLY DERLEME**](https://github.com/rustdesk/rustdesk/releases/tag/nightly)
|
||||
|
||||
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
|
||||
alt="F-Droid'de Alın"
|
||||
height="80">](https://f-droid.org/en/packages/com.carriez.flutter_hbb)
|
||||
|
||||
## Bağımlılıklar
|
||||
|
||||
Masaüstü sürümleri GUI için
|
||||
|
||||
[Sciter](https://sciter.com/) veya Flutter kullanır, bu kılavuz sadece Sciter içindir.
|
||||
|
||||
Lütfen Sciter dinamik kütüphanesini kendiniz indirin.
|
||||
|
||||
[Windows](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.win/x64/sciter.dll) |
|
||||
[Linux](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so) |
|
||||
[macOS](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.osx/libsciter.dylib)
|
||||
|
||||
## Temel Derleme Adımları
|
||||
|
||||
- Rust geliştirme ortamınızı ve C++ derleme ortamınızı hazırlayın.
|
||||
|
||||
- [vcpkg](https://github.com/microsoft/vcpkg) yükleyin ve `VCPKG_ROOT` çevresel değişkenini doğru bir şekilde ayarlayın.
|
||||
|
||||
- Windows: vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static aom:x64-windows-static
|
||||
- Linux/macOS: vcpkg install libvpx libyuv opus aom
|
||||
|
||||
- `cargo run` komutunu çalıştırın.
|
||||
|
||||
## [Derleme](https://rustdesk.com/docs/en/dev/build/)
|
||||
|
||||
## Linux Üzerinde Derleme Nasıl Yapılır
|
||||
|
||||
### Ubuntu 18 (Debian 10)
|
||||
|
||||
```sh
|
||||
sudo apt install -y zip g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev \
|
||||
libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake make \
|
||||
libclang-dev ninja-build libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
|
||||
```
|
||||
|
||||
### openSUSE Tumbleweed
|
||||
|
||||
```sh
|
||||
sudo zypper install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libXfixes-devel cmake alsa-lib-devel gstreamer-devel gstreamer-plugins-base-devel xdotool-devel
|
||||
```
|
||||
|
||||
### Fedora 28 (CentOS 8)
|
||||
|
||||
```sh
|
||||
sudo yum -y install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libxdo-devel libXfixes-devel pulseaudio-libs-devel cmake alsa-lib-devel
|
||||
```
|
||||
|
||||
### Arch (Manjaro)
|
||||
|
||||
```sh
|
||||
sudo pacman -Syu --needed unzip git cmake gcc curl wget yasm nasm zip make pkg-config clang gtk3 xdotool libxcb libxfixes alsa-lib pipewire
|
||||
```
|
||||
|
||||
### vcpkg'yi Yükleyin
|
||||
|
||||
```sh
|
||||
git clone https://github.com/microsoft/vcpkg
|
||||
cd vcpkg
|
||||
git checkout 2023.04.15
|
||||
cd ..
|
||||
vcpkg/bootstrap-vcpkg.sh
|
||||
export VCPKG_ROOT=$HOME/vcpkg
|
||||
vcpkg/vcpkg install libvpx libyuv opus aom
|
||||
```
|
||||
|
||||
### libvpx'i Düzeltin (Fedora için)
|
||||
|
||||
```sh
|
||||
cd vcpkg/buildtrees/libvpx/src
|
||||
cd *
|
||||
./configure
|
||||
sed -i 's/CFLAGS+=-I/CFLAGS+=-fPIC -I/g' Makefile
|
||||
sed -i 's/CXXFLAGS+=-I/CXXFLAGS+=-fPIC -I/g' Makefile
|
||||
make
|
||||
cp libvpx.a $HOME/vcpkg/installed/x64-linux/lib/
|
||||
cd
|
||||
```
|
||||
|
||||
### Derleme
|
||||
|
||||
```sh
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
||||
source $HOME/.cargo/env
|
||||
git clone https://github.com/rustdesk/rustdesk
|
||||
cd rustdesk
|
||||
mkdir -p target/debug
|
||||
wget https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so
|
||||
mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
## Docker ile Derleme Nasıl Yapılır
|
||||
|
||||
Öncelikle deposunu klonlayın ve Docker konteynerini oluşturun:
|
||||
|
||||
```sh
|
||||
git clone https://github.com/rustdesk/rustdesk
|
||||
cd rustdesk
|
||||
docker build -t "rustdesk-builder" .
|
||||
```
|
||||
|
||||
Ardından, uygulamayı derlemek için her seferinde aşağıdaki komutu çalıştırın:
|
||||
|
||||
```sh
|
||||
docker run --rm -it -v $PWD:/home/user/rustdesk -v rustdesk-git-cache:/home/user/.cargo/git -v rustdesk-registry-cache:/home/user/.cargo/registry -e PUID="$(id -u)" -e PGID="$(id -g)" rustdesk-builder
|
||||
```
|
||||
|
||||
İlk derleme, bağımlılıklar önbelleğe alınmadan önce daha uzun sürebilir, sonraki derlemeler daha hızlı olacaktır. Ayrıca, derleme komutuna isteğe bağlı argümanlar belirtmeniz gerekiyorsa, bunu
|
||||
|
||||
komutun sonunda `<İSTEĞE BAĞLI-ARGÜMANLAR>` pozisyonunda yapabilirsiniz. Örneğin, optimize edilmiş bir sürümü derlemek isterseniz, yukarıdaki komutu çalıştırdıktan sonra `--release` ekleyebilirsiniz. Oluşan yürütülebilir dosya sisteminizdeki hedef klasöründe bulunacak ve şu komutla çalıştırılabilir:
|
||||
|
||||
```sh
|
||||
target/debug/rustdesk
|
||||
```
|
||||
|
||||
Veya, yayın yürütülebilir dosyası çalıştırılıyorsa:
|
||||
|
||||
```sh
|
||||
target/release/rustdesk
|
||||
```
|
||||
|
||||
Lütfen bu komutları RustDesk deposunun kökünden çalıştırdığınızdan emin olun, aksi takdirde uygulama gereken kaynakları bulamayabilir. Ayrıca, `install` veya `run` gibi diğer cargo altkomutları şu anda bu yöntem aracılığıyla desteklenmemektedir, çünkü bunlar programı konteyner içinde kurar veya çalıştırır ve ana makinede değil.
|
||||
|
||||
## Dosya Yapısı
|
||||
|
||||
- **[libs/hbb_common](https://github.com/rustdesk/rustdesk/tree/master/libs/hbb_common)**: video kodlayıcı, yapılandırma, tcp/udp sarmalayıcı, protobuf, dosya transferi için fs işlevleri ve diğer bazı yardımcı işlevler
|
||||
- **[libs/scrap](https://github.com/rustdesk/rustdesk/tree/master/libs/scrap)**: ekran yakalama
|
||||
- **[libs/enigo](https://github.com/rustdesk/rustdesk/tree/master/libs/enigo)**: platforma özgü klavye/fare kontrolü
|
||||
- **[src/ui](https://github.com/rustdesk/rustdesk/tree/master/src/ui)**: GUI
|
||||
- **[src/server](https://github.com/rustdesk/rustdesk/tree/master/src/server)**: ses/pasta/klavye/video hizmetleri ve ağ bağlantıları
|
||||
- **[src/client.rs](https://github.com/rustdesk/rustdesk/tree/master/src/client.rs)**: bir eş bağlantısı başlatır
|
||||
- **[src/rendezvous_mediator.rs](https://github.com/rustdesk/rustdesk/tree/master/src/rendezvous_mediator.rs)**: [rustdesk-server](https://github.com/rustdesk/rustdesk-server) ile iletişim kurar, uzak doğrudan (TCP delik vurma) veya iletme bağlantısını bekler
|
||||
- **[src/platform](https://github.com/rustdesk/rustdesk/tree/master/src/platform)**: platforma özgü kod
|
||||
- **[flutter](https://github.com/rustdesk/rustdesk/tree/master/flutter)**: mobil için Flutter kodu
|
||||
- **[flutter/web/js](https://github.com/rustdesk/rustdesk/tree/master/flutter/web/js)**: Flutter web istemcisi için JavaScript
|
||||
|
||||
## Ekran Görüntüleri
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
```
|
||||
@@ -1,75 +1,59 @@
|
||||
<p align="center">
|
||||
<img src="../res/logo-header.svg" alt="RustDesk - Ваш віддалений робочий стіл"><br>
|
||||
<img src="../res/logo-header.svg" alt="RustDesk - Ваша віддалена стільниця"><br>
|
||||
<a href="#безкоштовні-загальнодоступні-сервери">Сервери</a> •
|
||||
<a href="#первинні-кроки-для-складання">Складання</a> •
|
||||
<a href="#кроки-для-збірки">Збирання</a> •
|
||||
<a href="#як-зібрати-за-допомогою-docker">Docker</a> •
|
||||
<a href="#структура-файлів">Структура</a> •
|
||||
<a href="#знімки">Знімки</a><br>
|
||||
[<a href="../README.md">English</a>] | [<a href="README-CS.md">česky</a>] | [<a href="README-ZH.md">中文</a>] | [<a href="README-HU.md">Magyar</a>] | [<a href="README-ES.md">Español</a>] | [<a href="README-FA.md">فارسی</a>] | [<a href="README-FR.md">Français</a>] | [<a href="README-DE.md">Deutsch</a>] | [<a href="README-PL.md">Polski</a>] | [<a href="README-ID.md">Indonesian</a>] | [<a href="README-FI.md">Suomi</a>] | [<a href="README-ML.md">മലയാളം</a>] | [<a href="README-JP.md">日本語</a>] | [<a href="README-NL.md">Nederlands</a>] | [<a href="README-IT.md">Italiano</a>] | [<a href="README-RU.md">Русский</a>] | [<a href="README-PTBR.md">Português (Brasil)</a>] | [<a href="README-EO.md">Esperanto</a>] | [<a href="README-KR.md">한국어</a>] | [<a href="README-AR.md">العربي</a>] | [<a href="README-VN.md">Tiếng Việt</a>] | [<a href="README-GR.md">Ελληνικά</a>]<br>
|
||||
<b>Нам потрібна ваша допомога для перекладу цього README і <a href="https://github.com/rustdesk/rustdesk/tree/master/src/rustdesk/tree/master/src/lang">RustDesk UI</a> на вашу рідну мову</B>
|
||||
[<a href="../README.md">English</a>] | [<a href="docs/README-CS.md">česky</a>] | [<a href="docs/README-ZH.md">中文</a>] | [<a href="docs/README-HU.md">Magyar</a>] | [<a href="docs/README-ES.md">Español</a>] | [<a href="docs/README-FA.md">فارسی</a>] | [<a href="docs/README-FR.md">Français</a>] | [<a href="docs/README-DE.md">Deutsch</a>] | [<a href="docs/README-PL.md">Polski</a>] | [<a href="docs/README-ID.md">Indonesian</a>] | [<a href="docs/README-FI.md">Suomi</a>] | [<a href="docs/README-ML.md">മലയാളം</a>] | [<a href="docs/README-JP.md">日本語</a>] | [<a href="docs/README-NL.md">Nederlands</a>] | [<a href="docs/README-IT.md">Italiano</a>] | [<a href="docs/README-RU.md">Русский</a>] | [<a href="docs/README-PTBR.md">Português (Brasil)</a>] | [<a href="docs/README-EO.md">Esperanto</a>] | [<a href="docs/README-KR.md">한국어</a>] | [<a href="docs/README-AR.md">العربي</a>] | [<a href="docs/README-VN.md">Tiếng Việt</a>] | [<a href="docs/README-DA.md">Dansk</a>] | [<a href="docs/README-GR.md">Ελληνικά</a>] | [<a href="docs/README-TR.md">Türkçe</a>]<br>
|
||||
<b>Нам потрібна ваша допомога для перекладу цього README, <a href="https://github.com/rustdesk/rustdesk/tree/master/src/lang">інтерфейсу</a> та <a href="https://github.com/rustdesk/doc.rustdesk.com">документації</a> RustDesk на вашу рідну мову</B>
|
||||
</p>
|
||||
|
||||
Спілкування з нами: [Discord](https://discord.gg/nDceKgxnkV) | [Twitter](https://twitter.com/rustdesk) | [Reddit](https://www.reddit.com/r/rustdesk)
|
||||
|
||||
[](https://ko-fi.com/I2I04VU09)
|
||||
|
||||
Ще одне програмне забезпечення для віддаленого робочого столу, написане на Rust. Працює з коробки, не потребує налаштування. Ви повністю контролюєте свої дані, не турбуючись про безпеку. Ви можете використовувати наш сервер ретрансляції, [налаштувати свій власний](https://rustdesk.com/server), або [написати свій власний сервер ретрансляції](https://github.com/rustdesk/rustdesk-server-demo).
|
||||
[](https://console.algora.io/org/rustdesk/bounties?status=open)
|
||||
|
||||
Ще один застосунок для віддаленого керування стільницею, написаний на Rust. Працює з коробки, не потребує налаштування. Ви повністю контролюєте свої дані, не турбуючись про безпеку. Ви можете використовувати наш сервер ретрансляції, [налаштувати свій власний](https://rustdesk.com/server), або [написати свій власний сервер ретрансляції](https://github.com/rustdesk/rustdesk-server-demo).
|
||||
|
||||

|
||||
|
||||
RustDesk вітає внесок кожного. Дивіться [`docs/CONTRIBUTING.md`](CONTRIBUTING.md) для допомоги на початку роботи.
|
||||
RustDesk вітає внесок кожного. Ознайомтеся з [CONTRIBUTING.md](docs/CONTRIBUTING.md), щоб отримати допомогу на початковому етапі.
|
||||
|
||||
[**FAQ**](https://github.com/rustdesk/rustdesk/wiki/FAQ)
|
||||
[**ЧаПи**](https://github.com/rustdesk/rustdesk/wiki/FAQ)
|
||||
|
||||
[**Як працює RustDesk?**](https://github.com/rustdesk/rustdesk/wiki/How-does-RustDesk-work%3F)
|
||||
[**ЗАВАНТАЖЕННЯ ЗАСТОСУНКУ**](https://github.com/rustdesk/rustdesk/releases)
|
||||
|
||||
[**ЗАВАНТАЖИТИ ЗАСТОСУНОК**](https://github.com/rustdesk/rustdesk/releases)
|
||||
[**НІЧНІ ЗБІРКИ**](https://github.com/rustdesk/rustdesk/releases/tag/nightly)
|
||||
|
||||
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
|
||||
alt="Get it on F-Droid"
|
||||
height="80">](https://f-droid.org/en/packages/com.carriez.flutter_hbb)
|
||||
|
||||
## Безкоштовні загальнодоступні сервери
|
||||
|
||||
Нижче наведені сервери, для безкоштовного використання, вони можуть змінюватися з часом. Якщо ви не перебуваєте поруч з одним із них, ваша мережа може працювати повільно.
|
||||
| Місцезнаходження | Постачальник | Технічні характеристики |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Південна Корея (Сеул) | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Сінгапур | Vultr | 1 vCPU / 1GB RAM |
|
||||
| США (Даллас) | Vultr | 1 vCPU / 1GB RAM
|
||||
| Німеччина | Hetzner | 2 VCPU / 4GB RAM |
|
||||
| Німеччина | Codext | 4 vCPU / 8GB RAM |
|
||||
| Україна (Київ) | [dc.volia](https://dc.volia.com) | 2 vCPU / 4GB RAM |
|
||||
|
||||
## Dev Container
|
||||
|
||||
[](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/rustdesk/rustdesk)
|
||||
|
||||
Якщо у вас уже встановлено VS Code і Docker, ви можете натиснути значок вище, щоб почати. Клацання призведе до того, що VS Code автоматично встановить розширення Dev Containers, якщо це необхідно, клонує виcхідний код у том контейнера та розгорне контейнер dev для використання.
|
||||
|
||||
Дивіться [DEVCONTAINER.md](docs/DEVCONTAINER.md) для додаткової інфо.
|
||||
|
||||
## Залежності
|
||||
|
||||
Настільні версії використовують [sciter](https://sciter.com/) для графічного інтерфейсу, завантажте динамічну бібліотеку sciter самостійно.
|
||||
Стільничні версії використовують Flutter чи Sciter (застаріле) для графічного інтерфейсу. Ця інструкція лише для Sciter, оскільки він є більш простим та дружнім для початківців. Перегляньте [CI](https://github.com/rustdesk/rustdesk/blob/master/.github/workflows/flutter-build.yml) для збірки версії на Flutter.
|
||||
|
||||
Будь ласка, завантажте динамічну бібліотеку Sciter самостійно.
|
||||
|
||||
[Windows](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.win/x64/sciter.dll) |
|
||||
[Linux](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so) |
|
||||
[MacOS](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.osx/libsciter.dylib)
|
||||
[macOS](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.osx/libsciter.dylib)
|
||||
|
||||
Мобільні версії використовують Flutter. У майбутньому ми перенесемо настільну версію зі Sciter на Flutter.
|
||||
## Кроки для збірки
|
||||
|
||||
## Первинні кроки для складання
|
||||
|
||||
- Підготуйте середовище розробки Rust і середовище збірки C++.
|
||||
- Підготуйте середовище розробки Rust і середовище збирання C++.
|
||||
|
||||
- Встановіть [vcpkg](https://github.com/microsoft/vcpkg), і правильно встановіть змінну `VCPKG_ROOT`.
|
||||
|
||||
- Windows: vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static aom:x64-windows-static
|
||||
- Linux/MacOS: vcpkg install libvpx libyuv opus aom
|
||||
- Linux/macOS: vcpkg install libvpx libyuv opus aom
|
||||
|
||||
- Запустіть `cargo run`
|
||||
|
||||
## [Збирання](https://rustdesk.com/docs/en/dev/build/)
|
||||
|
||||
## Як зібрати на Linux
|
||||
|
||||
### Ubuntu 18 (Debian 10)
|
||||
@@ -80,11 +64,12 @@ sudo apt install -y zip g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxc
|
||||
libclang-dev ninja-build libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
|
||||
```
|
||||
|
||||
### openSUSE Tumbleweed
|
||||
### openSUSE Tumbleweed
|
||||
|
||||
```sh
|
||||
sudo zypper install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libXfixes-devel cmake alsa-lib-devel gstreamer-devel gstreamer-plugins-base-devel xdotool-devel
|
||||
```
|
||||
|
||||
### Fedora 28 (CentOS 8)
|
||||
|
||||
```sh
|
||||
@@ -103,7 +88,7 @@ sudo pacman -Syu --needed unzip git cmake gcc curl wget yasm nasm zip make pkg-c
|
||||
git clone https://github.com/microsoft/vcpkg
|
||||
cd vcpkg
|
||||
git checkout 2023.04.15
|
||||
cd ...
|
||||
cd ..
|
||||
vcpkg/bootstrap-vcpkg.sh
|
||||
export VCPKG_ROOT=$HOME/vcpkg
|
||||
vcpkg/vcpkg install libvpx libyuv opus aom
|
||||
@@ -122,7 +107,7 @@ cp libvpx.a $HOME/vcpkg/installed/x64-linux/lib/
|
||||
cd
|
||||
```
|
||||
|
||||
### Збірка
|
||||
### Збирання
|
||||
|
||||
```sh
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
||||
@@ -135,10 +120,6 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### Змініть Wayland на X11 (Xorg)
|
||||
|
||||
RustDesk не підтримує Wayland. Дивіться [цей документ](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) для налаштування Xorg як сеансу GNOME за замовчуванням.
|
||||
|
||||
## Як зібрати за допомогою Docker
|
||||
|
||||
Почніть з клонування сховища та створення docker-контейнера:
|
||||
@@ -149,7 +130,7 @@ cd rustdesk
|
||||
docker build -t "rustdesk-builder" .
|
||||
```
|
||||
|
||||
Потім кожного разу, коли вам потрібно зібрати додаток, запускайте таку команду:
|
||||
Надалі щоразу, коли вам буде потрібно зібрати застосунок, запускайте таку команду:
|
||||
|
||||
```sh
|
||||
docker run --rm -it -v $PWD:/home/user/rustdesk -v rustdesk-git-cache:/home/user/.cargo/git -v rustdesk-registry-cache:/home/user/.cargo/registry -e PUID="$(id -u)" -e PGID="$(id -g)" rustdesk-builder
|
||||
@@ -174,6 +155,7 @@ target/release/rustdesk
|
||||
- **[libs/hbb_common](https://github.com/rustdesk/rustdesk/tree/master/libs/hbb_common)**: відеокодек, конфіг, обгортка tcp/udp, protobuf, функції fs для передавання файлів і деякі інші службові функції
|
||||
- **[libs/scrap](https://github.com/rustdesk/rustdesk/tree/master/libs/scrap)**: захоплення екрана
|
||||
- **[libs/enigo](https://github.com/rustdesk/rustdesk/tree/master/libs/enigo)**: специфічне для платформи керування клавіатурою/мишею
|
||||
- **[libs/clipboard](https://github.com/rustdesk/rustdesk/tree/master/libs/clipboard)**: реалізація копіювання та вставлення файлів для Windows, Linux, macOS.
|
||||
- **[src/ui](https://github.com/rustdesk/rustdesk/tree/master/src/ui)**: графічний інтерфейс користувача
|
||||
- **[src/server](https://github.com/rustdesk/rustdesk/tree/master/src/server)**: сервіси аудіо/буфера обміну/вводу/відео та мережевих підключень
|
||||
- **[src/client.rs](https://github.com/rustdesk/rustdesk/tree/master/src/client.rs)**: однорангове з'єднання
|
||||
|
||||
@@ -27,16 +27,6 @@ Mọi người đều đuợc chào đón để đóng góp vào RustDesk. Để
|
||||
alt="Get it on F-Droid"
|
||||
height="80">](https://f-droid.org/en/packages/com.carriez.flutter_hbb)
|
||||
|
||||
## Các Máy Chủ Công Khai Miễn Phí
|
||||
|
||||
Dưới đây là những máy chủ mà bạn có thể sử dụng mà không mất phí, chú ý là máy chủ có thể thay đổi theo thời gian. Nếu địa điểm của bạn không gần một trong số những máy chủ này, thì kết nói có thể chậm.
|
||||
|
||||
| Địa điểm | Nhà cung cấp | Cấu hình |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Seoul | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Germany | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Germany | Codext | 4 vCPU / 8GB RAM |
|
||||
|
||||
## Dependencies
|
||||
|
||||
Phiên bản cho máy tính sử dụng [sciter](https://sciter.com/) cho giao diện của phần mềm, vậy nên bạn cần tự tải về thư viện sciter.
|
||||
@@ -118,10 +108,6 @@ mv libsciter-gtk.so target/debug
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### Chuyển từ Wayland sang X11 (Xorg)
|
||||
|
||||
RustDesk hiện không hỗ trợ Wayland. Hãy xem [đường linh ở đây](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) cách để cài đặt Xorg làm session mặc định của GNOME.
|
||||
|
||||
## Cách để build sử dụng Docker
|
||||
|
||||
Bắt đầu bằng cách sao chép repo này về máy tính và build cái Docker cointainer:
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<p align="center">
|
||||
<img src="../res/logo-header.svg" alt="RustDesk - Your remote desktop"><br>
|
||||
<a href="#免费公共服务器">服务器</a> •
|
||||
<a href="#免费的公共服务器">服务器</a> •
|
||||
<a href="#基本构建步骤">编译</a> •
|
||||
<a href="#使用Docker编译">Docker</a> •
|
||||
<a href="#使用-Docker-编译">Docker</a> •
|
||||
<a href="#文件结构">结构</a> •
|
||||
<a href="#截图">截图</a><br>
|
||||
[<a href="../README.md">English</a>] | [<a href="README-UA.md">Українська</a>] | [<a href="README-CS.md">česky</a>] | [<a href="README-HU.md">Magyar</a>] | [<a href="README-ES.md">Español</a>] | [<a href="README-FA.md">فارسی</a>] | [<a href="README-FR.md">Français</a>] | [<a href="README-DE.md">Deutsch</a>] | [<a href="README-PL.md">Polski</a>] | [<a href="README-ID.md">Indonesian</a>] | [<a href="README-FI.md">Suomi</a>] | [<a href="README-ML.md">മലയാളം</a>] | [<a href="README-JP.md">日本語</a>] | [<a href="README-NL.md">Nederlands</a>] | [<a href="README-IT.md">Italiano</a>] | [<a href="README-RU.md">Русский</a>] | [<a href="README-PTBR.md">Português (Brasil)</a>] | [<a href="README-EO.md">Esperanto</a>] | [<a href="README-KR.md">한국어</a>] | [<a href="README-AR.md">العربي</a>] | [<a href="README-VN.md">Tiếng Việt</a>] | [<a href="README-GR.md">Ελληνικά</a>]<br>
|
||||
@@ -16,19 +16,19 @@ Chat with us: [知乎](https://www.zhihu.com/people/rustdesk) | [Discord](https:
|
||||
或者[自己设置](https://rustdesk.com/server),
|
||||
亦或者[开发您的版本](https://github.com/rustdesk/rustdesk-server-demo)。
|
||||
|
||||
欢迎大家贡献代码, 请看 [`docs/CONTRIBUTING.md`](CONTRIBUTING.md).
|
||||

|
||||
|
||||
[**可执行程序下载**](https://github.com/rustdesk/rustdesk/releases)
|
||||
RustDesk 期待各位的贡献. 如何参与开发? 详情请看 [CONTRIBUTING.md](CONTRIBUTING.md).
|
||||
|
||||
## 免费的公共服务器
|
||||
[**FAQ**](https://github.com/rustdesk/rustdesk/wiki/FAQ)
|
||||
|
||||
以下是您可以使用的、免费的、会随时更新的公共服务器列表,在国内也许网速会很慢或者无法访问。
|
||||
[**BINARY DOWNLOAD**](https://github.com/rustdesk/rustdesk/releases)
|
||||
|
||||
| Location | Vendor | Specification |
|
||||
| --------- | ------------- | ------------------ |
|
||||
| Seoul | AWS lightsail | 1 vCPU / 0.5GB RAM |
|
||||
| Germany | Hetzner | 2 vCPU / 4GB RAM |
|
||||
| Germany | Codext | 4 vCPU / 8GB RAM |
|
||||
[**NIGHTLY BUILD**](https://github.com/rustdesk/rustdesk/releases/tag/nightly)
|
||||
|
||||
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
|
||||
alt="Get it on F-Droid"
|
||||
height="80">](https://f-droid.org/en/packages/com.carriez.flutter_hbb)
|
||||
|
||||
## 依赖
|
||||
|
||||
@@ -38,16 +38,14 @@ Chat with us: [知乎](https://www.zhihu.com/people/rustdesk) | [Discord](https:
|
||||
[Linux](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so) |
|
||||
[macOS](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.osx/libsciter.dylib)
|
||||
|
||||
移动版本使用Flutter,未来会将桌面版本从Sciter迁移到Flutter。
|
||||
|
||||
## 基本构建步骤
|
||||
|
||||
- 请准备好 Rust 开发环境和 C++编译环境
|
||||
- 请准备好 Rust 开发环境和 C++ 编译环境
|
||||
|
||||
- 安装[vcpkg](https://github.com/microsoft/vcpkg), 正确设置`VCPKG_ROOT`环境变量
|
||||
- 安装 [vcpkg](https://github.com/microsoft/vcpkg), 正确设置 `VCPKG_ROOT` 环境变量
|
||||
|
||||
- Windows: vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static aom:x64-windows-static
|
||||
- Linux/Osx: vcpkg install libvpx libyuv opus aom
|
||||
- Linux/macOS: vcpkg install libvpx libyuv opus aom
|
||||
|
||||
- 运行 `cargo run`
|
||||
|
||||
@@ -58,7 +56,15 @@ Chat with us: [知乎](https://www.zhihu.com/people/rustdesk) | [Discord](https:
|
||||
### Ubuntu 18 (Debian 10)
|
||||
|
||||
```sh
|
||||
sudo apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake
|
||||
sudo apt install -y zip g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev \
|
||||
libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake make \
|
||||
libclang-dev ninja-build libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
|
||||
```
|
||||
|
||||
### openSUSE Tumbleweed
|
||||
|
||||
```sh
|
||||
sudo zypper install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libXfixes-devel cmake alsa-lib-devel gstreamer-devel gstreamer-plugins-base-devel xdotool-devel
|
||||
```
|
||||
|
||||
### Fedora 28 (CentOS 8)
|
||||
@@ -108,24 +114,19 @@ cd rustdesk
|
||||
mkdir -p target/debug
|
||||
wget https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so
|
||||
mv libsciter-gtk.so target/debug
|
||||
cargo run
|
||||
VCPKG_ROOT=$HOME/vcpkg cargo run
|
||||
```
|
||||
|
||||
### 把 Wayland 修改成 X11 (Xorg)
|
||||
|
||||
RustDesk 暂时不支持 Wayland,不过正在积极开发中。
|
||||
> [点我](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/)
|
||||
查看 如何将Xorg设置成默认的GNOME session
|
||||
|
||||
## 使用 Docker 编译
|
||||
|
||||
### 构建Docker容器
|
||||
克隆版本库并构建 Docker 容器:
|
||||
|
||||
```sh
|
||||
git clone https://github.com/rustdesk/rustdesk # 克隆Github存储库
|
||||
cd rustdesk # 进入文件夹
|
||||
docker build -t "rustdesk-builder" . # 构建容器
|
||||
```
|
||||
|
||||
请注意:
|
||||
* 针对国内网络访问问题,可以做以下几点优化:
|
||||
1. Dockerfile 中修改系统的源到国内镜像
|
||||
@@ -164,8 +165,9 @@ docker build -t "rustdesk-builder" . # 构建容器
|
||||
docker build -t "rustdesk-builder" . --build-arg http_proxy=http://host:port --build-arg https_proxy=http://host:port
|
||||
```
|
||||
|
||||
### 构建RustDesk程序
|
||||
容器构建完成后,运行下列指令以完成对RustDesk应用程序的构建:
|
||||
### 构建 RustDesk 程序
|
||||
|
||||
然后, 每次需要构建应用程序时, 运行以下命令:
|
||||
|
||||
```sh
|
||||
docker run --rm -it -v $PWD:/home/user/rustdesk -v rustdesk-git-cache:/home/user/.cargo/git -v rustdesk-registry-cache:/home/user/.cargo/registry -e PUID="$(id -u)" -e PGID="$(id -g)" rustdesk-builder
|
||||
@@ -180,25 +182,25 @@ docker run --rm -it -v $PWD:/home/user/rustdesk -v rustdesk-git-cache:/home/user
|
||||
groupmod: Permission denied.
|
||||
groupmod: cannot lock /etc/group; try again later.
|
||||
```
|
||||
> **原因:** 容器的entrypoint脚本会检测UID和GID,在度判和给定的环境变量的不一致时,会强行修改user的UID和GID并重新运行。但在重启后读不到环境中的UID和GID,然后再次进入判错重启环节
|
||||
> **原因:** 容器的 entrypoint 脚本会检测 UID 和 GID,在度判和给定的环境变量的不一致时,会强行修改 user 的 UID 和 GID 并重新运行。但在重启后读不到环境中的 UID 和 GID,然后再次进入判错重启环节
|
||||
|
||||
|
||||
### 运行RustDesk程序
|
||||
### 运行 RustDesk 程序
|
||||
|
||||
生成的可执行程序在target目录下,可直接通过指令运行调试(Debug)版本的RustDesk:
|
||||
生成的可执行程序在 target 目录下,可直接通过指令运行调试 (Debug) 版本的 RustDesk:
|
||||
```sh
|
||||
target/debug/rustdesk
|
||||
```
|
||||
|
||||
或者您想运行发行(Release)版本:
|
||||
或者您想运行发行 (Release) 版本:
|
||||
|
||||
```sh
|
||||
target/release/rustdesk
|
||||
```
|
||||
|
||||
请注意:
|
||||
* 请保证您运行的目录是在RustDesk库的根目录内,否则软件会读不到文件。
|
||||
* `install`、`run`等Cargo的子指令在容器内不可用,宿主机才行。
|
||||
* 请保证您运行的目录是在 RustDesk 库的根目录内,否则软件会读不到文件。
|
||||
* `install`、`run`等 Cargo 的子指令在容器内不可用,宿主机才行。
|
||||
|
||||
## 文件结构
|
||||
|
||||
|
||||
11
docs/SECURITY-IT.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# Policy sicurezza
|
||||
|
||||
## Segnalazione di una vulnerabilità
|
||||
|
||||
Attribuiamo grande importanza alla sicurezza del progetto.
|
||||
Incoraggiamo tutti gli utenti a segnalare eventuali vulnerabilità di sicurezza che ci scoprono.
|
||||
Se trovi una vulnerabilità nel progetto RustDesk, segnalala responsabilmente inviando un'email a info@rustdesk.com.
|
||||
|
||||
Al momento non abbiamo un programma di taglia sui bug.
|
||||
Siamo una piccola squadra che cerca di risolvere un grosso problema.
|
||||
Ti esortiamo a segnalare responsabilmente tutte le vulnerabilità in modo da poter continuare a sviluppare un'applicazione sicura per l'intera comunità.
|
||||
9
docs/SECURITY-JP.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# セキュリティポリシー
|
||||
|
||||
## 脆弱性の報告
|
||||
|
||||
私たちはプロジェクトのセキュリティを非常に重視しています。私たちは、すべてのユーザーが脆弱性を発見した場合、私たちに報告することを奨励しています。
|
||||
RustDesk プロジェクトにセキュリティの脆弱性を発見した場合は、info@rustdesk.com までメールで責任を持って報告してください。
|
||||
|
||||
現時点では、バグ報奨金制度はありません。私たちは大きな問題を解決しようとしている小さなチームです。コミュニティ全体のために安全なアプリケーションを作り続けることができるよう、
|
||||
責任を持って脆弱性を報告してください。
|
||||
9
docs/SECURITY-TR.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# Güvenlik Politikası
|
||||
|
||||
## Bir Güvenlik Açığı Bildirme
|
||||
|
||||
Projemiz için güvenliği çok önemsiyoruz. Kullanıcıların keşfettikleri herhangi bir güvenlik açığını bize bildirmelerini teşvik ediyoruz.
|
||||
Eğer RustDesk projesinde bir güvenlik açığı bulursanız, lütfen info@rustdesk.com adresine sorumlu bir şekilde bildirin.
|
||||
|
||||
Şu an için bir hata ödül programımız bulunmamaktadır. Büyük bir sorunu çözmeye çalışan küçük bir ekibiz. Herhangi bir güvenlik açığını sorumlu bir şekilde bildirmenizi rica ederiz,
|
||||
böylece tüm topluluk için güvenli bir uygulama oluşturmaya devam edebiliriz.
|
||||
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 318 KiB After Width: | Height: | Size: 318 KiB |
|
Before Width: | Height: | Size: 422 KiB After Width: | Height: | Size: 419 KiB |
|
Before Width: | Height: | Size: 452 KiB After Width: | Height: | Size: 451 KiB |
|
Before Width: | Height: | Size: 379 KiB After Width: | Height: | Size: 378 KiB |
|
Before Width: | Height: | Size: 267 KiB After Width: | Height: | Size: 266 KiB |
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"id": "com.rustdesk.RustDesk",
|
||||
"runtime": "org.freedesktop.Platform",
|
||||
"runtime-version": "21.08",
|
||||
"runtime-version": "23.08",
|
||||
"sdk": "org.freedesktop.Sdk",
|
||||
"command": "rustdesk",
|
||||
"icon": "share/rustdesk/files/rustdesk.png",
|
||||
"icon": "share/icons/hicolor/scalable/apps/rustdesk.svg",
|
||||
"modules": [
|
||||
"shared-modules/libappindicator/libappindicator-gtk3-12.10.json",
|
||||
"xdotool.json",
|
||||
@@ -12,24 +12,25 @@
|
||||
"name": "rustdesk",
|
||||
"buildsystem": "simple",
|
||||
"build-commands": [
|
||||
"bsdtar -zxvf rustdesk-1.2.0.deb",
|
||||
"bsdtar -zxvf rustdesk-1.2.4.deb",
|
||||
"tar -xvf ./data.tar.xz",
|
||||
"cp -r ./usr/* /app/",
|
||||
"mkdir -p /app/bin && ln -s /app/lib/rustdesk/rustdesk /app/bin/rustdesk",
|
||||
"mv /app/share/applications/rustdesk.desktop /app/share/applications/com.rustdesk.RustDesk.desktop",
|
||||
"sed -i '/^Icon=/ c\\Icon=com.rustdesk.RustDesk' /app/share/applications/com.rustdesk.RustDesk.desktop",
|
||||
"sed -i '/^Icon=/ c\\Icon=com.rustdesk.RustDesk' /app/share/applications/rustdesk-link.desktop",
|
||||
"for size in 16 24 32 48 64 128 256 512; do\n rsvg-convert -w $size -h $size -f png -o $size.png logo.svg\n install -Dm644 $size.png /app/share/icons/hicolor/${size}x${size}/apps/com.rustdesk.RustDesk.png\n done"
|
||||
"mv /app/share/icons/hicolor/scalable/apps/rustdesk.svg /app/share/icons/hicolor/scalable/apps/com.rustdesk.RustDesk.svg",
|
||||
"for size in 16 24 32 48 64 128 256 512; do\n rsvg-convert -w $size -h $size -f png -o $size.png scalable.svg\n install -Dm644 $size.png /app/share/icons/hicolor/${size}x${size}/apps/com.rustdesk.RustDesk.png\n done"
|
||||
],
|
||||
"cleanup": ["/include", "/lib/pkgconfig", "/share/gtk-doc"],
|
||||
"sources": [
|
||||
{
|
||||
"type": "file",
|
||||
"path": "../rustdesk-1.2.0.deb"
|
||||
"path": "../rustdesk-1.2.4.deb"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"path": "../res/logo.svg"
|
||||
"path": "../res/scalable.svg"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
1
flutter/.gitignore
vendored
@@ -32,7 +32,6 @@
|
||||
/build/
|
||||
|
||||
# Web related
|
||||
lib/generated_plugin_registrant.dart
|
||||
|
||||
# Symbolication related
|
||||
app.*.symbols
|
||||
|
||||
@@ -13,4 +13,4 @@ A few resources to get you started if this is your first Flutter project:
|
||||
|
||||
For help getting started with Flutter development, view the
|
||||
[online documentation](https://docs.flutter.dev/), which offers tutorials,
|
||||
samples, guidance on mobile development, and a full API reference.
|
||||
samples and guidance on mobile development, and a full API reference.
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
import com.google.protobuf.gradle.*
|
||||
plugins {
|
||||
id "com.google.protobuf" version "0.9.4"
|
||||
}
|
||||
|
||||
def keystoreProperties = new Properties()
|
||||
def keystorePropertiesFile = rootProject.file('key.properties')
|
||||
if (keystorePropertiesFile.exists()) {
|
||||
@@ -31,10 +36,33 @@ apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||
|
||||
dependencies {
|
||||
implementation 'com.google.protobuf:protobuf-javalite:3.20.1'
|
||||
}
|
||||
|
||||
protobuf {
|
||||
protoc {
|
||||
artifact = 'com.google.protobuf:protoc:3.20.1'
|
||||
}
|
||||
|
||||
generateProtoTasks {
|
||||
all().configureEach { task ->
|
||||
task.builtins {
|
||||
java {
|
||||
option "lite"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 33
|
||||
sourceSets {
|
||||
main.java.srcDirs += 'src/main/kotlin'
|
||||
|
||||
main.proto.srcDirs += '../../../libs/hbb_common/protos'
|
||||
main.proto.includes += "message.proto"
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
@@ -46,7 +74,7 @@ android {
|
||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||
applicationId "com.carriez.flutter_hbb"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 31
|
||||
targetSdkVersion 33
|
||||
versionCode flutterVersionCode.toInteger()
|
||||
versionName flutterVersionName
|
||||
}
|
||||
@@ -65,6 +93,7 @@ android {
|
||||
// TODO: Add your own signing config for the release build.
|
||||
// Signing with the debug keys for now, so `flutter run --release` works.
|
||||
signingConfig signingConfigs.release
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -75,7 +104,7 @@ flutter {
|
||||
|
||||
dependencies {
|
||||
implementation "androidx.media:media:1.6.0"
|
||||
implementation 'com.github.getActivity:XXPermissions:16.2'
|
||||
implementation 'com.github.getActivity:XXPermissions:18.5'
|
||||
implementation("org.jetbrains.kotlin:kotlin-stdlib") { version { strictly("$kotlin_version") } }
|
||||
}
|
||||
|
||||
|
||||
4
flutter/android/app/proguard-rules
Normal file
@@ -0,0 +1,4 @@
|
||||
# Keep class members from protobuf generated code.
|
||||
-keepclassmembers class * extends com.google.protobuf.GeneratedMessageLite {
|
||||
<fields>;
|
||||
}
|
||||
@@ -61,6 +61,14 @@
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
|
||||
<!-- Intent for deep linking-->
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:scheme="rustdesk" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
@@ -81,4 +89,4 @@
|
||||
android:value="2" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
</manifest>
|
||||
|
||||
@@ -10,12 +10,27 @@ import android.accessibilityservice.AccessibilityService
|
||||
import android.accessibilityservice.GestureDescription
|
||||
import android.graphics.Path
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.util.Log
|
||||
import android.widget.EditText
|
||||
import android.view.accessibility.AccessibilityEvent
|
||||
import android.view.ViewGroup.LayoutParams
|
||||
import android.view.accessibility.AccessibilityNodeInfo
|
||||
import android.graphics.Rect
|
||||
import android.accessibilityservice.AccessibilityServiceInfo
|
||||
import android.accessibilityservice.AccessibilityServiceInfo.FLAG_INPUT_METHOD_EDITOR
|
||||
import android.accessibilityservice.AccessibilityServiceInfo.FLAG_RETRIEVE_INTERACTIVE_WINDOWS
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import androidx.annotation.RequiresApi
|
||||
import java.util.*
|
||||
import java.lang.Character
|
||||
import kotlin.math.abs
|
||||
import kotlin.math.max
|
||||
import hbb.MessageOuterClass.KeyEvent
|
||||
import hbb.MessageOuterClass.KeyboardMode
|
||||
import hbb.KeyEventConverter
|
||||
|
||||
const val LIFT_DOWN = 9
|
||||
const val LIFT_MOVE = 8
|
||||
@@ -26,6 +41,13 @@ const val WHEEL_BUTTON_UP = 34
|
||||
const val WHEEL_DOWN = 523331
|
||||
const val WHEEL_UP = 963
|
||||
|
||||
const val TOUCH_SCALE_START = 1
|
||||
const val TOUCH_SCALE = 2
|
||||
const val TOUCH_SCALE_END = 3
|
||||
const val TOUCH_PAN_START = 4
|
||||
const val TOUCH_PAN_UPDATE = 5
|
||||
const val TOUCH_PAN_END = 6
|
||||
|
||||
const val WHEEL_STEP = 120
|
||||
const val WHEEL_DURATION = 50L
|
||||
const val LONG_TAP_DELAY = 200L
|
||||
@@ -51,6 +73,8 @@ class InputService : AccessibilityService() {
|
||||
private var isWheelActionsPolling = false
|
||||
private var isWaitingLongPress = false
|
||||
|
||||
private var fakeEditTextForTextStateCalculation: EditText? = null
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
fun onMouseInput(mask: Int, _x: Int, _y: Int) {
|
||||
val x = max(0, _x)
|
||||
@@ -167,6 +191,30 @@ class InputService : AccessibilityService() {
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
fun onTouchInput(mask: Int, _x: Int, _y: Int) {
|
||||
when (mask) {
|
||||
TOUCH_PAN_UPDATE -> {
|
||||
mouseX -= _x * SCREEN_INFO.scale
|
||||
mouseY -= _y * SCREEN_INFO.scale
|
||||
mouseX = max(0, mouseX);
|
||||
mouseY = max(0, mouseY);
|
||||
continueGesture(mouseX, mouseY)
|
||||
}
|
||||
TOUCH_PAN_START -> {
|
||||
mouseX = max(0, _x) * SCREEN_INFO.scale
|
||||
mouseY = max(0, _y) * SCREEN_INFO.scale
|
||||
startGesture(mouseX, mouseY)
|
||||
}
|
||||
TOUCH_PAN_END -> {
|
||||
endGesture(mouseX, mouseY)
|
||||
mouseX = max(0, _x) * SCREEN_INFO.scale
|
||||
mouseY = max(0, _y) * SCREEN_INFO.scale
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
private fun consumeWheelActions() {
|
||||
if (isWheelActionsPolling) {
|
||||
@@ -221,9 +269,296 @@ class InputService : AccessibilityService() {
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
fun onKeyEvent(data: ByteArray) {
|
||||
val keyEvent = KeyEvent.parseFrom(data)
|
||||
val keyboardMode = keyEvent.getMode()
|
||||
|
||||
var textToCommit: String? = null
|
||||
|
||||
if (keyboardMode == KeyboardMode.Legacy) {
|
||||
if (keyEvent.hasChr() && keyEvent.getDown()) {
|
||||
val chr = keyEvent.getChr()
|
||||
if (chr != null) {
|
||||
textToCommit = String(Character.toChars(chr))
|
||||
}
|
||||
}
|
||||
} else if (keyboardMode == KeyboardMode.Translate) {
|
||||
if (keyEvent.hasSeq() && keyEvent.getDown()) {
|
||||
val seq = keyEvent.getSeq()
|
||||
if (seq != null) {
|
||||
textToCommit = seq
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Log.d(logTag, "onKeyEvent $keyEvent textToCommit:$textToCommit")
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 33) {
|
||||
getInputMethod()?.let { inputMethod ->
|
||||
inputMethod.getCurrentInputConnection()?.let { inputConnection ->
|
||||
if (textToCommit != null) {
|
||||
textToCommit?.let { text ->
|
||||
inputConnection.commitText(text, 1, null)
|
||||
}
|
||||
} else {
|
||||
KeyEventConverter.toAndroidKeyEvent(keyEvent).let { event ->
|
||||
inputConnection.sendKeyEvent(event)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
val handler = Handler(Looper.getMainLooper())
|
||||
handler.post {
|
||||
KeyEventConverter.toAndroidKeyEvent(keyEvent)?.let { event ->
|
||||
val possibleNodes = possibleAccessibiltyNodes()
|
||||
Log.d(logTag, "possibleNodes:$possibleNodes")
|
||||
for (item in possibleNodes) {
|
||||
val success = trySendKeyEvent(event, item, textToCommit)
|
||||
if (success) {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun insertAccessibilityNode(list: LinkedList<AccessibilityNodeInfo>, node: AccessibilityNodeInfo) {
|
||||
if (node == null) {
|
||||
return
|
||||
}
|
||||
if (list.contains(node)) {
|
||||
return
|
||||
}
|
||||
list.add(node)
|
||||
}
|
||||
|
||||
private fun findChildNode(node: AccessibilityNodeInfo?): AccessibilityNodeInfo? {
|
||||
if (node == null) {
|
||||
return null
|
||||
}
|
||||
if (node.isEditable() && node.isFocusable()) {
|
||||
return node
|
||||
}
|
||||
val childCount = node.getChildCount()
|
||||
for (i in 0 until childCount) {
|
||||
val child = node.getChild(i)
|
||||
if (child != null) {
|
||||
if (child.isEditable() && child.isFocusable()) {
|
||||
return child
|
||||
}
|
||||
if (Build.VERSION.SDK_INT < 33) {
|
||||
child.recycle()
|
||||
}
|
||||
}
|
||||
}
|
||||
for (i in 0 until childCount) {
|
||||
val child = node.getChild(i)
|
||||
if (child != null) {
|
||||
val result = findChildNode(child)
|
||||
if (Build.VERSION.SDK_INT < 33) {
|
||||
if (child != result) {
|
||||
child.recycle()
|
||||
}
|
||||
}
|
||||
if (result != null) {
|
||||
return result
|
||||
}
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
private fun possibleAccessibiltyNodes(): LinkedList<AccessibilityNodeInfo> {
|
||||
val linkedList = LinkedList<AccessibilityNodeInfo>()
|
||||
val latestList = LinkedList<AccessibilityNodeInfo>()
|
||||
|
||||
val focusInput = findFocus(AccessibilityNodeInfo.FOCUS_INPUT)
|
||||
var focusAccessibilityInput = findFocus(AccessibilityNodeInfo.FOCUS_ACCESSIBILITY)
|
||||
|
||||
val rootInActiveWindow = getRootInActiveWindow()
|
||||
|
||||
Log.d(logTag, "focusInput:$focusInput focusAccessibilityInput:$focusAccessibilityInput rootInActiveWindow:$rootInActiveWindow")
|
||||
|
||||
if (focusInput != null) {
|
||||
if (focusInput.isFocusable() && focusInput.isEditable()) {
|
||||
insertAccessibilityNode(linkedList, focusInput)
|
||||
} else {
|
||||
insertAccessibilityNode(latestList, focusInput)
|
||||
}
|
||||
}
|
||||
|
||||
if (focusAccessibilityInput != null) {
|
||||
if (focusAccessibilityInput.isFocusable() && focusAccessibilityInput.isEditable()) {
|
||||
insertAccessibilityNode(linkedList, focusAccessibilityInput)
|
||||
} else {
|
||||
insertAccessibilityNode(latestList, focusAccessibilityInput)
|
||||
}
|
||||
}
|
||||
|
||||
val childFromFocusInput = findChildNode(focusInput)
|
||||
Log.d(logTag, "childFromFocusInput:$childFromFocusInput")
|
||||
|
||||
if (childFromFocusInput != null) {
|
||||
insertAccessibilityNode(linkedList, childFromFocusInput)
|
||||
}
|
||||
|
||||
val childFromFocusAccessibilityInput = findChildNode(focusAccessibilityInput)
|
||||
if (childFromFocusAccessibilityInput != null) {
|
||||
insertAccessibilityNode(linkedList, childFromFocusAccessibilityInput)
|
||||
}
|
||||
Log.d(logTag, "childFromFocusAccessibilityInput:$childFromFocusAccessibilityInput")
|
||||
|
||||
if (rootInActiveWindow != null) {
|
||||
insertAccessibilityNode(linkedList, rootInActiveWindow)
|
||||
}
|
||||
|
||||
for (item in latestList) {
|
||||
insertAccessibilityNode(linkedList, item)
|
||||
}
|
||||
|
||||
return linkedList
|
||||
}
|
||||
|
||||
private fun trySendKeyEvent(event: android.view.KeyEvent, node: AccessibilityNodeInfo, textToCommit: String?): Boolean {
|
||||
node.refresh()
|
||||
this.fakeEditTextForTextStateCalculation?.setSelection(0,0)
|
||||
this.fakeEditTextForTextStateCalculation?.setText(null)
|
||||
|
||||
val text = node.getText()
|
||||
var isShowingHint = false
|
||||
if (Build.VERSION.SDK_INT >= 26) {
|
||||
isShowingHint = node.isShowingHintText()
|
||||
}
|
||||
|
||||
var textSelectionStart = node.textSelectionStart
|
||||
var textSelectionEnd = node.textSelectionEnd
|
||||
|
||||
if (text != null) {
|
||||
if (textSelectionStart > text.length) {
|
||||
textSelectionStart = text.length
|
||||
}
|
||||
if (textSelectionEnd > text.length) {
|
||||
textSelectionEnd = text.length
|
||||
}
|
||||
if (textSelectionStart > textSelectionEnd) {
|
||||
textSelectionStart = textSelectionEnd
|
||||
}
|
||||
}
|
||||
|
||||
var success = false
|
||||
|
||||
Log.d(logTag, "existing text:$text textToCommit:$textToCommit textSelectionStart:$textSelectionStart textSelectionEnd:$textSelectionEnd")
|
||||
|
||||
if (textToCommit != null) {
|
||||
if ((textSelectionStart == -1) || (textSelectionEnd == -1)) {
|
||||
val newText = textToCommit
|
||||
this.fakeEditTextForTextStateCalculation?.setText(newText)
|
||||
success = updateTextForAccessibilityNode(node)
|
||||
} else if (text != null) {
|
||||
this.fakeEditTextForTextStateCalculation?.setText(text)
|
||||
this.fakeEditTextForTextStateCalculation?.setSelection(
|
||||
textSelectionStart,
|
||||
textSelectionEnd
|
||||
)
|
||||
this.fakeEditTextForTextStateCalculation?.text?.insert(textSelectionStart, textToCommit)
|
||||
success = updateTextAndSelectionForAccessibiltyNode(node)
|
||||
}
|
||||
} else {
|
||||
if (isShowingHint) {
|
||||
this.fakeEditTextForTextStateCalculation?.setText(null)
|
||||
} else {
|
||||
this.fakeEditTextForTextStateCalculation?.setText(text)
|
||||
}
|
||||
if (textSelectionStart != -1 && textSelectionEnd != -1) {
|
||||
Log.d(logTag, "setting selection $textSelectionStart $textSelectionEnd")
|
||||
this.fakeEditTextForTextStateCalculation?.setSelection(
|
||||
textSelectionStart,
|
||||
textSelectionEnd
|
||||
)
|
||||
}
|
||||
|
||||
this.fakeEditTextForTextStateCalculation?.let {
|
||||
// This is essiential to make sure layout object is created. OnKeyDown may not work if layout is not created.
|
||||
val rect = Rect()
|
||||
node.getBoundsInScreen(rect)
|
||||
|
||||
it.layout(rect.left, rect.top, rect.right, rect.bottom)
|
||||
it.onPreDraw()
|
||||
if (event.action == android.view.KeyEvent.ACTION_DOWN) {
|
||||
val succ = it.onKeyDown(event.getKeyCode(), event)
|
||||
Log.d(logTag, "onKeyDown $succ")
|
||||
} else if (event.action == android.view.KeyEvent.ACTION_UP) {
|
||||
val success = it.onKeyUp(event.getKeyCode(), event)
|
||||
Log.d(logTag, "keyup $success")
|
||||
} else {}
|
||||
}
|
||||
|
||||
success = updateTextAndSelectionForAccessibiltyNode(node)
|
||||
}
|
||||
return success
|
||||
}
|
||||
|
||||
fun updateTextForAccessibilityNode(node: AccessibilityNodeInfo): Boolean {
|
||||
var success = false
|
||||
this.fakeEditTextForTextStateCalculation?.text?.let {
|
||||
val arguments = Bundle()
|
||||
arguments.putCharSequence(
|
||||
AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE,
|
||||
it.toString()
|
||||
)
|
||||
success = node.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments)
|
||||
}
|
||||
return success
|
||||
}
|
||||
|
||||
fun updateTextAndSelectionForAccessibiltyNode(node: AccessibilityNodeInfo): Boolean {
|
||||
var success = updateTextForAccessibilityNode(node)
|
||||
|
||||
if (success) {
|
||||
val selectionStart = this.fakeEditTextForTextStateCalculation?.selectionStart
|
||||
val selectionEnd = this.fakeEditTextForTextStateCalculation?.selectionEnd
|
||||
|
||||
if (selectionStart != null && selectionEnd != null) {
|
||||
val arguments = Bundle()
|
||||
arguments.putInt(
|
||||
AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT,
|
||||
selectionStart
|
||||
)
|
||||
arguments.putInt(
|
||||
AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT,
|
||||
selectionEnd
|
||||
)
|
||||
success = node.performAction(AccessibilityNodeInfo.ACTION_SET_SELECTION, arguments)
|
||||
Log.d(logTag, "Update selection to $selectionStart $selectionEnd success:$success")
|
||||
}
|
||||
}
|
||||
|
||||
return success
|
||||
}
|
||||
|
||||
|
||||
override fun onAccessibilityEvent(event: AccessibilityEvent) {
|
||||
}
|
||||
|
||||
override fun onServiceConnected() {
|
||||
super.onServiceConnected()
|
||||
ctx = this
|
||||
val info = AccessibilityServiceInfo()
|
||||
if (Build.VERSION.SDK_INT >= 33) {
|
||||
info.flags = FLAG_INPUT_METHOD_EDITOR or FLAG_RETRIEVE_INTERACTIVE_WINDOWS
|
||||
} else {
|
||||
info.flags = FLAG_RETRIEVE_INTERACTIVE_WINDOWS
|
||||
}
|
||||
setServiceInfo(info)
|
||||
fakeEditTextForTextStateCalculation = EditText(this)
|
||||
// Size here doesn't matter, we won't show this view.
|
||||
fakeEditTextForTextStateCalculation?.layoutParams = LayoutParams(100, 100)
|
||||
fakeEditTextForTextStateCalculation?.onPreDraw()
|
||||
val layout = fakeEditTextForTextStateCalculation?.getLayout()
|
||||
Log.d(logTag, "fakeEditTextForTextStateCalculation layout:$layout")
|
||||
Log.d(logTag, "onServiceConnected!")
|
||||
}
|
||||
|
||||
@@ -232,7 +567,5 @@ class InputService : AccessibilityService() {
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
override fun onAccessibilityEvent(event: AccessibilityEvent?) {}
|
||||
|
||||
override fun onInterrupt() {}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
package hbb;
|
||||
import android.view.KeyEvent
|
||||
import android.view.KeyCharacterMap
|
||||
import hbb.MessageOuterClass.KeyboardMode
|
||||
import hbb.MessageOuterClass.ControlKey
|
||||
|
||||
object KeyEventConverter {
|
||||
fun toAndroidKeyEvent(keyEventProto: hbb.MessageOuterClass.KeyEvent): KeyEvent {
|
||||
var chrValue = 0
|
||||
var modifiers = 0
|
||||
|
||||
val keyboardMode = keyEventProto.getMode()
|
||||
|
||||
if (keyEventProto.hasChr()) {
|
||||
if (keyboardMode == KeyboardMode.Map || keyboardMode == KeyboardMode.Translate) {
|
||||
chrValue = keyEventProto.getChr()
|
||||
} else {
|
||||
chrValue = convertUnicodeToKeyCode(keyEventProto.getChr() as Int)
|
||||
}
|
||||
} else if (keyEventProto.hasControlKey()) {
|
||||
chrValue = convertControlKeyToKeyCode(keyEventProto.getControlKey())
|
||||
}
|
||||
|
||||
var modifiersList = keyEventProto.getModifiersList()
|
||||
|
||||
if (modifiersList != null) {
|
||||
for (modifier in keyEventProto.getModifiersList()) {
|
||||
val modifierValue = convertModifier(modifier)
|
||||
modifiers = modifiers or modifierValue
|
||||
}
|
||||
}
|
||||
|
||||
var action = 0
|
||||
if (keyEventProto.getDown()) {
|
||||
action = KeyEvent.ACTION_DOWN
|
||||
} else {
|
||||
action = KeyEvent.ACTION_UP
|
||||
}
|
||||
|
||||
return KeyEvent(0, 0, action, chrValue, 0, modifiers)
|
||||
}
|
||||
|
||||
private fun convertModifier(controlKey: hbb.MessageOuterClass.ControlKey): Int {
|
||||
// Add logic to map ControlKey values to Android KeyEvent key codes.
|
||||
// You'll need to provide the mapping for each key.
|
||||
return when (controlKey) {
|
||||
ControlKey.Alt -> KeyEvent.META_ALT_ON
|
||||
ControlKey.Control -> KeyEvent.META_CTRL_ON
|
||||
ControlKey.CapsLock -> KeyEvent.META_CAPS_LOCK_ON
|
||||
ControlKey.Meta -> KeyEvent.META_META_ON
|
||||
ControlKey.NumLock -> KeyEvent.META_NUM_LOCK_ON
|
||||
ControlKey.RShift -> KeyEvent.META_SHIFT_RIGHT_ON
|
||||
ControlKey.Shift -> KeyEvent.META_SHIFT_ON
|
||||
ControlKey.RAlt -> KeyEvent.META_ALT_RIGHT_ON
|
||||
ControlKey.RControl -> KeyEvent.META_CTRL_RIGHT_ON
|
||||
else -> 0 // Default to unknown.
|
||||
}
|
||||
}
|
||||
|
||||
private val tag = "KeyEventConverter"
|
||||
|
||||
private fun convertUnicodeToKeyCode(unicode: Int): Int {
|
||||
val charMap = KeyCharacterMap.load(KeyCharacterMap.VIRTUAL_KEYBOARD)
|
||||
android.util.Log.d(tag, "unicode: $unicode")
|
||||
val events = charMap.getEvents(charArrayOf(unicode.toChar()))
|
||||
if (events != null && events.size > 0) {
|
||||
android.util.Log.d(tag, "keycode ${events[0].keyCode}")
|
||||
return events[0].keyCode
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
private fun convertControlKeyToKeyCode(controlKey: hbb.MessageOuterClass.ControlKey): Int {
|
||||
// Add logic to map ControlKey values to Android KeyEvent key codes.
|
||||
// You'll need to provide the mapping for each key.
|
||||
return when (controlKey) {
|
||||
ControlKey.Alt -> KeyEvent.KEYCODE_ALT_LEFT
|
||||
ControlKey.Backspace -> KeyEvent.KEYCODE_DEL
|
||||
ControlKey.Control -> KeyEvent.KEYCODE_CTRL_LEFT
|
||||
ControlKey.CapsLock -> KeyEvent.KEYCODE_CAPS_LOCK
|
||||
ControlKey.Meta -> KeyEvent.KEYCODE_META_LEFT
|
||||
ControlKey.NumLock -> KeyEvent.KEYCODE_NUM_LOCK
|
||||
ControlKey.RShift -> KeyEvent.KEYCODE_SHIFT_RIGHT
|
||||
ControlKey.Shift -> KeyEvent.KEYCODE_SHIFT_LEFT
|
||||
ControlKey.RAlt -> KeyEvent.KEYCODE_ALT_RIGHT
|
||||
ControlKey.RControl -> KeyEvent.KEYCODE_CTRL_RIGHT
|
||||
ControlKey.DownArrow -> KeyEvent.KEYCODE_DPAD_DOWN
|
||||
ControlKey.LeftArrow -> KeyEvent.KEYCODE_DPAD_LEFT
|
||||
ControlKey.RightArrow -> KeyEvent.KEYCODE_DPAD_RIGHT
|
||||
ControlKey.UpArrow -> KeyEvent.KEYCODE_DPAD_UP
|
||||
ControlKey.End -> KeyEvent.KEYCODE_MOVE_END
|
||||
ControlKey.Home -> KeyEvent.KEYCODE_MOVE_HOME
|
||||
ControlKey.PageUp -> KeyEvent.KEYCODE_PAGE_UP
|
||||
ControlKey.PageDown -> KeyEvent.KEYCODE_PAGE_DOWN
|
||||
ControlKey.Insert -> KeyEvent.KEYCODE_INSERT
|
||||
ControlKey.Escape -> KeyEvent.KEYCODE_ESCAPE
|
||||
ControlKey.F1 -> KeyEvent.KEYCODE_F1
|
||||
ControlKey.F2 -> KeyEvent.KEYCODE_F2
|
||||
ControlKey.F3 -> KeyEvent.KEYCODE_F3
|
||||
ControlKey.F4 -> KeyEvent.KEYCODE_F4
|
||||
ControlKey.F5 -> KeyEvent.KEYCODE_F5
|
||||
ControlKey.F6 -> KeyEvent.KEYCODE_F6
|
||||
ControlKey.F7 -> KeyEvent.KEYCODE_F7
|
||||
ControlKey.F8 -> KeyEvent.KEYCODE_F8
|
||||
ControlKey.F9 -> KeyEvent.KEYCODE_F9
|
||||
ControlKey.F10 -> KeyEvent.KEYCODE_F10
|
||||
ControlKey.F11 -> KeyEvent.KEYCODE_F11
|
||||
ControlKey.F12 -> KeyEvent.KEYCODE_F12
|
||||
ControlKey.Space -> KeyEvent.KEYCODE_SPACE
|
||||
ControlKey.Tab -> KeyEvent.KEYCODE_TAB
|
||||
ControlKey.Return -> KeyEvent.KEYCODE_ENTER
|
||||
ControlKey.Delete -> KeyEvent.KEYCODE_FORWARD_DEL
|
||||
ControlKey.Clear -> KeyEvent.KEYCODE_CLEAR
|
||||
ControlKey.Pause -> KeyEvent.KEYCODE_BREAK
|
||||
else -> 0 // Default to unknown.
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -44,7 +44,6 @@ import java.nio.ByteBuffer
|
||||
import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
|
||||
|
||||
const val DEFAULT_NOTIFY_TITLE = "RustDesk"
|
||||
const val DEFAULT_NOTIFY_TEXT = "Service is running"
|
||||
const val DEFAULT_NOTIFY_ID = 1
|
||||
@@ -71,20 +70,35 @@ class MainService : Service() {
|
||||
|
||||
@Keep
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
fun rustMouseInput(mask: Int, x: Int, y: Int) {
|
||||
fun rustPointerInput(kind: String, mask: Int, x: Int, y: Int) {
|
||||
// turn on screen with LIFT_DOWN when screen off
|
||||
if (!powerManager.isInteractive && mask == LIFT_DOWN) {
|
||||
if (!powerManager.isInteractive && (kind == "touch" || mask == LIFT_DOWN)) {
|
||||
if (wakeLock.isHeld) {
|
||||
Log.d(logTag,"Turn on Screen, WakeLock release")
|
||||
Log.d(logTag, "Turn on Screen, WakeLock release")
|
||||
wakeLock.release()
|
||||
}
|
||||
Log.d(logTag,"Turn on Screen")
|
||||
wakeLock.acquire(5000)
|
||||
} else {
|
||||
InputService.ctx?.onMouseInput(mask,x,y)
|
||||
when (kind) {
|
||||
"touch" -> {
|
||||
InputService.ctx?.onTouchInput(mask, x, y)
|
||||
}
|
||||
"mouse" -> {
|
||||
InputService.ctx?.onMouseInput(mask, x, y)
|
||||
}
|
||||
else -> {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Keep
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
fun rustKeyEventInput(input: ByteArray) {
|
||||
InputService.ctx?.onKeyEvent(input)
|
||||
}
|
||||
|
||||
@Keep
|
||||
fun rustGetByName(name: String): String {
|
||||
return when (name) {
|
||||
@@ -197,6 +211,7 @@ class MainService : Service() {
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
Log.d(logTag,"MainService onCreate")
|
||||
init(this)
|
||||
HandlerThread("Service", Process.THREAD_PRIORITY_BACKGROUND).apply {
|
||||
start()
|
||||
serviceLooper = looper
|
||||
@@ -301,7 +316,6 @@ class MainService : Service() {
|
||||
mediaProjection =
|
||||
mediaProjectionManager.getMediaProjection(Activity.RESULT_OK, it)
|
||||
checkMediaPermission()
|
||||
init(this)
|
||||
_isReady = true
|
||||
} ?: let {
|
||||
Log.d(logTag, "getParcelableExtra intent null, invoke requestMediaProjection")
|
||||
|
||||
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 487 B |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 715 B After Width: | Height: | Size: 383 B |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 719 B |
|
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 884 B |
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 1.4 KiB |
@@ -1,5 +1,6 @@
|
||||
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:accessibilityEventTypes="typeWindowsChanged"
|
||||
android:canRetrieveWindowContent="true"
|
||||
android:accessibilityFlags="flagDefault"
|
||||
android:notificationTimeout="50"
|
||||
android:description="@string/accessibility_service_description"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.7.10'
|
||||
ext.kotlin_version = '1.9.10'
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path fill="#fff" d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0 1 12 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"/></svg>
|
||||
|
Before Width: | Height: | Size: 792 B |
|
Before Width: | Height: | Size: 18 KiB |
1
flutter/assets/auth-apple.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"><circle cx="512" cy="512" r="512" fill="#999"/><path fill="#fff" d="M407.2 722.1c-10.1-6.7-19-15-26.5-24.5-8.2-9.9-15.7-20.3-22.7-31-16.3-23.9-29.1-50-38-77.5-10.7-32-15.8-62.7-15.8-92.7 0-33.5 7.2-62.7 21.4-87.2 10.4-19.2 26-35.2 44.8-46.5 18.1-11.3 39.2-17.5 60.6-17.9 7.5 0 15.6 1.1 24.1 3.2 6.2 1.7 13.6 4.5 22.8 7.9 11.7 4.5 18.1 7.2 20.3 7.9 6.8 2.6 12.6 3.6 17.1 3.6 3.4 0 8.3-1.1 13.8-2.8 3.1-1.1 9-3 17.3-6.6 8.2-3 14.8-5.5 19.9-7.5 7.9-2.3 15.5-4.5 22.4-5.5 8.3-1.3 16.6-1.7 24.5-1.1 15.1 1.1 29 4.3 41.4 9 21.7 8.7 39.3 22.4 52.4 41.8-5.5 3.4-10.7 7.4-15.5 11.7-10.4 9.2-19.2 20-26.2 32.1-9.2 16.4-13.9 35-13.7 53.7.3 23.1 6.2 43.4 17.9 61 8.3 12.8 19.3 23.8 32.7 32.7 6.6 4.5 12.4 7.6 17.9 9.6-2.6 8-5.4 15.8-8.6 23.5-7.4 17.2-16.2 33.7-26.7 49.3-9.2 13.4-16.5 23.5-22 30.1-8.6 10.2-16.8 17.9-25.2 23.4-9.2 6.1-19.9 9.3-31 9.3-7.5.3-14.9-.6-22-2.7-6.2-2-12.3-4.3-18.3-6.9-6.2-2.9-12.7-5.3-19.3-7.2-8.1-2.1-16.4-3.2-24.8-3.1-8.5 0-16.8 1.1-24.7 3.1-6.6 1.9-13 4.2-19.3 6.9-9 3.7-14.8 6.2-18.2 7.2-6.9 2-14 3.3-21.1 3.7-11.1 0-21.4-3.2-31.7-9.6zm146.1-393.6c-14.5 7.2-28.3 10.3-42.1 9.3-2.1-13.8 0-27.9 5.8-43.4 5.1-13.2 11.9-25.2 21.3-35.8 9.8-11.1 21.5-20.3 34.8-26.9 14.1-7.2 27.5-11.1 40.3-11.7 1.7 14.5 0 28.8-5.3 44.1-4.9 13.6-12.1 26.2-21.3 37.5-9.3 11.1-20.8 20.3-33.8 26.9z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
1
flutter/assets/auth-auth0.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="32" height="32"><path d="M29.307 9.932 26.161 0H5.796L2.692 9.932c-1.802 5.75.042 12.271 5.089 16.021L16.01 32l8.208-6.068c5.005-3.75 6.911-10.25 5.089-16.021l-8.214 6.104 3.12 9.938-8.208-6.13-8.208 6.104 3.141-9.911-8.25-6.063 10.177-.063 3.146-9.891 3.141 9.87z"/></svg>
|
||||
|
After Width: | Height: | Size: 285 B |