Compare commits

..

1599 Commits

Author SHA1 Message Date
Faryan Rezagholi
8a5f0f248e open credential manager from connection tree window 2021-09-04 00:52:04 +02:00
Faryan Rezagholi
c1931ff4cd hide password/username/domain fields in connection properties 2021-09-04 00:27:42 +02:00
Faryan Rezagholi
12cb7ad7b0 merged from develop 2021-09-01 01:26:21 +02:00
Faryan Rezagholi
fdea0144b0 removed test output from script 2021-08-29 18:44:08 +02:00
Faryan Rezagholi
7398a373c2 Squashed commit of the following:
commit 84b28316d01d158891d909e90fe428e48d5566e3
Author: Faryan Rezagholi <faryan.rezagholi@siedle.de>
Date:   Sun Aug 29 13:08:31 2021 +0200

    r

commit 7375b4a5456a615b36c4fbf0eda7a8d56762de85
Author: Faryan Rezagholi <faryan.rezagholi@siedle.de>
Date:   Sun Aug 29 12:54:40 2021 +0200

    ...

commit 96aa9d809131c8277bd62cb90fdfa4fd07f1940e
Author: Faryan Rezagholi <faryan.rezagholi@siedle.de>
Date:   Fri Aug 20 15:12:03 2021 +0200

    j
2021-08-29 18:41:50 +02:00
Faryan Rezagholi
74af24c3db appveyor test 2021-08-20 13:14:16 +02:00
Faryan Rezagholi
ac1f32f773 setting workdir for 7z 2021-08-20 13:03:22 +02:00
Faryan Rezagholi
99c7dbb332 trying -sfp2 option on 7z for appveyor 2021-08-20 12:17:14 +02:00
Faryan Rezagholi
b0632b8910 trying to fix appveyor no 7z-ing portable release 2021-08-20 00:36:09 +02:00
Faryan Rezagholi
e5042712b6 nuget update 2021-08-19 23:29:13 +02:00
Faryan Rezagholi
0e74314ddc fixed port scan and external tools window not showing 2021-08-15 21:53:10 +02:00
Faryan Rezagholi
54eabd6a74 some property display names were not showing, fixes #1990 2021-08-15 20:53:52 +02:00
Faryan Rezagholi
2f52473566 Allow setting Port when using MSSQL, fixes #1884 2021-08-15 20:13:59 +02:00
Faryan Rezagholi
98e7250b3c trying to fix 7z creating archives wrong on appveyor 2021-08-15 19:51:25 +02:00
Faryan Rezagholi
882438f5e0 replaced logo in readme 2021-08-15 19:16:17 +02:00
Faryan Rezagholi
59b9f4f15b moved resharper logo 2021-08-15 02:17:40 +02:00
Faryan Rezagholi
7ff0ce5369 tring to fix 7z duplicate file error on appveyor builds 2021-08-15 00:41:59 +02:00
Faryan Rezagholi
93bd278819 removed assembly bindings 2021-08-14 18:30:49 +02:00
Faryan Rezagholi
b97b1f3690 added sigcheck back 2021-08-14 18:24:36 +02:00
Faryan Rezagholi
307f374be1 fixed renaming of installer not working 2021-08-14 18:17:17 +02:00
Faryan Rezagholi
17f701824e encore un test 2021-08-14 17:05:21 +02:00
Faryan Rezagholi
c7b89dcf71 another test 2021-08-14 16:57:42 +02:00
Faryan Rezagholi
fc527a947f appveyor build script fixes 2021-08-14 16:49:23 +02:00
Faryan Rezagholi
d0520690a2 appveyor build script fixes 2021-08-14 16:45:06 +02:00
Faryan Rezagholi
315d020b6f appveyor build script fixes 2021-08-14 13:55:42 +02:00
Faryan Rezagholi
8a4bcdef52 appveyor build script fixes 2021-08-14 13:48:38 +02:00
Faryan Rezagholi
727ef34c6d appveyor build script fixes 2021-08-14 13:46:43 +02:00
Faryan Rezagholi
d8bc06d05d ? 2021-08-14 13:41:09 +02:00
Faryan Rezagholi
def214dde2 maybe this time 2021-08-14 13:39:10 +02:00
Faryan Rezagholi
219f948c4a again... 2021-08-14 13:35:13 +02:00
Faryan Rezagholi
72193eccf0 appveyor fix 2021-08-14 13:30:54 +02:00
Faryan Rezagholi
7eb85c6a3d trying to fix appveyor not zipping 2021-08-14 13:26:35 +02:00
Faryan Rezagholi
954c667173 cleanup 2021-08-14 13:16:09 +02:00
Faryan Rezagholi
33c738df5f unified/simplified/accelerated zip file creation 2021-08-14 13:07:14 +02:00
Faryan Rezagholi
2141fe298f let appveyor use project scripts 2021-08-14 12:15:13 +02:00
Faryan Rezagholi
8e73f512b4 moved puttyng.exe to project root 2021-08-14 01:55:51 +02:00
Faryan Rezagholi
92dddb8fd8 removed unused scripts 2021-08-13 02:20:34 +02:00
Faryan Rezagholi
e9869f4c88 cleaned up resource structure 2021-08-13 02:06:21 +02:00
Faryan Rezagholi
52597d4dcb removed 7zip binarys from project 2021-08-13 01:44:26 +02:00
Faryan Rezagholi
dc7ce27b81 fixed designer error 2021-08-13 01:17:27 +02:00
Faryan Rezagholi
4242595a66 Merge branch 'develop' of https://github.com/mRemoteNG/mRemoteNG into develop 2021-08-13 01:12:45 +02:00
Faryan Rezagholi
50b9a11503 change searchbar placement default property 2021-08-13 01:12:20 +02:00
Faryan Rezagholi
621a723602 Merge pull request #2022 from mRemoteNG/webview2
Replace CefSharp with Webview2
2021-08-12 23:46:04 +02:00
Faryan Rezagholi
6260cc3655 fixed tests 2021-08-12 23:35:19 +02:00
Faryan Rezagholi
300e668327 updated wix file fragments 2021-08-12 23:26:18 +02:00
Faryan Rezagholi
3cf274c37a updated changelog 2021-08-12 23:11:55 +02:00
Faryan Rezagholi
2ca356ee5c removed CefSharp from credits 2021-08-12 22:55:40 +02:00
Faryan Rezagholi
ca8751c40c little code cleanup 2021-08-12 22:54:20 +02:00
Faryan Rezagholi
3c7e97d2d9 replaced CefSharp with WebView2 2021-08-12 22:46:07 +02:00
Faryan Rezagholi
dbe2d690da removed majority of cefsharp related code 2021-08-12 21:00:26 +02:00
Faryan Rezagholi
949410e2cc unified release channel names across program 2021-08-11 03:21:16 +02:00
Faryan Rezagholi
100f856b5f cleaned up view menu and made all properties saveable 2021-08-11 03:08:20 +02:00
Faryan Rezagholi
d7bee01454 removed orphaned templates dir 2021-08-10 01:17:15 +02:00
Faryan Rezagholi
5566081986 update nuget packages 2021-08-10 00:59:27 +02:00
Faryan Rezagholi
29f7dd93f3 optimized form closing event 2021-08-10 00:56:14 +02:00
Faryan Rezagholi
3dd8db5728 updated icons in connection tree 2021-08-08 22:30:55 +02:00
Dimitrij
17e70d11f5 Merge pull request #2016 from xjoker/develop
Cannot connect to the database when the password has special characters
2021-08-06 14:59:15 +01:00
wuwenjing
f8afd439b2 When the password contains special characters, it will be unable to connect to the database. Using "SqlConnectionStringBuilder" to construct "ConnectionString" can solve the problem 2021-08-06 16:35:01 +08:00
Faryan Rezagholi
0dc61b1c26 Merge pull request #2014 from mRemoteNG/revised_icons
Revised icons
2021-08-04 02:39:03 +02:00
Faryan Rezagholi
de6c4fcb17 updated readme 2021-08-04 02:18:53 +02:00
Faryan Rezagholi
57f5c854ff moved logo 2021-08-04 02:13:17 +02:00
Faryan Rezagholi
4f4523ab77 removed old form icons 2021-08-04 02:11:29 +02:00
Faryan Rezagholi
e34e632519 removed ICOs from project 2021-08-04 01:49:06 +02:00
Faryan Rezagholi
f810b902a6 added image converter class to get ico from resources (get rid of redundant image resources) 2021-08-04 01:48:08 +02:00
Faryan Rezagholi
fd5bdc1484 replaced remaining icons 2021-08-04 01:11:34 +02:00
Faryan Rezagholi
e3a12ae6c5 you guessed it... ICONS! 2021-08-04 00:51:54 +02:00
Faryan Rezagholi
c9c5664ec6 icons icons icons 2021-08-04 00:39:33 +02:00
Faryan Rezagholi
75cff549ce more icons changed 2021-08-03 23:53:08 +02:00
Faryan Rezagholi
885cb6915d Merge branch 'develop' into revised_icons 2021-08-03 23:13:27 +02:00
Faryan Rezagholi
f9396a4ecf moved photoshop image templates out of project folder 2021-08-03 22:43:57 +02:00
Faryan Rezagholi
f1a03329e5 removed ultravnc icon 2021-08-03 22:38:15 +02:00
Faryan Rezagholi
f65be671a3 moved icons that will stay the same 2021-08-03 22:36:34 +02:00
Faryan Rezagholi
fa9e8f6cba merged develop 2021-08-03 22:27:51 +02:00
Faryan Rezagholi
67a3e76cfe removed icons that are obsolete since #2011 and #2013 2021-08-03 22:16:53 +02:00
Faryan Rezagholi
e4569c0bb8 Merge pull request #2013 from mRemoteNG/remove_components_check
Remove components check
2021-08-03 22:11:10 +02:00
Faryan Rezagholi
6f1a62e917 Merge branch 'develop' into remove_components_check 2021-08-03 21:57:06 +02:00
Faryan Rezagholi
3f6e21f15a Merge pull request #2011 from mRemoteNG/remove_screenshot_manager
removed screenshot manager
2021-08-03 21:54:52 +02:00
Faryan Rezagholi
46c4287c67 updated changelog 2021-08-03 21:51:09 +02:00
Faryan Rezagholi
1ea1826a27 removed leftovers from components check 2021-08-03 21:46:00 +02:00
Faryan Rezagholi
151457daf0 removed components check options page 2021-08-03 21:39:07 +02:00
Faryan Rezagholi
38cc21fa3a first wave of icons changed 2021-08-03 21:36:03 +02:00
Faryan Rezagholi
77f759f258 more icons cleaned up 2021-08-03 18:50:47 +02:00
Faryan Rezagholi
07c04061c2 more unused icons removed 2021-08-03 01:30:06 +02:00
Faryan Rezagholi
d4bf6ed0c8 added icons that were no part of the resource file 2021-08-03 01:21:11 +02:00
Faryan Rezagholi
ebd46efe81 Merge branch 'develop' into remove_screenshot_manager 2021-08-03 01:11:28 +02:00
Faryan Rezagholi
24d193efb0 revised host status icons 2021-08-03 00:59:59 +02:00
Faryan Rezagholi
3b2a63178f removed unused images/duplicate resources 2021-08-03 00:52:28 +02:00
Faryan Rezagholi
78f60afb85 Removed famfamfam folder and obsolete icons from images folder 2021-08-03 00:49:11 +02:00
Faryan Rezagholi
52a7957789 Update README.MD
Embedded new logo
2021-08-02 12:56:04 +02:00
Faryan Rezagholi
6870583b1c new logo 2021-08-02 12:50:00 +02:00
Faryan Rezagholi
9ffe514350 fixed error from previous merge 2021-08-02 00:29:15 +02:00
Faryan Rezagholi
fc6e04497a updated changelog 2021-08-02 00:16:14 +02:00
Faryan Rezagholi
cfb3f9a3ca merged from develop 2021-08-02 00:13:33 +02:00
Faryan Rezagholi
d47fac791e removed unused language strings 2021-08-02 00:05:10 +02:00
Faryan Rezagholi
490b70c2d3 removed cef scheme handler for obsolete in-app documentation 2021-08-02 00:01:48 +02:00
Faryan Rezagholi
3eecdd9ada Merge pull request #2010 from mRemoteNG/redesign_menus
Redesigned Menus
2021-08-01 23:51:22 +02:00
Faryan Rezagholi
7bdbc5417c update changelog 2021-08-01 23:28:32 +02:00
Faryan Rezagholi
2cd07dcb72 Merge branch 'develop' into redesign_menus 2021-08-01 23:01:53 +02:00
Faryan Rezagholi
adb83ade67 Merge pull request #2005 from mRemoteNG/remove_in_app_documentation
Remove in-app documentation
2021-08-01 23:00:21 +02:00
Faryan Rezagholi
a90f5da8b0 updated changelog 2021-08-01 22:45:39 +02:00
Faryan Rezagholi
38937a4f83 more rearrangements 2021-08-01 22:43:59 +02:00
Faryan Rezagholi
31f35a23ee removed some icons from file menu 2021-08-01 22:39:16 +02:00
Faryan Rezagholi
74de010d3c cleaned up icons in view menu 2021-08-01 22:32:27 +02:00
Faryan Rezagholi
a9e4c880df redesigned help menu 2021-08-01 22:29:04 +02:00
Faryan Rezagholi
b7fe265604 rearranged view menu 2021-08-01 21:45:15 +02:00
Faryan Rezagholi
25c4af5a9f cleaned up file menu 2021-08-01 21:40:14 +02:00
Faryan Rezagholi
b3ecf702e1 removed developer notice 2021-07-28 21:31:59 +02:00
Faryan Rezagholi
c34a3cc7e7 Added back sphinx documentation files 2021-07-26 01:22:31 +02:00
Faryan Rezagholi
158783f2d1 removed screenshot manager 2021-07-26 01:11:01 +02:00
Faryan Rezagholi
624192d301 Added featured project 2021-07-26 00:51:21 +02:00
Faryan Rezagholi
e9be139ed0 removed HelpWindows from code 2021-07-24 19:40:52 +02:00
Faryan Rezagholi
2b9195ed9c fixed typo 2021-07-24 19:38:09 +02:00
Faryan Rezagholi
dfdfecba57 open help in external browsr instead of in-app 2021-07-24 19:37:38 +02:00
Faryan Rezagholi
2d6fec13fb added url to documentation 2021-07-24 19:37:22 +02:00
Faryan Rezagholi
216f340468 removed sphinx documentation files 2021-07-24 19:35:00 +02:00
Faryan Rezagholi
a4211a7e55 removed postbuild sphinx script 2021-07-24 19:34:04 +02:00
Faryan Rezagholi
d6a2488fde removed obsolete citrix reference from minimum requirements section 2021-07-22 22:33:58 +02:00
Faryan Rezagholi
d4d60439b6 Merge branch 'develop' of https://github.com/mRemoteNG/mRemoteNG into develop 2021-07-22 22:12:02 +02:00
Faryan Rezagholi
75edd0d8ef round corners on splash screen 2021-07-22 22:11:05 +02:00
Dimitrij
b4e6e21094 Merge pull request #2001 from radiosti/patch-1
added optional but helpful winscp arguments
2021-07-20 09:54:42 +01:00
radiosti
8c48bc926e Update external_tools_cheat_sheet.rst 2021-07-19 20:56:26 +02:00
Dimitrij
031b6fb30d set AutoGenerateBindingRedirects 2021-07-05 20:17:39 +01:00
Dimitrij
647542e462 update supported os list 2021-07-04 14:51:00 +01:00
Dimitrij
dbf28d83f3 update PuTTY to v.0.75 2021-07-04 14:42:03 +01:00
Dimitrij
142acdd42f cleanup unused files 2021-06-29 12:18:02 +01:00
Dimitrij
ce103d30d3 update lib 2021-06-29 10:11:16 +01:00
Kvarkas
556d65e8b4 upd README.MD 2021-06-24 23:47:14 +01:00
Kvarkas
e0cf070bd0 fx mistypo 2021-06-24 23:45:52 +01:00
Kvarkas
70c5a336c2 upd 2021-06-24 23:43:52 +01:00
Kvarkas
f82d5fbd2d nb 2021-06-24 23:26:34 +01:00
Kvarkas
31418ba6f7 added nb 2021-06-24 23:09:08 +01:00
Kvarkas
3c10bb2669 activate Start in full screen mode 2021-06-24 23:03:32 +01:00
Kvarkas
0e009a2762 add option to run in full screen mode 2021-06-24 22:09:50 +01:00
Kvarkas
cfd718872b version update 2021-06-22 11:11:00 +01:00
Kvarkas
f57b278ef8 lib update 2021-06-22 11:10:10 +01:00
Dimitrij
730833feff Merge pull request #1958 from dimithras/patch-1
Powershell (non ISE) added to common external tools with a handful argument. Several edits.
2021-06-19 10:08:31 +01:00
Dimitrij
4168dda535 Merge pull request #1851 from vardars/feature/minify_xml
feature/minify_xml - Minifying xml config file
2021-06-19 10:06:27 +01:00
Dimitrij
639261a5a4 Merge pull request #1899 from ianselmi/develop
Enable multi items drag&drop
2021-06-19 09:31:13 +01:00
Dimitrij
c4db6fac13 Merge pull request #1849 from vardars/feature/alternate_shell
feature/alternate_shell - alternate shell implemented as Start Program
2021-06-19 09:19:55 +01:00
Dimitrij
264ac7662d Merge pull request #1898 from jobarner/bug/RDP-local-scale-factor
Fix RDP local desktop scale not taking effect on remote
2021-06-17 13:19:43 +01:00
Dimitrij
8237ed1a1d Merge pull request #1960 from jdmcnair/develop
Fix for failed update-info parse crash (issue #1959)
2021-06-17 13:13:28 +01:00
Dimitrij
f82cb73100 Merge pull request #1878 from GentlemanRabbit/develop
Fix Portable version build failed
2021-06-17 13:07:41 +01:00
Dimitrij
15fc27681f Merge pull request #1872 from Fyers/develop
Update German translations
2021-06-17 13:02:19 +01:00
Dimitrij
81beb3285e Merge pull request #1918 from tony1661/develop
Raspberry Pi Icon added
2021-06-17 12:58:46 +01:00
Kvarkas
39ff3798ca lib update 2021-06-17 11:58:31 +01:00
Kvarkas
8826b0dba0 add missed collection 2021-06-17 10:57:28 +01:00
David Sparer
e56884c1d8 updated readme with notice about project being stalled 2021-06-05 09:24:51 -05:00
Jason McNair
95b81193e7 fix for failed update-info parse crash 2021-05-14 18:32:56 -04:00
Dmitriy Perepelkin
508e93483e Powershell (non ISE) added. Several edits.
Added Powershell example connecting to a remote host using credentials saved in mRemoteNG. Took me several hours to figure out how to do this without a password prompt. Extremely helpful indeed. Also a good showcase on how to use mRemoteNG variables.

Other edits: Powershell (ISE) link was obsolete leading to 404, provided a new one. Added description to IE instead of a dummy.
2021-05-14 15:31:34 +03:00
Antonio Fernandez
c55d9b4042 Raspberry PI Icon added
The Raspberry Pi is becoming more and more used and having a dedicated icon would help :)
2021-01-06 10:52:17 -05:00
ianselmi
aef47609a3 enable multi item drag&drop 2020-11-15 17:13:32 +01:00
Jonathan Barner
5bb3c077b0 Update changelog 2020-11-15 11:04:32 +02:00
Jonathan Barner
501304c51f Fix RDP local desktop scale not taking effect on remote 2020-11-15 10:47:23 +02:00
GentlemanRabbit
d9c1a385e0 Fix Portable version build failed 2020-10-09 22:27:46 +08:00
Fyers
d6c51427a0 german translations 2020-10-05 01:17:40 +02:00
Faryan Rezagholi
2cf5a4317d fixed syntax style inconsistencies 2020-09-27 15:11:29 +02:00
Faryan Rezagholi
b344e3a749 fixed formatting errors 2020-09-27 15:06:08 +02:00
Faryan Rezagholi
6751ff1af3 removed unused using directives 2020-09-27 15:04:28 +02:00
Faryan Rezagholi
7006796f6b Specflow: Generating Code Behind Files using MSBuild 2020-09-27 14:53:53 +02:00
Faryan Rezagholi
1d11d4bca8 updated log4net nuget package 2020-09-27 14:46:12 +02:00
Faryan Rezagholi
43af32585a updated nuget packages 2020-09-16 01:31:23 +02:00
Faryan Rezagholi
7aa5d399e9 updated nuget packages 2020-09-16 01:30:58 +02:00
Faryan Rezagholi
004e161895 Merge pull request #1861 from yurayko/develop
Fix incorrect russian translation
2020-09-15 22:15:14 +02:00
yurayko
ba1c6d44c6 Fix incorrect translation 2020-09-14 10:33:00 +03:00
vardars
87a08077ed feature/minify_xml - Inserted change to "Added" section of changelog 2020-08-30 22:33:14 +03:00
vardars
33b6a4e6cd feature/minify_xml - Changed inheritance behaviour to not writing to disk if inheritance value is false, changed one test according to null xml attribute 2020-08-30 22:23:26 +03:00
vardars
29b0af1d62 feature/alternate_shell - Fixed serialization tests 2020-08-30 19:49:40 +03:00
vardars
7e3b0f7aed feature/alternate_shell - StartProgram marked as AttributeUsedInProtocol(ProtocolType.RDP) 2020-08-30 19:30:14 +03:00
vardars
135c5988ba feature/alternate_shell - alternate shell implemented as Start Program 2020-08-30 19:00:47 +03:00
Faryan Rezagholi
fbcf9ccbd6 Merge pull request #1763 from mRemoteNG/removecitrix
Remove ICA (Citrix) support
2020-07-25 19:49:50 +02:00
Faryan Rezagholi
02e4e71b5d merge develop into removecitrix 2020-07-25 19:25:40 +02:00
Faryan Rezagholi
a71ba82521 Merge pull request #1817 from kevinduongcalabrio/patch-1
Update troubleshooting.rst
2020-07-25 19:23:11 +02:00
Faryan Rezagholi
cda0e3cee3 Merge pull request #1821 from bold-gman/patch-1
Update README.MD
2020-07-25 19:21:54 +02:00
Faryan Rezagholi
1218638794 Do not try to set column width for tinyint, fixes #1819 2020-07-25 19:05:58 +02:00
R
761694cdcc Update README.MD 2020-07-22 12:19:19 +02:00
kevinduongcalabrio
bb63e3a1f1 Update troubleshooting.rst 2020-07-15 07:10:49 -05:00
Faryan Rezagholi
a9b1d84b6e added missing comma in sql script (#1801) 2020-06-27 18:52:26 +02:00
Faryan Rezagholi
a465614506 fixed wording in polish translation (#1803) 2020-06-27 18:44:48 +02:00
Faryan Rezagholi
3055ef208e set AutoScale Mode to DPI 2020-06-20 11:31:26 +02:00
Faryan Rezagholi
e6cf9dce1c return from closed event when form is already disposed. possible fix for #1794 2020-06-19 23:00:02 +02:00
Faryan Rezagholi
9232535763 Update README.MD 2020-06-14 13:15:01 +02:00
Faryan Rezagholi
091c44bb45 Update README.MD 2020-06-14 13:05:48 +02:00
Faryan Rezagholi
f088249260 Update CREDITS.md 2020-06-14 01:48:49 +02:00
Faryan Rezagholi
dc108576e1 Update CREDITS.md 2020-06-14 01:47:12 +02:00
Faryan Rezagholi
5c4da38a52 Update CREDITS.md 2020-06-14 01:25:26 +02:00
Faryan Rezagholi
1e0a19f865 merged from develop 2020-06-13 22:37:17 +02:00
Faryan Rezagholi
390e84a96a moved images linked in readme file 2020-06-13 22:35:17 +02:00
Faryan Rezagholi
4a91a8e4c3 Merge branch 'develop' of https://github.com/mRemoteNG/mRemoteNG into develop 2020-06-13 22:28:19 +02:00
Faryan Rezagholi
0b1d6d5e04 removed obsolete github templates 2020-06-13 22:27:44 +02:00
Faryan Rezagholi
a5eed483e5 Update README.MD 2020-06-13 22:04:43 +02:00
Faryan Rezagholi
4e9622fde7 Update README.MD 2020-06-13 21:56:38 +02:00
Faryan Rezagholi
f6447c3343 Update README.MD 2020-06-13 21:51:54 +02:00
Faryan Rezagholi
605d4a89ac Update README.MD 2020-06-13 21:42:14 +02:00
Faryan Rezagholi
b5d4b8514a Update README.MD 2020-06-13 21:29:02 +02:00
Faryan Rezagholi
5470a3d808 removed unused appveyor scripts 2020-06-13 19:32:22 +02:00
Faryan Rezagholi
d845e6b520 attempt to fix appveyor build error trying to zip debug symbols 2020-06-13 18:52:38 +02:00
Faryan Rezagholi
ee4d8a1939 removed unresolvable reference 2020-06-13 18:36:01 +02:00
Faryan Rezagholi
acbd233345 removed installation.rst, as 585de5db made it obsolete 2020-06-13 18:35:21 +02:00
Faryan Rezagholi
77d1e51ce4 removed about.rst, as 585de5db made it obsolete 2020-06-13 18:34:04 +02:00
Faryan Rezagholi
af7e75c2df merged develop into removecitrix 2020-06-13 18:31:12 +02:00
Faryan Rezagholi
9b4519978b fixed wrong paths in project file after 6bc22fe0 2020-06-13 18:25:49 +02:00
Faryan Rezagholi
8244b3d731 fixed some typos 2020-06-13 18:12:31 +02:00
Faryan Rezagholi
0d721900f9 merged develop into removecitrix 2020-06-13 18:07:35 +02:00
Faryan Rezagholi
585de5dbc6 moved install information from documentation into readme 2020-06-13 18:05:06 +02:00
Faryan Rezagholi
7b85394a8b added sphinx conf.py to solution 2020-06-13 16:29:28 +02:00
Faryan Rezagholi
3b842798b8 Merge branch 'develop' into removecitrix 2020-06-13 16:20:21 +02:00
Faryan Rezagholi
1aaf3c1cb5 escaped all field names in mssql script 2020-06-13 16:20:00 +02:00
Faryan Rezagholi
84206f701a merged develop into removecitrix 2020-06-13 16:13:52 +02:00
Faryan Rezagholi
9e62c3df7e removed ICA cleint from minimum requirements in documentation 2020-06-13 15:03:16 +02:00
Faryan Rezagholi
430a2529db renamed user controlls to start with capital letter 2020-06-13 14:10:25 +02:00
Faryan Rezagholi
6911a928af moved FullscreenHandler from UI.Forms to UI namespace 2020-06-13 14:05:56 +02:00
Faryan Rezagholi
cf9b7f1cb5 moved classes that do not represent a user control from UI.Controls namepsace into UI namespace 2020-06-13 14:04:13 +02:00
Faryan Rezagholi
f695bbdc8b moved all user controls into same namespace 2020-06-13 13:57:17 +02:00
Faryan Rezagholi
40a4291b07 Removed TextBox class and using NGTextBox instead 2020-06-13 13:43:48 +02:00
Faryan Rezagholi
97bd0a11f3 revised FrmUnhandledException 2020-06-13 13:35:59 +02:00
Faryan Rezagholi
9b77d390c0 Renamed UI classes, that did not follow naming scheme 2020-06-13 13:35:19 +02:00
Faryan Rezagholi
c0a6240764 adjusted namespace 2020-06-13 01:06:41 +02:00
Faryan Rezagholi
86e0b058e5 fixed sphinx error 2020-06-13 00:20:23 +02:00
Faryan Rezagholi
c0a107cbfd merged develop into removecitrix 2020-06-12 23:55:20 +02:00
Faryan Rezagholi
7912623810 fixed about window object bein disposed on second call 2020-06-11 23:54:35 +02:00
Faryan Rezagholi
b72b740d7a removed double entry from sql scripts 2020-06-11 18:09:15 +02:00
Faryan Rezagholi
395ab7ff9e removed obsolete and empty help folder from resources 2020-06-11 17:08:23 +02:00
Faryan Rezagholi
bb75b3ea75 merged from develop 2020-06-11 17:06:33 +02:00
Faryan Rezagholi
6bc22fe060 added COPYING.TXT and README.MD to solution 2020-06-11 17:05:39 +02:00
Faryan Rezagholi
7e634e75cd merged from develop 2020-06-11 17:02:19 +02:00
Faryan Rezagholi
3770bf44ed Update README.MD 2020-06-11 16:26:41 +02:00
Faryan Rezagholi
30914437b2 Update README.MD 2020-06-11 16:26:02 +02:00
Faryan Rezagholi
892a9b98fa Update README.MD 2020-06-11 16:18:09 +02:00
Faryan Rezagholi
a791befd49 updated badges 2020-06-11 15:59:13 +02:00
Faryan Rezagholi
76812b3233 Update README.MD 2020-06-11 15:35:02 +02:00
Faryan Rezagholi
3b000189fd updateed logo 2020-06-11 15:22:55 +02:00
Faryan Rezagholi
b066feeb7e updated logo 2020-06-11 15:18:22 +02:00
Faryan Rezagholi
f7872d0d84 added logo 2020-06-11 15:03:09 +02:00
Faryan Rezagholi
46e5d8e669 renamed SQL property "DomainName" to "Domain" for consistency reasons 2020-06-09 16:25:15 +02:00
Faryan Rezagholi
57018bfba7 Added missing inheritance properties to SQL scripts, fixes #1783 2020-06-09 16:19:34 +02:00
Faryan Rezagholi
3f7e7c50b3 ordered sql scripts alphabetically 2020-06-09 15:37:28 +02:00
Faryan Rezagholi
90065605a9 added missing properties to sql scripts 2020-06-09 15:23:20 +02:00
Faryan Rezagholi
956128683a renamed MainFileMenu class to FIleMenu 2020-06-06 23:57:15 +02:00
Faryan Rezagholi
a0dd270578 improved lenovo autoscroll utility check log output 2020-06-06 23:32:12 +02:00
Faryan Rezagholi
d71067d246 improved FIPS policy check log output 2020-06-06 23:26:40 +02:00
Faryan Rezagholi
f8567bca79 removed xming sessions provider, fixes #1514 2020-06-06 23:15:53 +02:00
Faryan Rezagholi
455e417a70 added missing default setting property 2020-06-06 02:20:54 +02:00
Faryan Rezagholi
99b525d42f check for putty event handler only when trying to send command instead of on any key press, fixes #1756 2020-06-03 22:20:22 +02:00
Faryan Rezagholi
41ccb34bd4 Merge branch 'develop' of https://github.com/mRemoteNG/mRemoteNG into develop 2020-06-03 01:27:13 +02:00
Faryan Rezagholi
277d6fdd45 generate dummy html help file when python/sphinx is not set up 2020-06-03 01:25:35 +02:00
Faryan Rezagholi
f40b8e9a75 do not use log4net default repository 2020-06-02 22:48:00 +02:00
Faryan Rezagholi
eb580ab82b avoid using AppDomains as they are unsupported by .net core 2020-06-02 22:40:03 +02:00
Faryan Rezagholi
7eaa7f6f29 merged develop into removecitrix 2020-06-02 13:50:21 +02:00
Faryan Rezagholi
358f92e720 Merge pull request #1777 from mRemoteNG/cleanup_project_structure
Cleanup project structure
2020-06-02 13:11:38 +02:00
Faryan Rezagholi
fde3699ebc fixed path to installer project 2020-06-02 11:56:01 +02:00
Faryan Rezagholi
705525cc1d fixed paths in installer project 2020-06-02 11:26:57 +02:00
Faryan Rezagholi
38fed7b55e replaced occurences of mRemoteV! with mRemoteNG in installer project 2020-06-02 11:09:03 +02:00
Faryan Rezagholi
ec494c2e0f updated changelog 2020-06-02 09:42:01 +02:00
Faryan Rezagholi
fd80dcee61 updated CustomActions installer project to .net 4.7.2 2020-06-02 09:37:50 +02:00
Faryan Rezagholi
366d87e6ec fixed failing test 2020-06-02 09:18:14 +02:00
Faryan Rezagholi
f7e2685213 removed obsolete files from tools dir 2020-06-02 09:13:59 +02:00
Faryan Rezagholi
c2ef8fc188 fixed powershell scripts 2020-06-02 09:13:22 +02:00
Faryan Rezagholi
8ea8c411d6 renamed/moved project files 2020-06-02 09:11:01 +02:00
Faryan Rezagholi
09f82a6079 updated documentation for #319 2020-06-01 14:10:49 +02:00
Faryan Rezagholi
91106be934 Override quick connect username when using user@domain, fixes #319 2020-06-01 14:06:07 +02:00
Faryan Rezagholi
772a1527f0 replaced system.drawing with system.drawing.common nuget #1705 2020-06-01 00:45:19 +02:00
Faryan Rezagholi
e39db26c13 get rid of system.web and system.web.extensions #1705 2020-06-01 00:38:52 +02:00
Faryan Rezagholi
56bb513bdc updated copyright string 2020-05-31 23:10:39 +02:00
Faryan Rezagholi
0d511c58ed fixed merge errors 2020-05-31 19:28:01 +02:00
Faryan Rezagholi
7ddd6fa22a merged develop into removecitrix 2020-05-31 19:14:14 +02:00
Faryan Rezagholi
256ea606ed Merge pull request #1332 from wangxuepeng/develop
Add show/hide main menu function to connection tree toolbar.
2020-05-31 19:04:17 +02:00
Faryan Rezagholi
e767dcc5cf fixed null pointer reference due to missing parantheses 2020-05-31 18:51:11 +02:00
Faryan Rezagholi
381850ec4b updated documentation 2020-05-31 18:43:06 +02:00
Faryan Rezagholi
382af99ade fixed merge errors 2020-05-31 18:26:36 +02:00
Faryan Rezagholi
d719a0d52a merged develop into pr/1332 2020-05-31 18:24:49 +02:00
Faryan Rezagholi
68d2bd7ea9 Merge pull request #1776 from mRemoteNG/lang_files_cleanup
Language files cleanup
2020-05-31 18:17:32 +02:00
Faryan Rezagholi
d30c10f9dc merged develop into lang_files_cleanup 2020-05-31 18:00:18 +02:00
Faryan Rezagholi
9da9616cc4 do not automatically check components on entering options page 2020-05-31 16:41:12 +02:00
Faryan Rezagholi
87ca31fc45 fixed some wrong strings used in connection record 2020-05-31 15:59:35 +02:00
Faryan Rezagholi
193cbdb7aa removed entries that are already alike in the neutral language 2020-05-31 15:44:11 +02:00
Faryan Rezagholi
55e7df18f5 the cleaning never stops 2020-05-31 14:44:56 +02:00
Faryan Rezagholi
f850635260 even more cleanup 2020-05-31 14:22:50 +02:00
Faryan Rezagholi
aecaf3fae9 fixed typo 2020-05-31 02:12:36 +02:00
Faryan Rezagholi
fe4c687bdf merged develop into pr/1332 2020-05-31 02:06:32 +02:00
Faryan Rezagholi
c5f185462a do not log to roaming appdata folder on default settings 2020-05-31 01:48:16 +02:00
Faryan Rezagholi
0b80ffa1d0 more cleanup 2020-05-31 01:30:13 +02:00
Faryan Rezagholi
5cafdcd4ee removed unused strings 2020-05-31 00:47:04 +02:00
Faryan Rezagholi
57d72d2cf6 updated changelog 2020-05-31 00:34:16 +02:00
Faryan Rezagholi
5ccc2b1d2a fixed calls to language class in code 2020-05-31 00:18:20 +02:00
Faryan Rezagholi
ea654cf9e6 removed duplicate entries from resx files 2020-05-31 00:02:58 +02:00
Faryan Rezagholi
cb926c4178 removed "str" prefix 2020-05-30 23:31:05 +02:00
Faryan Rezagholi
d7b47ab8b1 updated changelog to include #1720 2020-05-30 22:06:49 +02:00
Faryan Rezagholi
5fe0ef3646 pass config file name to password form on startup, fixes #1720 2020-05-30 22:05:31 +02:00
Faryan Rezagholi
1a10acbb90 Merge pull request #1690 from leaskovski/1071_CEFSharp_HTTP_Rendering
Replace GeckoFX with CefSharp
2020-05-30 21:48:06 +02:00
Faryan Rezagholi
b565a0375c added AdHelper back to solution (was lost during merge) 2020-05-30 21:42:05 +02:00
Faryan Rezagholi
87f842203c fixed merge errors 2020-05-30 19:52:09 +02:00
Faryan Rezagholi
b03b5830b1 merged develop into removecitix 2020-05-30 19:51:50 +02:00
Faryan Rezagholi
9577bb77da merged develop into pr/1690 2020-05-30 19:06:32 +02:00
Faryan Rezagholi
431172515a reinstalled nuget packages 2020-05-30 18:50:29 +02:00
Faryan Rezagholi
2c64625eac changed cef settings cache and cef log file path 2020-05-30 18:39:45 +02:00
Faryan Rezagholi
9687847630 made chromium the default rendering engine 2020-05-30 18:18:38 +02:00
Faryan Rezagholi
c9239e2d87 updated 7zip 2020-05-30 17:58:19 +02:00
Faryan Rezagholi
3931174890 set item check state in view menu after resetting layout 2020-05-30 17:27:11 +02:00
Faryan Rezagholi
a9b062a9d5 merged develop into pr/1690 2020-05-30 16:17:23 +02:00
Faryan Rezagholi
8578df57c6 Update README.MD 2020-05-30 15:43:17 +02:00
Faryan Rezagholi
7b621afa98 relocated user.config output folder to %localappdata%\mRemoteNG\ 2020-05-30 15:38:21 +02:00
Faryan Rezagholi
ef83160308 Updated troubleshooting section in documentation on how to find user.config file 2020-05-30 15:35:38 +02:00
Faryan Rezagholi
fad42f373e Merge pull request #1772 from mRemoteNG/missing_rdp_settings
Missing RDP settings
2020-05-28 12:10:44 +02:00
Faryan Rezagholi
d3f66dd7bb Merge pull request #1773 from SOlangsam/patch-1
update mysql_db_setup.sql - add SSH fields
2020-05-28 11:59:56 +02:00
Faryan Rezagholi
85fefdfabd fixed translation 2020-05-28 11:59:11 +02:00
Faryan Rezagholi
e36fb09ce5 Fixed order in changelog 2020-05-28 11:12:52 +02:00
SOlangsam
bdcb8da2db Update CHANGELOG.md 2020-05-27 17:20:54 +02:00
SOlangsam
4be7385628 update mysql_db_setup.sql - add SSH fields
For using mysql with the new dev version - four fields are missing in table tblCons:
   - SSHTunnelConnectionName
   - SSHOptions
   - InheritSSHTunnelConnectionName
   - InheritSSHOptions

Perhaps you can add a new section on your documation site.
2020-05-27 16:50:24 +02:00
Faryan Rezagholi
7ed4bf46d7 fixed failing tests 2020-05-26 22:28:31 +02:00
Faryan Rezagholi
98dd451502 implemented missing RDP settings #1770 2020-05-26 20:48:58 +02:00
Faryan Rezagholi
c5ded4ceac removed leftover ADTree.dll from project folder 2020-05-26 17:11:54 +02:00
Faryan Rezagholi
8ba2bf39ff referenced local VncSharp.dll instead of the nuget package, because local is v1.2.1.0 and nuget is v1.0.7 2020-05-26 14:48:40 +02:00
Faryan Rezagholi
0bafacbee3 fixed most of the dependencies not being found by vs 2020-05-26 13:29:46 +02:00
Faryan Rezagholi
ff9292bc42 migrated to PackageReference 2020-05-26 12:22:24 +02:00
Faryan Rezagholi
4df334ae86 updated nugets 2020-05-26 11:37:34 +02:00
Faryan Rezagholi
7e10a613b6 reinstalled nugets and removed gecko leftovers 2020-05-26 11:28:35 +02:00
Faryan Rezagholi
eece2a13c5 updated credits 2020-05-26 11:18:12 +02:00
Faryan Rezagholi
1165e639fd updated changelog 2020-05-26 11:14:03 +02:00
Faryan Rezagholi
ab9ffb45fd removed gecko components check 2020-05-26 11:09:53 +02:00
Faryan Rezagholi
e2cf3095e4 removed obsolete language entries 2020-05-26 11:05:29 +02:00
Faryan Rezagholi
0caa0ee004 fixed failing tests 2020-05-26 11:02:40 +02:00
Faryan Rezagholi
464fcc54ce merged develop into pr/1690 2020-05-26 10:52:52 +02:00
Faryan Rezagholi
049374b8ad removed gecko 2020-05-26 10:47:50 +02:00
Faryan Rezagholi
6b392f55c6 revised help window to use cefsharp instead of gecko 2020-05-26 10:39:05 +02:00
Faryan Rezagholi
421076062c added cefsharp scheme to be able to display local html files, e.g. the readthedocs documentation 2020-05-26 10:38:44 +02:00
Faryan Rezagholi
9b86b92a65 added request ahnbdler for cefsharp 2020-05-26 10:37:56 +02:00
Faryan Rezagholi
ec0e733fc6 added download handler for cefsharp 2020-05-26 10:37:42 +02:00
Faryan Rezagholi
a62b8103a0 fixed error on build 2020-05-26 10:28:17 +02:00
Faryan Rezagholi
1eedc99114 Merge pull request #1766 from mRemoteNG/move_component_check
Converted components check page into options page
2020-05-26 10:26:21 +02:00
Faryan Rezagholi
c8774abbab merged develop into move_component_check 2020-05-26 10:03:09 +02:00
Faryan Rezagholi
8d2217aa88 Merge pull request #1767 from mRemoteNG/aboutscreen
Revised about screen
2020-05-26 10:01:11 +02:00
Faryan Rezagholi
85d0a88420 Merge branch 'develop' into move_component_check 2020-05-26 09:56:02 +02:00
Faryan Rezagholi
a66b6d7392 Merge pull request #1762 from mRemoteNG/mergeadtree
Merge ADTree project classes into mRemoteNG
2020-05-26 09:53:28 +02:00
Faryan Rezagholi
0ebcc3c06d updated changelog 2020-05-26 09:49:59 +02:00
Faryan Rezagholi
f534883d62 revised about screen 2020-05-26 09:36:12 +02:00
Faryan Rezagholi
4726671035 updated documentation 2020-05-25 20:59:48 +02:00
Faryan Rezagholi
bdd54afc8a updated changelog 2020-05-25 20:57:38 +02:00
Faryan Rezagholi
d511976ba6 converted components check page into options page 2020-05-25 20:51:57 +02:00
Faryan Rezagholi
f83ed6dfb2 fixed spelling error 2020-05-25 00:22:32 +02:00
Faryan Rezagholi
4137e7f25e code cleanup 2020-05-24 22:45:15 +02:00
Faryan Rezagholi
aca46b76b1 added back theming 2020-05-24 22:40:05 +02:00
Faryan Rezagholi
4c773738d7 moved ADTree classes into mremoteng project 2020-05-24 22:37:47 +02:00
Faryan Rezagholi
eb8ab94e01 added ADTree project to solution 2020-05-24 21:24:06 +02:00
Faryan Rezagholi
11f5fb4aa2 fixed merging error 2020-05-24 17:59:04 +02:00
Faryan Rezagholi
f025733926 merged from develop 2020-05-24 17:57:53 +02:00
Faryan Rezagholi
9e2b8e2003 moved Settings class to its proper location 2020-05-24 17:35:46 +02:00
Faryan Rezagholi
ef081848b0 removed duplicate Console icon 2020-05-24 17:35:07 +02:00
Faryan Rezagholi
6aa1eea2fd updated nuget packages 2020-05-24 17:31:36 +02:00
Faryan Rezagholi
ab5aa4d83b fixed path to visual tiles manifest to be independant from release build 2020-05-24 17:31:25 +02:00
Faryan Rezagholi
a8005293af tried to remove all occurnces of the ica protocol in the code 2020-05-24 16:02:36 +02:00
Faryan Rezagholi
81891e0976 removed obsolete language entries 2020-05-24 13:39:22 +02:00
Faryan Rezagholi
fcf146fccc removed citrix dependencies 2020-05-24 13:39:11 +02:00
Faryan Rezagholi
8729e3f040 removed copying.md license file 2020-05-24 12:18:10 +02:00
Faryan Rezagholi
10673362a6 more guids 2020-05-24 11:08:08 +02:00
Faryan Rezagholi
a8a70e43cb added guids to prevent build error 2020-05-24 02:15:45 +02:00
Faryan Rezagholi
369b3402be updated link to documentation 2020-05-24 00:57:02 +02:00
Faryan Rezagholi
bc70548627 moved Console.ico into Icons folder 2020-05-21 18:18:27 +02:00
Faryan Rezagholi
39245b93d9 Merge pull request #1568 from fmcontrib/issue_420_proxy_aka_jumphost_support
SSH tunneling aka jumphost implemented
2020-05-21 11:16:15 +02:00
Faryan Rezagholi
1f8582b8fa fixed failing tests 2020-05-21 10:55:12 +02:00
Faryan Rezagholi
acb1bdc8e1 Updated documentation 2020-05-21 10:24:21 +02:00
Faryan Rezagholi
cd7a102dc9 Readded icons with PreserveNewest option 2020-05-21 00:21:54 +02:00
Faryan Rezagholi
58ed22a326 merged develop into pr/1568 2020-05-21 00:18:06 +02:00
Faryan Rezagholi
5771c7f798 Merge pull request #1729 from Hizzi/patch-1
Change "Crypter" to "Chiffrer"
2020-05-20 23:20:29 +02:00
Faryan Rezagholi
9598927dec Merge pull request #1714 from GurliGebis/fix-redirection-issues
Corrected how clipboard redirection is done
2020-05-20 23:18:15 +02:00
Hizzi
abffbb8598 Change "Crypter" to "Chiffrer"
"Crypter" is'nt french "Chiffrer" is.
2020-04-03 13:59:02 +02:00
Bjarke Istrup Pedersen
36b9d01917 Corrected how clipboard redirection is done
Previously DisableRdpdr was used, which broke smartcard and sound redirection.
By changing it to use AdvancedSettings6.RedirectClipboard, it works without breaking other stuff.
2020-03-17 09:56:19 +01:00
David Sparer
417eec1d45 Merge pull request #1689 from nLeonardt95/develop
ConnectionFileVersion from 2.7 to 2.8
2020-03-15 11:11:08 -05:00
David Sparer
0eb823ef89 Merge pull request #1687 from IPv777/develop
French localization typo fixing
2020-03-15 11:04:30 -05:00
Leaskovski
56c9435512 Fixed the HTTP CEF render engine not being localised properly. 2020-02-11 12:18:41 +00:00
Leaskovski
98bd901545 Updated CEF from 73 to release 79. 2020-02-10 17:16:34 +00:00
Leaskovski
e9607c30fb Updated CHANGELOG.md to include reference to new feature #1071 2020-02-10 16:43:43 +00:00
Leaskovski
281e3f0c79 Updated CEF Settings to set the logging location to that of the normal logs, and also set its logging level to a matching level as main logs as well. Also updated to now include a cache location so that revisits to previous pages (such as chrome remote desktop) retain logins. 2020-02-10 16:36:09 +00:00
Leaskovski
4f98b59e4f Removed cefBrowser_InitializedChanged event handling because this actually had no use to the browser loading and being usable. Fixed the issue of the CEF Browser not loading the requested URL on connect. Changed the loading logic of the CEF Browser to wait for cefBrowser_LoadingStateChanged to trigger and to look at if it is still loading before logging that the browser is initialised. Altered cefBrowser_LoadingStateChanged to register itself as an event once the browser is loaded as we don't care for any more events once we know it is safe to issue the Browser.Load() method. Updated Connect to record when it has been requested so that if the browser initialises after this request, it can retrigger the code to load the required URL automatically. Removed the dispose code, though this might need to be reimplemented after testing. Updated App.config and .csproj with settings defined in CEF user documentation. Updated some of the CEF Settings to recommended values. 2020-02-10 16:36:09 +00:00
Leaskovski
1d40791557 Added a new property that defines if the browser object has finished initialising, browserInitialised. Moved the URL construction code out to its own private method. Added in browser initialisation hook for CEF browser. Changed how the browser control is hooked in to its parent control. This fixes the CEF browser from not rendering. Enabled verbose logging for the CEF browser temporarily. 2020-02-10 16:36:08 +00:00
Leaskovski
212cd8378c Added in CEF Browser Navigation event handler and removed Gecko Title change handler as the generic one was handling it. Added in CEF settings code to main window. 2020-02-10 16:33:58 +00:00
Leaskovski
ae108f1e14 #1071 - Started to add the CEFSharp Browser Engine (Chromium) 2020-02-10 16:26:53 +00:00
leonardt.neugebauer
e7ed902f24 Set ConnectionsFileInfoSql.ConnectionFileVersion from 2.7 to 2.8 after fixes #1669 2020-02-06 17:49:44 +01:00
IPv777
3d93f793d5 typo fixing 2020-02-05 13:47:05 +01:00
Faryan Rezagholi
9257b7ac52 Merge pull request #1669 from Filippo125/sql_update#1589
Sql fixes
2020-01-16 16:36:31 +01:00
Faryan Rezagholi
28d131f74d fixed typo 2020-01-16 16:23:12 +01:00
Faryan Rezagholi
76e1ae3596 updated changelog 2020-01-16 15:16:08 +01:00
Filippo Ferrazini
8357cfc9b5 Add database migration
Update changelog and credits
2020-01-09 23:41:18 +01:00
Filippo Ferrazini
1250f389af Remove unnecessary code 2020-01-05 16:18:50 +01:00
Filippo Ferrazini
d0ae6ee21a Add check if sql row has to be updated 2020-01-04 14:15:02 +01:00
Filippo Ferrazini
40f5bd9444 Implement crud on mssql 2019-12-29 16:56:34 +01:00
Filippo Ferrazini
c3ea05b862 Fix mssql creation tblCons query 2019-12-29 16:56:15 +01:00
Filippo Ferrazini
488c6f5f64 Change tblCons primary key sql setup 2019-12-28 16:33:23 +01:00
Filippo Ferrazini
a1940e3ab9 Optimize code remove 2019-12-28 16:11:39 +01:00
Filippo Ferrazini
eda873911a Change behaviour in sql save, don't rewrite all database 2019-12-28 16:03:18 +01:00
Faryan Rezagholi
048f890dcb Merge pull request #1622 from wwj402/develop
update chinese simplified language 2019/10/16
2019-11-10 12:15:57 +01:00
Faryan Rezagholi
28c31fc101 fixed failing test 2019-11-10 12:05:24 +01:00
Faryan Rezagholi
852c6576cf Merge branch 'develop' into pr/1622 2019-11-09 19:32:50 +01:00
David Sparer
00a5fc0142 created user documentation for default connection properties 2019-10-16 11:46:33 -05:00
wwj402
48cca34055 update chinese simplified language 2019/10/16 2019-10-16 14:59:41 +08:00
Faryan Rezagholi
b2c5298400 removed incomplete variable example table 2019-10-07 22:23:34 +02:00
Faryan Rezagholi
cf5d5e6974 Merge pull request #1567 from mRemoteNG/powershell_remoting
Powershell remoting
2019-10-06 11:01:26 +02:00
Faryan Rezagholi
3266485307 Updated translated string, fixes #1611 2019-10-05 01:07:19 +02:00
Faryan Rezagholi
d27ae45512 fixed wrongly negated if statement 2019-10-04 21:48:00 +02:00
Faryan Rezagholi
c9f0ea47b7 merged develop into powershell_remoting 2019-10-04 00:59:24 +02:00
Faryan Rezagholi
d5100660fb added missing translation 2019-10-03 18:59:03 +02:00
Faryan Rezagholi
5c07327467 initialize settingsLoader earlier in code to prevent ui elements from being created before the language culture is propeperly set, part of #1497 2019-10-03 18:52:48 +02:00
Faryan Rezagholi
1e374d3a25 minimal code refractoring 2019-10-03 18:14:18 +02:00
Faryan Rezagholi
d68c419bab access language resources with nameof, part 2 2019-10-03 17:06:15 +02:00
Faryan Rezagholi
a9c4d0dee5 simply close options form instead of reverting settings, fixes #1610 2019-10-03 16:56:57 +02:00
Faryan Rezagholi
75a453e598 Merge pull request #1608 from Mant1kor/develop
Update Ukrainian translation
2019-10-03 12:13:44 +02:00
Faryan Rezagholi
404f23e7e6 fixed line break in credits 2019-10-03 11:49:30 +02:00
Mantikor
104be16061 Fixes 2019-10-03 10:33:23 +03:00
Mantikor
742301edf8 Update CREDITS.md 2019-10-03 10:31:57 +03:00
Mantikor
c3734f2e09 Add files via upload 2019-10-03 10:31:34 +03:00
Mantikor
e0cd4f2e0a Add files via upload 2019-10-03 10:30:22 +03:00
Faryan Rezagholi
db6042a30e updated nuget packages 2019-10-03 00:22:45 +02:00
Faryan Rezagholi
0e233e7027 Updated .NET to 4.7.2 2019-10-03 00:18:27 +02:00
Faryan Rezagholi
8e5d41bfea removed https in credits 2019-10-02 19:50:08 +02:00
Mantikor
8bb03195b5 Update CREDITS.md 2019-10-02 17:44:43 +03:00
Mantikor
de2bafd5a0 Update translation and fix errors 2019-10-02 17:28:01 +03:00
Faryan Rezagholi
4c08d06e93 fixed error where mrng would never close when set to "minimize to tray on close" 2019-10-01 14:01:10 +02:00
Faryan Rezagholi
ab5b58f3ae Merge branch 'develop' of https://github.com/mRemoteNG/mRemoteNG into develop 2019-10-01 09:31:36 +02:00
Faryan Rezagholi
31f637bc51 Added option to minimize to system tray on closing, fixes #545 2019-10-01 09:31:11 +02:00
Faryan Rezagholi
fbcfdb3fea Merge pull request #1601 from ryno2121/develop
Increased VNC test connection timeout from 150ms to 500ms
2019-09-30 14:13:58 +02:00
ryno2121
b1c650bb72 Increased VNC test connection timeout from 150ms to 500ms
It has been found at times that when connecting to a VNC host that the connection times-out even though the host is powered on. This happens mostly when you are connected to the network through WiFi. The time out value for the VNC test connection has been increased from 150ms to 500ms.
2019-09-30 06:05:42 +02:00
Faryan Rezagholi
209a3fb381 Merge pull request #1596 from ryno2121/develop
Handle VNC timeout
2019-09-27 23:51:37 +02:00
Faryan Rezagholi
772a11cb1d small code improvements and formatting 2019-09-27 23:29:44 +02:00
Faryan Rezagholi
758f7770a1 updated changelog 2019-09-27 23:02:52 +02:00
ryno2121
b319eb188a Update CHANGELOG.md 2019-09-27 18:56:37 +02:00
ryno2121
8ad7547640 Added code to report within 150ms a timeout error if no connection can be made on the VNC port for 150ms. 2019-09-27 17:26:45 +02:00
Faryan Rezagholi
8b060745ef do not try to display multi ssh command from history when there are none, fixes #1595 2019-09-27 09:50:01 +02:00
Faryan Rezagholi
baf2037ca1 Merge pull request #1583 from ng3727/fix_about_window_click
Fix about window url click, updated CREDITS.md
2019-09-19 14:38:11 +02:00
Faryan Rezagholi
7bf00e30e6 minor code formatting 2019-09-19 14:12:22 +02:00
ng3727
55c983c565 Update AboutWindow.cs
fix if the clicked isn't a link, i.e. empty status bar text caused the process start
to cause an exception
2019-09-17 21:45:48 +01:00
ng3727
6a4cd70811 Update CREDITS.md
changed gibhub.com urls to be http:// this allows the urls to be clickable
2019-09-17 21:43:25 +01:00
Fred Fred
851f8dedec Resolved conflicts with develop branch. 2019-09-14 22:10:26 +04:00
Faryan Rezagholi
652a580ec6 fixed typo 2019-09-14 12:04:12 +02:00
Faryan Rezagholi
0d2a2134b9 Merge branch 'develop' into powershell_remoting 2019-09-14 12:03:12 +02:00
Faryan Rezagholi
a330d3e943 fixed copy-paste error 2019-09-12 13:05:39 +02:00
Faryan Rezagholi
0034f78edc merged develop into powershell_remoting 2019-09-10 00:13:23 +02:00
Faryan Rezagholi
27e71ebfc7 get protocol type descriptions by nameof instead of accessing them directly 2019-09-09 23:50:36 +02:00
Faryan Rezagholi
f0f3ddef87 Set localized attributes values by nameof instead of accessing them directly
Makes tracking of used/unused items and renaming items easier
2019-09-09 23:40:04 +02:00
Faryan Rezagholi
f65478ee36 added missing translations 2019-09-09 23:37:48 +02:00
Faryan Rezagholi
4bd7d63d9c merged develop into powershell_remoting 2019-09-09 23:04:48 +02:00
Faryan Rezagholi
bf31b23878 more changelog updates 2019-09-09 21:46:57 +02:00
Faryan Rezagholi
c2ba6d87b2 updated changelog 2019-09-09 21:31:36 +02:00
Faryan Rezagholi
978a53852a some code formatting 2019-09-09 21:24:36 +02:00
Faryan Rezagholi
d20a186e5e removed duplicate icon 2019-09-09 21:05:59 +02:00
Faryan Rezagholi
c384ec373a fixed remaining failing tests 2019-09-09 21:05:28 +02:00
Faryan Rezagholi
c5e0a18dfa fixed some tests 2019-09-09 20:31:56 +02:00
Faryan Rezagholi
4d1ab9ee9f removed duplicate property after merge 2019-09-09 20:11:50 +02:00
Faryan Rezagholi
02384dc26f merged develop into pr/1568 2019-09-09 19:59:09 +02:00
Faryan Rezagholi
e46a53f188 removed db version upgrader to 2.8 and reimplemented new properties into 2.7 upgrader 2019-09-09 18:38:54 +02:00
Faryan Rezagholi
0343254cad Merge pull request #1569 from damianszczepanik/translations-pl
Add translations for Polish language
2019-09-09 09:03:36 +02:00
Damian Szczepanik
9aaafa5015 Add translations for Polish language 2019-09-08 23:15:53 +02:00
Faryan Rezagholi
04bd78e91a Merge pull request #1565 from mRemoteNG/vmid_enhancedmode
Added option to set enhanced mode
2019-09-08 15:57:29 +02:00
Faryan Rezagholi
7ce17c7fb3 added powershell connection icon 2019-09-08 15:27:56 +02:00
Faryan Rezagholi
2a796d3bf5 Update PULL_REQUEST_TEMPLATE.md 2019-09-08 14:58:25 +02:00
Faryan Rezagholi
944aa6b13e Changed background color to native powershell color 2019-09-08 14:56:52 +02:00
Faryan Rezagholi
58add600d6 Update PULL_REQUEST_TEMPLATE.md 2019-09-08 14:30:06 +02:00
Faryan Rezagholi
b1089de1ad Revert "Set language version to C#7.1"
This reverts commit 69c1e2ccc2.
2019-09-08 14:07:22 +02:00
Faryan Rezagholi
69c1e2ccc2 Set language version to C#7.1 2019-09-08 13:43:13 +02:00
Faryan Rezagholi
6ec23d9d69 removed unnecessary usings 2019-09-08 13:07:14 +02:00
Faryan Rezagholi
de3072c67e Added ConsoleControl, since it seems that the powershell.exe cannot be integrated 2019-09-08 13:02:58 +02:00
Faryan Rezagholi
35f6d3eb90 updated documentation 2019-09-08 02:30:55 +02:00
Faryan Rezagholi
f0ffcc6944 updated changelog 2019-09-08 02:25:42 +02:00
Faryan Rezagholi
5ab3f71551 removed redundant language resources 2019-09-08 02:23:53 +02:00
Faryan Rezagholi
cef3b9294d cleanup 2019-09-08 02:22:19 +02:00
Fred Fred
11e3075347 issue #420 sshtunnel aka jumphost implemented 2019-09-07 22:10:03 +04:00
Faryan Rezagholi
0008631771 Added PowerShell Protocol for remote PS-Sessions 2019-09-07 18:16:36 +02:00
Faryan Rezagholi
8e5caaca55 Merge branch 'develop' into vmid_enhancedmode 2019-09-07 16:46:57 +02:00
Faryan Rezagholi
8c962e8b60 Merge pull request #1555 from mRemoteNG/update_geckofx
Updated GeckoFX
2019-09-07 16:42:02 +02:00
Faryan Rezagholi
7ebcba3c21 fixed enhancedMode value not being translated 2019-09-07 06:08:24 +02:00
Faryan Rezagholi
7ac45dbd32 fixed failing tests 2019-09-06 21:02:15 +02:00
Faryan Rezagholi
b83488d08a Added option to det enhanced mode as requested in #1564 2019-09-06 14:59:41 +02:00
Faryan Rezagholi
5528b701fb fixed installer build error 2019-09-03 16:09:36 +02:00
Faryan Rezagholi
8767d103f0 Updated Changelog 2019-09-02 23:15:05 +02:00
Faryan Rezagholi
ca66656a8e updated geckofx from 45 to 60 2019-09-02 22:55:09 +02:00
David Sparer
41e299aaaf dev channel badge updated in readme 2019-09-02 12:33:27 -05:00
Faryan Rezagholi
c3f44ef70a corrected wrongly negated if-statement, fixes #1337 2019-09-02 19:31:08 +02:00
Faryan Rezagholi
fa44e66bd9 Revert "do not automatically enable inheritance on connections imported from AD, fixes #1518"
This reverts commit c1b6bd4679.
2019-09-02 19:25:31 +02:00
Faryan Rezagholi
0b944c4222 added lithuanian language dummy file (copy from default one) as a template to be translated #878 2019-09-02 18:33:10 +02:00
David Sparer
11abc789a0 fixed nunit runner path in publish script 2019-09-02 10:20:41 -05:00
David Sparer
15e2cdaad0 release date set in changelog 2019-09-02 10:03:01 -05:00
David Sparer
10b6973f0d updated changelog and bumped minor version 2019-09-02 09:59:21 -05:00
Faryan Rezagholi
24cd9f257c Moved port property from 'protocol' to 'connection' section, fixes #718 2019-09-01 18:30:30 +02:00
Faryan Rezagholi
8ecb49709e Added missing description for password protect field in root node, fixes #617 2019-09-01 18:00:39 +02:00
Faryan Rezagholi
e12d20ab85 Added option to start mRemoteNG minimized, fixes #1385 2019-09-01 15:52:05 +02:00
Faryan Rezagholi
8b7f7b16a8 revised sort button in connection tree to be able to sort in both orders, fixes #1434 2019-09-01 15:04:16 +02:00
Faryan Rezagholi
117e57d7b0 Allow for sorting in port scan results, fixes #841 2019-08-30 21:57:47 +02:00
Faryan Rezagholi
56b3f9355a Set browser language when using geckofx, fixes #553 2019-08-30 21:41:57 +02:00
Faryan Rezagholi
70af08616f Changed rendering engine of documentation to gecko. Open external links in os default browser, fixes #1378 2019-08-30 18:01:18 +02:00
Faryan Rezagholi
6066cb708e set protocol type when importing from ad, possible fix for #759 2019-08-30 16:28:42 +02:00
Faryan Rezagholi
c1b6bd4679 do not automatically enable inheritance on connections imported from AD, fixes #1518 2019-08-30 16:21:13 +02:00
Faryan Rezagholi
88617759f6 Merge pull request #1508 from Airthee/patch-1
Delete Readme.txt
2019-08-30 15:46:19 +02:00
Faryan Rezagholi
3df98602ee Merge pull request #1551 from ng3727/origin/fix_MsSql_RdpVersion_null
Update DataTableDeserializer.cs handle null values in column RdpVersion
2019-08-30 15:35:19 +02:00
Faryan Rezagholi
3da989e37f Merge pull request #1532 from Filippo125/db_structure#1493
Fixed DB setup scripts, fixes #1493
2019-08-30 15:33:13 +02:00
Faryan Rezagholi
f735237b3a removed README.TXT from installer 2019-08-30 15:29:16 +02:00
david-sway
125330b695 Added handling of Gecko.LauncherDialog.Download (#1548)
* Added handling of Gecko.LauncherDialog.Download
Code lifted from https://stackoverflow.com/questions/27368791/how-to-handle-downloading-in-geckofx-29
This code addition addresses https://github.com/mRemoteNG/mRemoteNG/issues/1400
* updated changelog for #1400
* refractored launcher dialog method
2019-08-30 15:15:45 +02:00
Faryan Rezagholi
11199eabf3 Merge pull request #1544 from damianszczepanik/translate
Add translations for Polish language
2019-08-30 14:22:12 +02:00
ng3727
12b4eb64ba Update DataTableDeserializer.cs
Table allows for null values which must be handled so as not to create an error
2019-08-27 15:19:09 +01:00
Damian Szczepanik
d62fd25db5 Add translations for Polish language 2019-08-22 23:47:17 +02:00
Faryan Rezagholi
58851aadb0 fixed another occurence of a spelling mistake like mentioned in #1458 2019-08-22 14:50:04 +02:00
Faryan Rezagholi
322049196c Merge pull request #1524 from wwj402/develop
update chinese simplified language 2019/07/23
2019-08-17 19:09:02 +02:00
David Sparer
ce85801dcf removed the no-longer used option "automatically get session info" from settings 2019-08-14 08:52:54 -05:00
Filippo Ferrazini
04ad29d7c9 Fix table tblCons structure 2019-08-01 17:42:54 +02:00
Filippo Ferrazini
92f532c694 Fix database issue, column duplicate and absent 2019-08-01 17:26:58 +02:00
wwj402
9188979367 update chinese simplified language 2019/07/23 2019-07-23 10:55:25 +08:00
Faryan Rezagholi
b21379952b Added option to close panel from right click menu, fixes #1512 2019-07-13 18:31:07 +02:00
Raphaël
900c5c8351 Delete Readme.txt
I think this file is no longer maintained and has been replaced by the README.md
2019-07-08 08:41:57 +02:00
Faryan Rezagholi
5cab342c8c do not try to show an exception windows when main form is already disposed 2019-07-01 22:24:46 +02:00
Faryan Rezagholi
69e4bc2650 set html colors of about screen based on current color theme, fixes #1505 2019-07-01 21:56:39 +02:00
Faryan Rezagholi
cabd712b75 updated sql upgrader class to reflect recent changes, fixes #1501 2019-07-01 00:41:58 +02:00
Faryan Rezagholi
fe4266a41e updated nuget packages 2019-07-01 00:38:00 +02:00
Faryan Rezagholi
07fa8232e4 Revert "migrate package.config to PackageReference"
This reverts commit 17e227236f.
2019-07-01 00:16:32 +02:00
Faryan Rezagholi
d02ec9bec6 Revert "updated nuget packages"
This reverts commit 91b1007083.
2019-07-01 00:16:10 +02:00
Faryan Rezagholi
47a508b9ea Merge pull request #1498 from mRemoteNG/feature/rdp_version_selection
Add option to choose RDP protocol version
2019-06-29 12:20:27 +02:00
Faryan Rezagholi
6c620b09c9 updated german translation 2019-06-27 23:21:36 +02:00
Faryan Rezagholi
cb822c44ce Merge branch 'develop' into feature/rdp_version_selection 2019-06-27 23:08:38 +02:00
Faryan Rezagholi
aa9d5ce04e fixed failing tests 2019-06-27 23:08:09 +02:00
Faryan Rezagholi
8876cb91c9 Merge branch 'develop' into feature/rdp_version_selection 2019-06-26 15:03:36 +02:00
Faryan Rezagholi
91b1007083 updated nuget packages 2019-06-26 09:08:24 +02:00
Faryan Rezagholi
17e227236f migrate package.config to PackageReference 2019-06-26 00:39:08 +02:00
David Sparer
22ba4c86bb fixed bug with opening ssh connections
introduced in 65edebc
2019-06-25 08:01:14 -05:00
David Sparer
017d9c8290 updated db init scripts for RdpVersion property 2019-06-24 09:43:06 -05:00
David Sparer
2f7c930859 removed the option for Rdc10 since it is not available for general use yet 2019-06-24 09:36:42 -05:00
David Sparer
983637973b fixed failing tests 2019-06-24 09:30:10 -05:00
David Sparer
bb2e0f0b7d renamed more items to RdpVersion as suggested in code review 2019-06-24 08:31:38 -05:00
David Sparer
0d8a3b84fe simplified RDP version property name and description 2019-06-23 18:15:44 -05:00
David Sparer
3503652df3 added documentation note to rdp 7 warning about performance flag support 2019-06-23 15:34:27 -05:00
David Sparer
1a82e48b3d minor cleanup 2019-06-23 15:29:06 -05:00
David Sparer
f5a86814a9 removed rdp KBs from the install requirements 2019-06-23 15:28:50 -05:00
David Sparer
bde3b691ff updated changelog 2019-06-23 15:15:13 -05:00
David Sparer
ed53db1bdc added an error message for when the rdp client class doesn't exist 2019-06-23 14:11:54 -05:00
David Sparer
ecbd62676b Merge branch 'develop' into feature/rdp_version_selection
# Conflicts:
#	mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs
#	mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs
#	mRemoteV1/Connection/Protocol/RDP/RdpProtocol6.cs
#	mRemoteV1/Properties/Settings.Designer.cs
#	mRemoteV1/Properties/Settings.settings
#	mRemoteV1/app.config
2019-06-23 13:33:40 -05:00
David Sparer
b343ebec15 minor cleanup 2019-06-23 13:15:15 -05:00
David Sparer
99e1de2503 fixed issue where performance flags were not being honored on newer versions of windows
fixes #323
2019-06-23 13:15:08 -05:00
Faryan Rezagholi
94f8c495d2 updated changelog 2019-06-23 17:12:31 +02:00
Faryan Rezagholi
1fc11c65a5 merged develop into pr/1332 2019-06-23 17:05:43 +02:00
Faryan Rezagholi
f7700b9279 Update README.MD 2019-06-21 21:28:49 +02:00
Faryan Rezagholi
4007568d93 Merge pull request #1422 from mRemoteNG/hyperv
Support for Hyper-V VMRDP
2019-06-21 14:59:02 +02:00
Faryan Rezagholi
208134e970 merged develop into hyperv 2019-06-21 13:58:51 +02:00
Faryan Rezagholi
bda5d481b2 Enable enhanced mode by default 2019-06-21 13:55:03 +02:00
Faryan Rezagholi
00609f5a5d removed trailing slash from URLs, fixes #1496 2019-06-20 22:34:27 +02:00
Faryan Rezagholi
09f52a32a6 Update connections.rst
fixed typo
2019-06-18 01:33:46 +02:00
Faryan Rezagholi
73c14a9ad0 updated help to include info about PuTTY menu #1209 2019-06-18 00:28:15 +02:00
Faryan Rezagholi
8cc826a57b Merge pull request #1491 from cguadall/patch-1
Update Language.es.resx
2019-06-17 22:27:50 +02:00
cguadall
02e17f9845 Update Language.es.resx
Fix "dle" typo
2019-06-16 09:00:59 +02:00
David Sparer
3e18a25ed3 Merge pull request #1489 from wwj402/develop
update chinese simplified language 2019/06/13
2019-06-15 20:05:58 -05:00
David Sparer
4c31106839 modified RTD theme to prevent scroll bars on list-table cells 2019-06-15 17:59:15 -05:00
David Sparer
2b8ff1d090 added a protocols/rdp page to the documentation 2019-06-15 17:57:58 -05:00
David Sparer
9e7690054d fixed a sphinx warning 2019-06-15 17:56:30 -05:00
David Sparer
2e6fdce592 removed unnecessary files 2019-06-15 17:56:14 -05:00
wwj402
eee40c2130 update chinese simplified language 2019/06/13 2019-06-13 17:08:23 +08:00
David Sparer
818fe3adfc removed pre-install check for RDP KBs
These should no longer be required since we can now dynamically select
which RDP protocol version to use.
2019-06-12 07:59:33 -05:00
David Sparer
f6bfaf415f finished updating serializers and added a default setting for the rdp protocol version property 2019-06-11 15:47:07 -05:00
David Sparer
35a3190b28 updated the component check window to check all supported RDP versions 2019-06-11 14:13:01 -05:00
David Sparer
65edebca2e finished splitting up rdp functionality between classes 2019-06-11 10:44:26 -05:00
David Sparer
aef9be8d9b began re-splitting rdp into different classes by version 2019-06-10 19:34:26 -05:00
Faryan Rezagholi
3acb9f1842 local attribute "favorite not getting serialized", fixes #1470 2019-06-09 23:50:15 +02:00
David Sparer
9f7271178f Merge pull request #1469 from Glober777/FixGetArchitectureData
Improve startup time
2019-06-09 12:45:29 -05:00
Faryan Rezagholi
5038deaf97 updated changelog 2019-06-09 13:23:34 +02:00
Faryan Rezagholi
d6e04156f1 Merge pull request #1473 from suggestable/patch-1
corrected spelling mistake
2019-06-04 22:53:45 +02:00
Faryan Rezagholi
07d7f10622 fixed spellling mistake 2019-06-04 21:57:21 +02:00
Sarah Van der Veken
78a1058aa1 Update sql_configuration.rst
Correcting English syntax
2019-06-04 11:56:42 +01:00
Ivan Seriavin
f16894869a Resolves https://github.com/mRemoteNG/mRemoteNG/issues/1468 2019-05-30 14:27:27 +03:00
David Sparer
31240fa50d moved most RDP enums to their own files 2019-05-27 12:22:26 -05:00
Faryan Rezagholi
0f7c2c83b3 fixed wrong word in russian tranlation #1458 2019-05-25 12:43:10 +02:00
David Sparer
22e43c84fc fixes #1456 2019-05-24 08:31:15 -05:00
Faryan Rezagholi
f9160677c3 Update README.MD
updated stale link, fixes #1457
2019-05-23 21:15:08 +02:00
David Sparer
0b1f04abe3 fixes #1379 2019-05-21 07:51:41 -05:00
David Sparer
c28b4d39ad moved sql scripts to separate files to ease management 2019-05-20 07:41:36 -05:00
David Sparer
4349b1b65b dont save settings on individual settings pages 2019-05-19 16:23:00 -05:00
David Sparer
bb04605dc3 Merge branch 'develop' into reapply_credential_manager
# Conflicts:
#	mRemoteNGTests/Connection/DefaultConnectionInheritanceTests.cs
#	mRemoteNGTests/TestHelpers/ConnectionInfoHelpers.cs
#	mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs
#	mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs
#	mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs
#	mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs
#	mRemoteV1/Config/Serializers/MiscSerializers/RemoteDesktopConnectionManagerDeserializer.cs
#	mRemoteV1/Connection/AbstractConnectionRecord.cs
#	mRemoteV1/Connection/ConnectionInitiator.cs
#	mRemoteV1/Connection/Protocol/RDP/RdpProtocol.cs
#	mRemoteV1/Resources/Help/ui_external_tools.htm
#	mRemoteV1/Resources/Language/Language.resx
#	mRemoteV1/UI/Controls/ConnectionTree/ConnectionTree.cs
#	mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.Designer.cs
#	mRemoteV1/UI/Window/ConfigWindow.cs
#	mRemoteV1/UI/Window/ConnectionTreeWindow.Designer.cs
#	mRemoteV1/mRemoteV1.csproj
2019-05-19 16:19:18 -05:00
David Sparer
519efe633f updated changelog 2019-05-18 15:14:40 -05:00
David Sparer
cf680eba4a fixed issue with collection-changed exception when iterating over items to save 2019-05-18 15:10:51 -05:00
David Sparer
63c78f986d added button to test encryption settings on the security page 2019-05-18 15:10:08 -05:00
David Sparer
57d8b0c803 default kdf iteration count is now 10000 2019-05-18 15:09:24 -05:00
David Sparer
cae906d226 simplified connection initiator method overloads 2019-05-13 14:07:10 -05:00
David Sparer
1ebe773b6e minor cleanup of ng search box 2019-05-13 13:30:13 -05:00
David Sparer
594f005476 fixed a few more cases where default text wouldn't behave correctly 2019-05-13 13:28:25 -05:00
David Sparer
027e37545b added a "defaulttext" mode to the ng search box
This will prevent a bug when users want to perform a real search
using the same term as Language.strSearchPrompt
2019-05-13 12:54:36 -05:00
David Sparer
4fc82ab7c1 fixes #1439 2019-05-13 12:17:50 -05:00
David Sparer
565e163b3e fixes #1447 2019-05-13 09:31:17 -05:00
Faryan Rezagholi
e6c26dde7b Merge pull request #1443 from wwj402/develop
update chinese simplified language base on commit 9fdcffd
2019-05-12 15:36:57 +02:00
Faryan Rezagholi
6e8acc0f4c Merge branch 'develop' into develop 2019-05-12 15:00:25 +02:00
Faryan Rezagholi
b7fff50d31 updated changelog 2019-05-12 14:58:33 +02:00
Faryan Rezagholi
a2d240ee4a Merge pull request #1437 from petterjohanolsen/develop
Updated Norwegian translation
2019-05-12 14:55:55 +02:00
Faryan Rezagholi
a69f6925e9 updated changelog file 2019-05-12 14:42:00 +02:00
Faryan Rezagholi
c4544832d2 Update PULL_REQUEST_TEMPLATE.md 2019-05-12 14:24:20 +02:00
wwj402
e9dcb986f9 update chinese simplified language base on commit 9fdcffd 2019-05-08 14:36:02 +08:00
Petter Johan Olsen
93b6fe7aab Updated Norwegian translation 2019-05-05 20:13:49 +02:00
Faryan Rezagholi
d6aadef2b8 Update CONTRIBUTING.md
fixed spelling
2019-05-03 00:01:44 +02:00
Faryan Rezagholi
4e0fb6bf65 updated changelog 2019-05-02 23:54:37 +02:00
Faryan Rezagholi
93c4f99619 Merge branch 'develop' into hyperv 2019-05-02 10:00:31 +02:00
Faryan Rezagholi
7c489cb9aa fixed error where connecting to vm on localhost
fixed error where rdp pre connection blob would not work if mrng is also running on localhost in a console session
2019-05-02 09:57:52 +02:00
Faryan Rezagholi
1d74cc8225 updated collapse/expand icons 2019-05-01 22:40:25 +02:00
Faryan Rezagholi
8021529a41 added back github health files 2019-05-01 22:27:54 +02:00
Faryan Rezagholi
2791f60a58 fixed the rest of the failing tests 2019-05-01 20:43:02 +02:00
Faryan Rezagholi
88e88be756 fixed some failing tests 2019-05-01 16:29:16 +02:00
Faryan Rezagholi
13d42ae288 moved and revised documentation 2019-05-01 01:16:39 +02:00
Faryan Rezagholi
5408cc6015 merged 'develop' into hyperv 2019-05-01 00:23:12 +02:00
Faryan Rezagholi
c97fbba173 Merge pull request #1430 from sli-pro/develop
Minor changes to option pages for russian language
2019-05-01 00:12:37 +02:00
Faryan Rezagholi
79d9e806d5 Merge branch 'develop' into develop 2019-04-30 23:59:27 +02:00
Faryan Rezagholi
12589ffbe0 more little improvements 2019-04-30 23:57:18 +02:00
Faryan Rezagholi
f21b62241a updated changelog 2019-04-30 23:03:48 +02:00
Faryan Rezagholi
b6cd10b51e removed pr template in favor of community-health repository 2019-04-30 21:52:50 +02:00
Faryan Rezagholi
e7344cdc24 updated changelog 2019-04-30 21:52:08 +02:00
Faryan Rezagholi
4e118493d2 Sphinx docs (#1384)
* included changes from @nmat from separate repo into mrng

* added sphinx-doc build dir

* fixed error on non-appveyor builds

* removed unneccesary variable

* added post-build script for sphinx documenatation

* retired "move_help_files" post build script

* added sphinx-documentation files to project

* display spinx docs

* changed theme to read the docs

* fixed typo

* restructured sphinx dir

* added documentation forr keyboard shortcuts and command line switches

* more hierarchy fixes

* added known issues

* added images for sphinx docs to project

* added quick connect documentation

* added port scan documentation

* added screenshot manager documentation

* added notifications documentation

* added import/export documentation

* added ssh file transfer documentation

* added connection config documentation

* added options documentation

* added menus documentation

* converted remaining help files and tidied up resources

* fixed formatting error

* modified sphinx script to automatically grab assembly details from assembly file

* modified copyright string for automated sphinx builds

* splitted toctree

* added RTD configuration file

* added RTD badge

* use default values if assembly file cannot be found

* removed colons from headings

* Minor fixes

* Remove source link so its not confusing for users

* Fix minor spelling

* Add editorconfig for rst files

* added external tools cheat sheet

* extended known issues segment

* added contact information

* Fix list item in document:

* Under "Opening and Closing Connections"

* added infor on how to migrate from pre-NG versions

* fixed list not being rendered properly

* removed markup guide from help to move it to the github wiki

* added missing information from github wiki

* removed contributing document from repository itself to move it to the wiki

* fixed formatting error

* Add more information for import/export

* minor wording fixes

* moved troubleshooting and known issues to its own support section

* moved "folders and inheritance" under "application handling"

* Minor formatting fixes

* Formatting fixes

* Updated docs for ssh file transfer:

* Added screenshot

* Updated documentation a little

* added FAQ

* revised external tools

* fixed sphinx build errors

* changed heading format

* do not output images for sphinx docs to build dir

* removed issue/pr templates

* updated appveyer configuration

* added missing variables

* added python to path

* output PATH for debugging

* sphinx build tests

* Minor cleanup

* added sql script changes into sphinx docs

* removed unused appveyor.xml
2019-04-30 21:42:32 +02:00
sli-pro
590b526079 Minor changes and forms of the Russian language 2019-04-30 21:22:48 +03:00
Faryan Rezagholi
b051e8cc46 Update PULL_REQUEST_TEMPLATE.md
added changelog to pr template checklist
2019-04-30 19:59:32 +02:00
David Sparer
952c2e570e updated changelog 2019-04-30 12:48:53 -05:00
David Sparer
d9834eae6d safer cast in the fips checker
fixes #1428
2019-04-30 12:46:47 -05:00
David Sparer
1901686a2a updated changelog 2019-04-30 10:33:31 -05:00
David Sparer
9efe4f41bf refactored to removed some casts 2019-04-30 10:28:58 -05:00
David Sparer
3fad296e3f use panel setting from connection info unless empty or overriden
fixes #1425
2019-04-30 10:28:03 -05:00
David Sparer
100b101e60 fixed update check file script to point to changelog.md 2019-04-30 08:03:19 -05:00
David Sparer
b66022fb64 fixed #1426 2019-04-30 07:10:06 -05:00
David Sparer
3e354868ea also fix installer project cert password reference 2019-04-29 17:54:11 -05:00
David Sparer
a6fda6c76a get cert password from build args rather than environment
change this back once appveyor is working
2019-04-29 17:37:08 -05:00
David Sparer
7ea08a0f6b fixed changelog and credits links in the csproj 2019-04-29 17:00:36 -05:00
David Sparer
dda6726a43 removed the unreleased section of the changelog for release 2019-04-29 15:03:16 -05:00
Faryan Rezagholi
70deb278e5 removed stale code and small code refractoring 2019-04-29 21:53:58 +02:00
Faryan Rezagholi
017934ab8e open links in about form with system default browser 2019-04-29 21:46:47 +02:00
Faryan Rezagholi
c8c98ebc02 updated changelog 2019-04-29 19:50:38 +02:00
David Sparer
939d49db57 Merge pull request #1419 from mRemoteNG/markdown
Move CHANGELOG.TXT to CHANGELOG.md
2019-04-29 12:21:07 -05:00
Faryan Rezagholi
9994a214b5 Jump between octet fields with tab, fixes #1423 2019-04-29 19:03:53 +02:00
Faryan Rezagholi
5d44ff8ca5 updated vmrdp documentation 2019-04-29 18:46:54 +02:00
David Sparer
60cef9fa49 fixed installer for markdown files 2019-04-29 11:16:35 -05:00
David Sparer
dda98b2902 Merge branch 'develop' into markdown 2019-04-29 08:53:04 -05:00
David Sparer
19ddc9de97 set the release date for 1.77.0 2019-04-29 08:42:41 -05:00
David Sparer
7985344042 updated changelog for #1389 2019-04-29 08:41:20 -05:00
Faryan Rezagholi
259768f92f updated (de)serializers 2019-04-28 22:30:13 +02:00
Faryan Rezagholi
e61716e25c added german translation for ne connection properties 2019-04-28 16:36:40 +02:00
Faryan Rezagholi
99d747aabe make it possible to connect to vm via id 2019-04-28 15:57:36 +02:00
Faryan Rezagholi
d789e0d5a4 do not hide user/pass/domain when connecting via vm id 2019-04-28 15:04:19 +02:00
Faryan Rezagholi
6524bbed43 added necessary properties to connect to hyper-v virtual machine via VM ID 2019-04-27 19:21:14 +02:00
Faryan Rezagholi
9b9dfbe46a fix display of copyright sign 2019-04-25 11:52:42 +02:00
Faryan Rezagholi
12c67f4244 added link to full changelog 2019-04-25 11:31:17 +02:00
Faryan Rezagholi
cd66d335e8 code-cleanup 2019-04-25 11:07:35 +02:00
Faryan Rezagholi
20a33eb69f removed implementation instructions, fixes #1153 2019-04-25 03:58:26 +02:00
Faryan Rezagholi
ee0fabca8e revised about window to show markdown file as html in gecko web browser 2019-04-25 03:38:41 +02:00
Faryan Rezagholi
527d0b85ad Added Markdig markdown parser 2019-04-25 03:37:10 +02:00
Faryan Rezagholi
4a72a0535b beautified file 2019-04-25 03:36:41 +02:00
Faryan Rezagholi
361d2246ed merged develop into markdown 2019-04-24 23:15:19 +02:00
Faryan Rezagholi
ffd8a9e87b Added new markdown files to project 2019-04-24 23:10:37 +02:00
David Sparer
be347da9f2 Merge pull request #1389 from mRemoteNG/refactor_config_window
Refactored config window to make property management easier
2019-04-24 12:08:12 -05:00
David Sparer
c01b2ca4be Merge branch 'develop' into refactor_config_window
# Conflicts:
#	mRemoteV1/UI/Window/ConfigWindow.cs
2019-04-24 10:27:27 -05:00
David Sparer
12ad4d2a22 improved the description of the remote audio capture property 2019-04-24 10:18:54 -05:00
David Sparer
18d992b96d updated changelog for #1414 2019-04-24 10:15:51 -05:00
David Sparer
59c74c6101 Merge pull request #1414 from bllkrkmz/develop
Add "Remote Audio Capture" option #383
2019-04-24 10:13:40 -05:00
David Sparer
cf4f552595 moved some theming code from the connection tree window to the connection tree itself 2019-04-23 15:11:50 -05:00
David Sparer
c6a16823b0 fixed ugly unthemed border around connection search box 2019-04-23 14:46:09 -05:00
David Sparer
0eb6185b6c made the connection tree theming code slightly more readable 2019-04-23 14:45:45 -05:00
David Sparer
d11e99b918 removed dead code 2019-04-23 14:30:57 -05:00
David Sparer
ff721ae820 properly theme the password dialog 2019-04-23 14:28:00 -05:00
Bennett Blodinger
dab605f50d Update CHANGELOG.md 2019-04-19 19:16:13 -05:00
David Sparer
cd40f04443 close the splash screen if it exists when an unhandled exception occurs 2019-04-19 10:33:41 -05:00
David Sparer
160e5696fe updated app manifest so we can correctly retrieve win10 version numbers 2019-04-19 10:33:17 -05:00
David Sparer
e98cd4ef55 our unhandled exception window now displays relevant environment info 2019-04-19 10:32:49 -05:00
David Sparer
79fddf1395 updated changelog with some missing items for v1.77 2019-04-18 15:48:00 -05:00
David Sparer
753e8bc049 Merge branch 'master' into develop
# Conflicts:
#	CHANGELOG.TXT
#	mRemoteV1/Config/Serializers/MiscSerializers/RemoteDesktopConnectionManagerDeserializer.cs
#	mRemoteV1/Properties/AssemblyInfo.cs
2019-04-18 08:34:59 -05:00
bllkrkmz
2ae59b049c solved some problem according to test case 2019-04-18 09:00:07 +03:00
bllkrkmz
140429c931 Merge branch 'develop' of https://github.com/bllkrkmz/mRemoteNG into develop 2019-04-17 14:33:05 +03:00
bllkrkmz
ad756617dd Add "Remote Audio Capture" option #383 2019-04-17 14:32:37 +03:00
bllkrkmz
8812cd18ad Added "Remote Audio Capture" option 2019-04-17 14:27:46 +03:00
Faryan Rezagholi
ce71fe2b06 Merge pull request #1342 from mRemoteNG/disable_trimming
Added option to disable username trimming
2019-04-16 20:08:42 +02:00
Faryan Rezagholi
360366b9f5 merged from develop 2019-04-16 18:47:39 +02:00
Faryan Rezagholi
29f4123ab8 Merge pull request #1353 from wwj402/develop
update chinese simplified language 2019/03/15
2019-04-16 18:00:15 +02:00
Faryan Rezagholi
9fdcffda2f Merge branch 'develop' into develop 2019-04-16 17:39:20 +02:00
David Sparer
52d1b9a270 Merge branch 'release/v1.76' 2019-04-12 09:14:26 -05:00
David Sparer
068f5942e7 updated changelog and bumped version to 1.76.20 2019-04-12 08:38:06 -05:00
David Sparer
703cefaf19 ensure rdcman import never sets properties to null. fixes #1401 2019-04-12 08:24:05 -05:00
David Sparer
b9d326e9de Merge pull request #1404 from carrtohu/develop
Correct the Chinese translation in https://github.com/mRemoteNG/mRemoteNG/issues/1403
2019-04-12 07:15:30 -05:00
carrothu
06917327d8 Update Language.zh-CN.resx 2019-04-12 13:03:02 +08:00
carrothu
df92aaae56 Update Language.zh-CN.resx 2019-04-12 13:01:42 +08:00
carrothu
cafb03393c Update Language.zh-CN.resx 2019-04-12 12:58:54 +08:00
Sean Kaim
3d32557177 Merge pull request #1390 from mRemoteNG/release/v1.76
Release/v1.76
2019-04-04 15:51:02 -04:00
Sean Kaim
ea1f72b8b7 bump version and changelog update 2019-04-04 15:44:34 -04:00
Sean Kaim
993b6759cc Update PuTTYNG.exe
Reference #1374
2019-04-04 15:41:55 -04:00
Sean Kaim
b89ff616f0 Update ADTree.dll
Fixes #1383

@farosch had some refactoring done in the dll which required some minor updates in the calling code as well...
2019-04-04 15:40:34 -04:00
Sean Kaim
9e37959a50 Update PuTTYNG
Reference #1374
2019-04-04 15:39:25 -04:00
Sean Kaim
40f740de59 fixed typo and unmatched tag 2019-04-03 16:47:38 -04:00
David Sparer
500608b383 fixed a few more bugs in the config window 2019-04-02 15:21:45 -05:00
David Sparer
02c05a6c63 added more config window tests and fixed a bug 2019-04-02 14:39:21 -05:00
David Sparer
4b4444e8d7 added some more tests for the config window 2019-04-02 09:39:57 -05:00
David Sparer
bbeaf76a68 fixed some tests 2019-04-02 07:48:17 -05:00
David Sparer
82c289b2f5 fixed inheritance property display issue 2019-04-01 15:18:58 -05:00
David Sparer
fd461b8e9e mode now correctly switches to connection properties when inheritance isnt a valid selection 2019-04-01 15:02:40 -05:00
David Sparer
edda670b4f refactored the config window property grid logic
Extracted the mapping of properties to the protocols that use them. We can now
declare the mapping directly within the AbstractConnectionInfo class. Created
a new class to handle the specific way we are using the FilteredPropertyGrid
to show connection info / inheritance data.
2019-04-01 13:24:05 -05:00
David Sparer
ccfac74cc3 fixed minor bug in the test value ranomizer 2019-04-01 13:18:38 -05:00
David Sparer
0359e75de7 added tests of the filtered property grid 2019-04-01 13:15:20 -05:00
David Sparer
f709ea2a95 refactored test helper to reduce code duplication 2019-04-01 11:56:09 -05:00
David Sparer
1cd7e27911 changed some asset files from copyalways to presevenewest
this should help alleviate build time issues
2019-04-01 11:55:00 -05:00
David Sparer
e17d0e990d strongly typed the clone method for inheritance info objects 2019-04-01 11:54:03 -05:00
David Sparer
43169bc512 Merge pull request #1339 from mRemoteNG/clear_searchbox
Add button to clear searchbox
2019-03-21 13:42:13 -05:00
David Sparer
0015300b19 Merge branch 'develop' into clear_searchbox 2019-03-21 12:04:49 -05:00
David Sparer
a52c59a36b Merge pull request #1361 from mRemoteNG/feature/896_rdp_view_only
Implemented a view only mode for RDP
2019-03-21 10:58:28 -05:00
David Sparer
6ce89a9f57 Merge pull request #1340 from mRemoteNG/rdp_import
added missing properties when deserializing .rdp file
2019-03-21 10:54:32 -05:00
David Sparer
78d2c42bdd updated credits and changelog 2019-03-21 08:16:47 -05:00
David Sparer
fce7fdbee5 Merge branch 'mjbnz-mysql' into develop 2019-03-21 07:45:36 -05:00
Faryan Rezagholi
a717ec0ae7 added functionality to window menu items 2019-03-20 21:20:34 +01:00
David Sparer
0ce8eafe6c Merge branch 'develop' into mjbnz-mysql 2019-03-20 10:45:43 -05:00
David Sparer
c0b07307f5 Merge branch 'release/v1.76' 2019-03-20 10:38:31 -05:00
David Sparer
8751bd75da Merge branch 'release/v1.76' into develop
# Conflicts:
#	CHANGELOG.TXT
#	mRemoteV1/Connection/Protocol/PuttyBase.cs
#	mRemoteV1/Properties/AssemblyInfo.cs
2019-03-20 10:35:38 -05:00
David Sparer
15f23769d6 bumped version to v1.76.18 and updated changelog 2019-03-20 09:33:21 -05:00
Sean Kaim
2d175fd575 border fix for puttyng 0.70.0.1+ -- backported from develop 2019-03-20 10:21:56 -04:00
David Sparer
01bfdf52ff Merge branch 'release/v1.76' into develop
# Conflicts:
#	CHANGELOG.TXT
#	mRemoteV1/Properties/AssemblyInfo.cs
#	mRemoteV1/Resources/PuTTYNG.exe
2019-03-20 07:50:38 -05:00
David Sparer
bdeb4b4dcc bumped version to v1.76.17 and updated changelog 2019-03-20 07:32:27 -05:00
David Sparer
bdfbb57504 updated puttyng to 0.71
fixes #1362
2019-03-20 07:29:13 -05:00
David Sparer
c0eebdf74b Merge branch 'mysql' of https://github.com/mjbnz/mRemoteNG into mjbnz-mysql
# Conflicts:
#	mRemoteV1/Config/Connections/SqlConnectionsSaver.cs
#	mRemoteV1/Properties/Settings.Designer.cs
#	mRemoteV1/Properties/Settings.settings
#	mRemoteV1/Resources/Help/ui_sql_configuration.htm
#	mRemoteV1/app.config
2019-03-20 07:22:56 -05:00
David Sparer
294bd2f7a4 fixed event invocator warnings 2019-03-19 20:25:59 -05:00
David Sparer
a3aa323cce updated html documentation for #680 2019-03-19 20:15:16 -05:00
Faryan Rezagholi
851b460a32 renamed class 2019-03-20 00:40:27 +01:00
Faryan Rezagholi
aca775a96e Added entry to window menu to hide/show toolstrips 2019-03-20 00:34:11 +01:00
David Sparer
355cd63acb Merge branch 'develop' into reapply_credential_manager 2019-03-19 18:01:37 -05:00
Faryan Rezagholi
41750808f0 Merge branch 'develop' into pr/1332 2019-03-19 23:25:42 +01:00
Faryan Rezagholi
b0458ddda5 Revert "Add show/hide main menu function to connection tree toolbar."
This reverts commit 95f60c78b3.
2019-03-19 23:25:21 +01:00
Faryan Rezagholi
5a317c5d3e Added/unified german language resources 2019-03-19 21:12:09 +01:00
David Sparer
af7c14b2f2 implemented a view only mode for RDP 2019-03-19 14:24:11 -05:00
David Sparer
d151524ed9 updated vncsharp dll 2019-03-19 12:42:20 -05:00
David Sparer
175acc86e2 Merge branch 'master' into develop
# Conflicts:
#	CHANGELOG.TXT
#	mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs
#	mRemoteV1/Properties/AssemblyInfo.cs
2019-03-16 11:53:00 -05:00
wwj402
bb07acf45e update chinese simplified language 2019/03/15 2019-03-15 18:53:34 +08:00
David Sparer
38d1c756f3 Merge branch 'release/v1.76' 2019-03-14 18:01:20 -05:00
David Sparer
6c89913bc6 updated changelog 2019-03-14 17:58:53 -05:00
David Sparer
efa72cb697 bumped version to 1.76.16 2019-03-14 17:58:43 -05:00
David Sparer
a31fec5fb9 encrypt correct db field
fixes #1347
2019-03-14 17:35:28 -05:00
David Sparer
2349d2320f use nameof to ensure refactoring is safe 2019-03-13 08:05:55 -05:00
David Sparer
166e5b73fa Merge pull request #1344 from mRemoteNG/help_file_cleanup
Help file cleanup
2019-03-12 07:54:44 -05:00
Faryan Rezagholi
a39b87f9fd reviewed documentation and fixed some layout/grammar mistakes 2019-03-12 10:03:57 +01:00
Faryan Rezagholi
162f945a9e unified design of help pages 2019-03-12 00:07:59 +01:00
Faryan Rezagholi
5be5f54351 improved line-spacing on headings for better readability 2019-03-11 23:09:27 +01:00
Faryan Rezagholi
dfe9f5b05c removed intruduction.htm and included information in index.html 2019-03-11 23:00:19 +01:00
Faryan Rezagholi
4c1e28fe39 added class to indent text parts 2019-03-11 22:44:05 +01:00
Faryan Rezagholi
bf67168c7a updated document title to show breadcrumbs 2019-03-11 21:28:37 +01:00
Faryan Rezagholi
b30ed702d3 underline hyperlinks 2019-03-11 20:27:16 +01:00
Faryan Rezagholi
9c33caf74e beautified html code and made it xhtml conform 2019-03-11 20:19:03 +01:00
Faryan Rezagholi
65e1ab616b removed unused, old screenshots 2019-03-11 20:18:26 +01:00
Faryan Rezagholi
13c5dd7b72 removed tags from initial author 2019-03-11 19:26:06 +01:00
Sean Kaim
abeb546116 Add total downloads badge 2019-03-10 21:59:17 -04:00
Faryan Rezagholi
b37dc9900c Added option to disable username trimming #907 2019-03-11 00:40:00 +01:00
Faryan Rezagholi
b27cd0c914 added missing properties when deserializing .rdp file 2019-03-10 21:13:18 +01:00
Faryan Rezagholi
446b40d8a6 some design improvements 2019-03-10 20:16:02 +01:00
Faryan Rezagholi
6ba1d28f13 added logic for clear button 2019-03-10 18:20:15 +01:00
David Sparer
5a226ff95a replaced the Rename icon
This version is easier to see in dark themes
2019-03-10 11:57:01 -05:00
Faryan Rezagholi
01f4af6876 fixed background color of picturebox 2019-03-10 16:51:46 +01:00
Faryan Rezagholi
0ee173475e introduced new user control 2019-03-10 16:31:55 +01:00
David Sparer
1e36112c06 fixed bug with starting ext tool on folder when nothing selected 2019-03-09 15:43:43 -06:00
David Sparer
93d50b0818 Merge branch 'develop' into reapply_credential_manager
# Conflicts:
#	mRemoteNGTests/Config/Serializers/MiscSerializers/RemoteDesktopConnectionManager27DeserializerTests.cs
#	mRemoteNGTests/packages.config
#	mRemoteV1/Config/Connections/SqlConnectionsSaver.cs
#	mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs
#	mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs
#	mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs
#	mRemoteV1/Config/Serializers/MiscSerializers/RemoteDesktopConnectionManagerDeserializer.cs
#	mRemoteV1/Connection/AbstractConnectionRecord.cs
#	mRemoteV1/Connection/ConnectionInfoInheritance.cs
#	mRemoteV1/Connection/ConnectionsService.cs
#	mRemoteV1/Connection/Protocol/Http/Connection.Protocol.HTTPBase.cs
#	mRemoteV1/Properties/Settings.settings
#	mRemoteV1/Resources/Language/Language.de.resx
#	mRemoteV1/Resources/Language/Language.resx
#	mRemoteV1/Resources/Language/Language.ru.resx
#	mRemoteV1/UI/Controls/ConnectionTree/ConnectionTree.cs
#	mRemoteV1/mRemoteV1.csproj
2019-03-09 13:49:23 -06:00
David Sparer
c149701f3f Merge branch 'release/v1.76' into develop
# Conflicts:
#	CHANGELOG.TXT
#	mRemoteV1/App/CompatibilityChecker.cs
#	mRemoteV1/App/Import.cs
#	mRemoteV1/Config/Serializers/MiscSerializers/RemoteDesktopConnectionManagerDeserializer.cs
#	mRemoteV1/Properties/AssemblyInfo.cs
#	mRemoteV1/Properties/Settings.Designer.cs
#	mRemoteV1/Properties/Settings.settings
#	mRemoteV1/app.config
#	mRemoteV1/mRemoteV1.csproj
2019-03-09 12:10:10 -06:00
David Sparer
752a36d88a Update README.MD 2019-03-09 11:38:17 -06:00
David Sparer
ed81030976 bumped v1.76.15 release date 2019-03-09 11:21:21 -06:00
David Sparer
54322ca949 updated changelog 2019-03-08 10:41:57 -06:00
David Sparer
738b159e95 handle sql first-run case
fixes #1303
2019-03-08 10:31:39 -06:00
David Sparer
e43302b821 Merge pull request #1336 from konpl/develop
Added ability to run External tools on folders
2019-03-08 07:43:01 -06:00
konpl
4f5b9233f4 Merge branch 'develop' into develop 2019-03-08 14:51:52 +03:00
Kirill Trifonov
149778000a Fix bug when run ExternalApp with multifolder structure 2019-03-08 14:49:22 +03:00
David Sparer
3641da1faa abtracted clipboard usage and added tests
fixes #1335
2019-03-07 11:25:23 -06:00
Kirill Trifonov
7c4df9b1c4 Copy Hostname fix #1335 2019-03-06 20:50:13 +03:00
Kirill Trifonov
7260678620 Ability to run External tools on folders, close #375 2019-03-06 17:25:44 +03:00
Sean Kaim
292c20d317 remove unneeded file 2019-03-05 14:19:04 -05:00
Sean Kaim
8fe8739897 use the correct script 2019-03-04 17:37:13 -05:00
Sean Kaim
75bd285f5c remove cert password reference from manual builds 2019-03-04 17:22:31 -05:00
Sean Kaim
822766c831 minimize commands during post-build step 2019-03-04 16:55:06 -05:00
Sean Kaim
8440bde9d7 hide some build output and more consistent cert checks in post build 2019-03-04 16:25:22 -05:00
Sean Kaim
6c792b208c typo and actually use solution dir... 2019-03-04 15:45:48 -05:00
Sean Kaim
a4b869a381 SolutionDir, not TargetDir... 😕 2019-03-04 14:30:34 -05:00
Sean Kaim
db0b48f1ad fulll cert path on AV builds 2019-03-04 13:44:18 -05:00
David Sparer
e8f2e4f50c bumped patch version 2019-03-04 11:45:07 -06:00
David Sparer
5cd201440e added tests for the disposable action class 2019-03-04 11:44:30 -06:00
David Sparer
5c6c76b898 one more parse bug fix 2019-03-04 11:30:34 -06:00
Sean Kaim
5b1486cb6f Update AV publish build 2019-03-04 12:23:28 -05:00
David Sparer
4847ce054b resolved several parsing bugs in the rdcman deserializer 2019-03-04 11:17:45 -06:00
David Sparer
ec42fe7d7d improved testability of the import class 2019-03-04 11:17:19 -06:00
Sean Kaim
116e405ae3 I has teh dumb... 2019-03-04 11:49:55 -05:00
Sean Kaim
202a92998a testing 2019-03-04 11:42:01 -05:00
Sean Kaim
f06618fdaf fix minor syntax 2019-03-04 11:36:54 -05:00
Sean Kaim
a8bd031935 Merge branch 'develop' of https://github.com/mRemoteNG/mRemoteNG into develop 2019-03-04 11:23:57 -05:00
Sean Kaim
d0dd92578b Updated deployment AV scripts 2019-03-04 11:23:21 -05:00
David Sparer
07a20ed5ad batch saves when importing connection files
This reduces saves/backup overwrites when importing multiple files
2019-03-04 08:41:27 -06:00
mkw-ssd
95f60c78b3 Add show/hide main menu function to connection tree toolbar. 2019-03-01 16:22:12 +08:00
David Sparer
b5228e547c Merge pull request #1320 from mRemoteNG/favorites2
Add connection tree favorites
2019-02-28 08:55:46 -06:00
Faryan Rezagholi
29be020e32 added missing tooltips 2019-02-28 10:04:49 +01:00
Faryan Rezagholi
8b443ed10b added favorites to the quick connect drop down 2019-02-28 10:01:35 +01:00
mjbnz
ae5abbd039 Merge branch 'develop' into mysql 2019-02-28 09:12:32 +13:00
Faryan Rezagholi
9d24c6091b fixed remaining failing test 2019-02-27 20:53:39 +01:00
Faryan Rezagholi
6d2b6259a9 merge from develop 2019-02-27 20:28:41 +01:00
Faryan Rezagholi
2c7425bc51 corrected order of connection info favorite property 2019-02-27 19:54:25 +01:00
David Sparer
6c75fc3506 fixed several tests that assume english localization 2019-02-27 12:17:44 -06:00
Faryan Rezagholi
46ab5829b7 fixed some failing tests 2019-02-26 12:53:05 +01:00
David Sparer
5c5daf053b fixes #1329 2019-02-25 13:59:52 -06:00
Sean Kaim
3cb9bf984b fix the deployment name 2019-02-24 22:18:52 -05:00
Sean Kaim
4b59d79977 appveyor publish changes 2019-02-24 21:23:09 -05:00
Sean Kaim
7fc987f1a2 update appveyor build options 2019-02-24 21:07:10 -05:00
Sean Kaim
f14fd6bf5a Fixes #1314 - hide elements until they are needed
Fixes #1314
2019-02-24 19:26:50 -05:00
Sean Kaim
d3f3a14b1f update appveyor config to exclude portable pdbs 2019-02-24 18:59:59 -05:00
Sean Kaim
b812a1b06f update appveyor config to exclude pdbs 2019-02-24 18:35:59 -05:00
mjbnz
4f95722915 Merge branch 'develop' into mysql 2019-02-22 19:04:38 +13:00
Sean Kaim
2282c19f46 Add 2 strings to resouce file 2019-02-20 23:32:53 -05:00
Sean Kaim
ccc28ba54c Fix CS0649 2019-02-20 23:17:56 -05:00
Sean Kaim
a512465d07 fix CA2213 warnings 2019-02-20 23:15:26 -05:00
Sean Kaim
1bb18abf5a Update tab text for HTTP(S) connections 2019-02-20 23:03:31 -05:00
Sean Kaim
1fec4b33b2 update other nuget packages 2019-02-20 22:53:21 -05:00
Sean Kaim
6266aab466 update gecko nuget 2019-02-20 22:32:48 -05:00
Sean Kaim
31bff169a2 update bouncycastle nuget 2019-02-20 22:30:33 -05:00
Sean Kaim
2f956ed400 update NUnit NuGet packages 2019-02-20 22:25:09 -05:00
Sean Kaim
b16831fc86 implement IDisposable / fix CA1001 warnings 2019-02-20 22:08:03 -05:00
Sean Kaim
ee74a25eae Translation updates
* All files updated via Zeta Editor
* Removed some incorrectly added objects (typos)
* Updated Russian translation (mostly via Google Translate but with some native speaker validation)
2019-02-20 21:32:22 -05:00
Faryan Rezagholi
8779776ad5 removed minimize button from credentials manager 2019-02-20 19:45:18 +01:00
Faryan Rezagholi
3bb285d180 removed unused form 2019-02-20 19:42:30 +01:00
Faryan Rezagholi
052796c794 adjusted text box positioning 2019-02-20 19:08:25 +01:00
Faryan Rezagholi
33a6dbb4c3 made more hardcoded strings translateable 2019-02-20 18:32:35 +01:00
Faryan Rezagholi
953ddaa292 merged develop 2019-02-19 22:39:58 +01:00
Faryan Rezagholi
c065b86dbd revised credential manager forms design 2019-02-19 22:38:12 +01:00
Sean Kaim
80eb314d03 fix a typo 2019-02-18 19:15:50 -05:00
Sean Kaim
fd6478c7f5 remove waffle.io 2019-02-18 19:13:59 -05:00
Faryan Rezagholi
56ba332dc5 fixed copy&paste error 2019-02-18 19:14:12 +01:00
Faryan Rezagholi
14deac00f6 updated comment 2019-02-18 19:13:27 +01:00
Faryan Rezagholi
481ca5194a reapplied changes from old PR 2019-02-18 12:57:34 +01:00
David Sparer
0cb4a2cfcc Merge pull request #1309 from mRemoteNG/lang_fix
German language fixes
2019-02-17 14:15:13 -06:00
Faryan Rezagholi
c6d6c2323c fixed genus of Logfile 2019-02-17 19:38:34 +01:00
Faryan Rezagholi
d65c52f6ea merge develop into lang_fix 2019-02-17 19:36:38 +01:00
David Sparer
95859b96ff Merge branch 'develop' into reapply_credential_manager
# Conflicts:
#	mRemoteV1/App/Export.cs
#	mRemoteV1/App/Initialization/CredsAndConsSetup.cs
#	mRemoteV1/App/Runtime.cs
#	mRemoteV1/Config/Connections/ConnectionsLoadedEventArgs.cs
#	mRemoteV1/Config/Connections/ConnectionsSavedEventArgs.cs
#	mRemoteV1/Config/Connections/CsvConnectionsSaver.cs
#	mRemoteV1/Config/Connections/SaveConnectionsOnEdit.cs
#	mRemoteV1/Config/CredentialHarvester.cs
#	mRemoteV1/Config/CredentialRepositoryListLoader.cs
#	mRemoteV1/Config/CredentialRepositoryListSaver.cs
#	mRemoteV1/Config/DataProviders/FileDataProvider.cs
#	mRemoteV1/Config/Import/MRemoteNGCsvImporter.cs
#	mRemoteV1/Config/Import/MRemoteNGXmlImporter.cs
#	mRemoteV1/Config/Import/RemoteDesktopConnectionImporter.cs
#	mRemoteV1/Config/Putty/PuttySessionsRegistryProvider.cs
#	mRemoteV1/Config/Putty/PuttySessionsXmingProvider.cs
#	mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs
#	mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs
#	mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs
#	mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs
#	mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs
#	mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs
#	mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsSerializer.cs
#	mRemoteV1/Config/Serializers/CredentialProviderSerializer/CredentialRepositoryListDeserializer.cs
#	mRemoteV1/Config/Serializers/MiscSerializers/PuttyConnectionManagerDeserializer.cs
#	mRemoteV1/Config/Serializers/MiscSerializers/RemoteDesktopConnectionDeserializer.cs
#	mRemoteV1/Config/Serializers/MiscSerializers/RemoteDesktopConnectionManagerDeserializer.cs
#	mRemoteV1/Connection/AbstractConnectionRecord.cs
#	mRemoteV1/Connection/ConnectionInfo.cs
#	mRemoteV1/Connection/ConnectionInfoInheritance.cs
#	mRemoteV1/Connection/ConnectionInitiator.cs
#	mRemoteV1/Connection/ConnectionsService.cs
#	mRemoteV1/Connection/DefaultConnectionInfo.cs
#	mRemoteV1/Connection/Protocol/Http/Connection.Protocol.HTTPBase.cs
#	mRemoteV1/Connection/Protocol/ICA/IcaProtocol.cs
#	mRemoteV1/Connection/Protocol/IntegratedProgram.cs
#	mRemoteV1/Connection/Protocol/ProtocolBase.cs
#	mRemoteV1/Connection/Protocol/PuttyBase.cs
#	mRemoteV1/Connection/Protocol/RDP/RdpProtocol.cs
#	mRemoteV1/Connection/Protocol/VNC/Connection.Protocol.VNC.cs
#	mRemoteV1/Connection/PuttySessionInfo.cs
#	mRemoteV1/Credential/CredentialRecordTypeConverter.cs
#	mRemoteV1/Credential/CredentialServiceFacade.cs
#	mRemoteV1/Credential/CredentialServiceFactory.cs
#	mRemoteV1/Credential/Records/UnavailableCredentialRecord.cs
#	mRemoteV1/Credential/Repositories/XmlCredentialRepository.cs
#	mRemoteV1/Credential/Repositories/XmlCredentialRepositoryFactory.cs
#	mRemoteV1/Properties/Settings.settings
#	mRemoteV1/Schemas/mremoteng_confcons_v2_7.xsd
#	mRemoteV1/Tools/CustomCollections/FullyObservableCollection.cs
#	mRemoteV1/Tools/Extensions.cs
#	mRemoteV1/Tools/ExternalTool.cs
#	mRemoteV1/Tools/ExternalToolArgumentParser.cs
#	mRemoteV1/UI/Controls/Base/NGComboBox.cs
#	mRemoteV1/UI/Controls/ConnectionTree/ConnectionTree.cs
#	mRemoteV1/UI/Controls/CredentialRecordListBox.cs
#	mRemoteV1/UI/Controls/QuickConnectToolStrip.cs
#	mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.cs
#	mRemoteV1/UI/Forms/OptionsPages/SqlServerPage.cs
#	mRemoteV1/UI/Forms/frmMain.cs
#	mRemoteV1/UI/Forms/frmOptions.cs
#	mRemoteV1/UI/Menu/ToolsMenu.cs
#	mRemoteV1/UI/Window/ConfigWindow.cs
#	mRemoteV1/UI/Window/ConnectionTreeWindow.Designer.cs
#	mRemoteV1/UI/Window/ConnectionTreeWindow.cs
#	mRemoteV1/UI/Window/ConnectionWindow.cs
#	mRemoteV1/app.config
2019-02-17 11:21:22 -06:00
Mike Beattie
fb7095f2d3 Update SqlUpgrade tests for new Connector class name. 2019-02-17 18:27:00 +13:00
Mike Beattie
c16689d936 Updated Help for SQL Databases.
* Included SQL for creating MySQL tables.

Signed-off-by: Mike Beattie <mike@ethernal.org>
2019-02-17 18:27:00 +13:00
Mike Beattie
9f3bf545bf Implement MySQL support
* Uses MySQL Connector/NET from nuget
* Adds SQL Server type to configuration.
* Hostname for MySQL connections can include port
  - Format:  <hostname>[:<port>]
* Abstracted a bundle of stuff to be generic for both
  MSSQL and MySQL, including a number of variable and method names.
  (Mostly went from "sql..." -> "db..."
* Changed MiscTools.DBDate() string building for MSSQL,
  uses DateTime.ToString() with a format which seemed simpler.
* Unsure about which lines in .csproj are actually required,
  and which are auto-munged by Visual Studio.
* ... This is my first C# (and VS!) work, be gentle!

Signed-off-by: Mike Beattie <mike@ethernal.org>
2019-02-17 18:27:00 +13:00
Mike Beattie
09c8c97b4e Update ConnectionFileVersion to match SQL version
Also add missing columns to SQL script in Help for 2.7

Signed-off-by: Mike Beattie <mike@ethernal.org>
2019-02-17 14:23:32 +13:00
Bennett Blodinger
4cb6c9e2e8 Plaintext to Markdown
Moves CHANGELOG.TXT and CREDITS.TXT to Markdown
2019-02-16 08:54:46 -06:00
Faryan Rezagholi
aef9f98095 some more tweaks 2019-02-15 23:14:50 +01:00
Sean Kaim
e143c6b5b4 resharper code reformat (to allow standard code style going forward) 2019-02-15 16:47:56 -05:00
Faryan Rezagholi
c570c1c0eb replaced "Protokolldatei" with "Logfile" 2019-02-15 22:02:58 +01:00
Sean Kaim
4bc3fe0c1b Use .editorconfig to code style/formatting 2019-02-15 15:59:09 -05:00
Faryan Rezagholi
1f46339900 removed newline 2019-02-15 21:57:09 +01:00
Faryan Rezagholi
a4f354161d removed "..." 2019-02-15 21:55:17 +01:00
Faryan Rezagholi
8a7bc4583b fixed typo in language resource string 2019-02-14 19:08:02 +01:00
Faryan Rezagholi
8468a3de7c fixed unnatural wording 2019-02-14 18:53:07 +01:00
Faryan Rezagholi
e4ff7b43f2 fixed capitalization on one word; translated overlooked word 2019-02-13 23:14:38 +01:00
Faryan Rezagholi
220396d016 renamed proxy settings category from miscellaneous to proxy as there was already a categroy named miscellaneous 2019-02-13 21:24:53 +01:00
Faryan Rezagholi
91f01abbae fixed some more inconsistencies/missing strings in german translation 2019-02-13 09:57:28 +01:00
Faryan Rezagholi
7eda617af9 added/fixed german translation 2019-02-12 22:53:24 +01:00
Faryan Rezagholi
595a22efc3 made hardcoded text on buttons translatable 2019-02-12 22:53:10 +01:00
Faryan Rezagholi
d2578e5be5 made hardcoded strings on updates options page translatable, fixes #785 2019-02-12 22:18:51 +01:00
Sean Kaim
0cd1485f85 Merge pull request #1243 from farosch/rearrange_menu_items
rearranged items and added/replaced icons
2019-02-11 17:26:29 -05:00
Sean Kaim
ab1dcd0e45 Merge branch 'develop' into pr/1243 2019-02-11 17:23:10 -05:00
Sean Kaim
8281f488f3 Merge pull request #1258 from mRemoteNG/RemoveMagicLib
Remove magic lib
2019-02-09 19:24:03 -05:00
Camilo Alvarez
c4a1879ae9 Remove IsSimpleDropSink restores item sorting for #1266
#1266 was generated by OLV ignoring some sink cusotmizations by using the  IsSimpleDropSink flag
2019-02-08 23:55:04 -05:00
Sean Kaim
fcc51b591e Merge branch 'develop' into RemoveMagicLib 2019-02-08 17:22:15 -05:00
Sean Kaim
1b44334361 Merge pull request #1276 from farosch/quick_connect
Set focus to textbox instead of connecting,
2019-02-08 17:21:04 -05:00
Sean Kaim
7ec677f021 conditinally focus 2019-02-08 17:20:30 -05:00
Sean Kaim
08201b0f00 Port FIPS override back to 1.76
Fixes #222
2019-02-08 16:51:58 -05:00
Sean Kaim
89055d2ae9 Remove outdated/incorrect translations for strErrorFipsPolicyIncompatible
These will need to be re-translated.
2019-02-08 16:43:43 -05:00
Sean Kaim
7393159f26 Missed the settings file from previous commit 2019-02-08 16:42:50 -05:00
Sean Kaim
dda2b4af11 Allow FIPS check to be overridden.
Fixes #222
2019-02-08 16:42:21 -05:00
Sean Kaim
7e1bc19a13 cleanup white space 2019-02-08 16:02:11 -05:00
Sean Kaim
650f1df0ee break out expand/collapse on connection tree
Fixes #1273
2019-02-08 15:59:52 -05:00
Sean Kaim
f7bfa82517 Dispose calls Close & Whitespace cleanup 2019-02-08 12:09:31 -05:00
Camilo Alvarez
b0bf31b29c Remove deadlock in #1247
#1247 was caused by a loop of the putty control calling the tab dispose and back again. Created a flag to indicate the ConnectionTab that the closing process was called by the protocol and not the user.
2019-02-07 17:39:40 -05:00
Sean Kaim
54bb9a8f5a minor code cleanup 2019-02-07 15:58:01 -05:00
Sean Kaim
7a38c1055a typo and link fix 2019-02-07 14:38:14 -05:00
Camilo Alvarez
cda557b6fb Avoid null pointers when race conditions or faults are present in protocol closing
Avoid some of the detected faults
2019-02-06 17:53:05 -05:00
Camilo Alvarez
e1fc272e1c new tabs are created in current panel
Added current panel to TabHelper, new tabs are created in the current panel
2019-02-06 11:58:24 -05:00
Camilo Alvarez
aa9b32a383 Changed refocusing method for rdp tabs
Solve bug reported by Joe Cefoli on gitter
2019-02-06 11:27:40 -05:00
Camilo Alvarez
c836e29d2f Screenshots correctly taken from windowed tab
Screenshots can be taken from undock tabs, created helper tab singleton class to make it easy to determine the current tab in the DPS - mremote model
2019-02-05 20:50:13 -05:00
Camilo Alvarez
39b919c38a Improves RDP tab focus
Improves rdp tab focus by passing active to focus event between rdp client and DPS  tab
2019-02-05 20:24:39 -05:00
Camilo Alvarez
4b8d06dfe8 Improvement in protocol to tab focus
Tabs are focused now when mouse is clicked inside of the connetiontab, before clicking inside ssh window, for example, will not highlight the tab.
2019-01-29 23:30:40 -05:00
Camilo Alvarez
b3cfcc1a5e Screenshot only taken from ConnectionTab area
Screenshots contained dockstrip area (the tab name with the x icon), now they are only limited to the ConnectionTab area
2019-01-29 23:19:33 -05:00
Faryan Rezagholi
41f1a65ce6 fixed position of ok button (was 1px off) 2019-01-28 20:16:39 +01:00
David Sparer
ba62c17ea2 added some interface documentation 2019-01-27 18:01:34 -06:00
David Sparer
1f296f2f72 slight fix to the optional<T> tests 2019-01-27 16:59:02 -06:00
David Sparer
89bb4d45b3 minor tweaks to the import form 2019-01-27 16:58:39 -06:00
David Sparer
6e417ed47e ensure specified creds can be parsed even if no connectioninfo is selected 2019-01-27 12:33:14 -06:00
David Sparer
f3a7d97016 allow specifying specific credential record in external tool arguments
related to #680
2019-01-27 11:31:41 -06:00
David Sparer
530a4e165d extracted interface from credential service to make testing easier 2019-01-27 09:58:28 -06:00
Sean Kaim
f8800384e0 Merge branch 'develop' into RemoveMagicLib 2019-01-25 17:15:57 -05:00
Sean Kaim
765bb3886d full path to cert 2019-01-25 16:53:17 -05:00
Sean Kaim
1768104d47 add rlease config and decrypt cert later 2019-01-25 16:46:17 -05:00
Sean Kaim
ab2f4b339a faster build targets? 2019-01-25 16:26:52 -05:00
Sean Kaim
531b1dfa33 build script for signing 2019-01-25 15:50:49 -05:00
Sean Kaim
935719fd43 Merge branch 'develop' into RemoveMagicLib 2019-01-25 15:29:08 -05:00
Sean Kaim
120d928402 use relative path 2019-01-25 15:28:54 -05:00
Sean Kaim
6ad29aaf3c Merge branch 'develop' into RemoveMagicLib 2019-01-25 14:55:14 -05:00
Sean Kaim
ea48c6d68c appveyor publish 2019-01-25 14:54:52 -05:00
Sean Kaim
34c8f21cc6 update with appveor publish build 2019-01-25 13:43:14 -05:00
Sean Kaim
18913eedae Merge branch 'develop' into RemoveMagicLib 2019-01-24 17:04:40 -05:00
Sean Kaim
9b159268bd whitespace clean up 2019-01-24 17:04:11 -05:00
David Sparer
9e217dba79 began creating cred import form 2019-01-23 22:16:08 -06:00
Sean Kaim
a6cd5656f8 no borders for puttyng integrated processes
fixes  #1265
2019-01-23 21:05:15 -05:00
Camilo Alvarez
c93deb7696 Screenshot method change
Some screenshots were blank because DrawToBitmap uses the tab drawing graphics, New method uses screen buffer that brings the pixels from the final screen render.
2019-01-22 15:44:10 -05:00
David Sparer
d524df6315 minor efficiency gain 2019-01-22 13:04:58 -06:00
David Sparer
5e224f5b5b ensure assigned cred id property cannot be null 2019-01-22 12:51:41 -06:00
David Sparer
3649927618 fixed bug with connection tree not appearing 2019-01-22 12:48:12 -06:00
David Sparer
4b736176bf request iconnectiontree interface in more places 2019-01-22 06:01:33 -06:00
Camilo Alvarez
0699e895fd Fix for #1249 screenshot X
Corrected casting for disposing the form
2019-01-21 23:49:35 -05:00
Camilo Alvarez
1f700f7842 Fix for #1257
CreateGraphics was the function being disposed in the using, the form handle was still floating around. Suggestion to optimize the dpi function
2019-01-21 23:29:26 -05:00
David Sparer
f78ca1e9fd some more deserialization refactoring 2019-01-21 17:52:18 -06:00
David Sparer
739112a3ff added tests for SaveConnectionsOnEdit
had to create some new interfaces and refactor a bit to make it testable
2019-01-20 15:45:09 -06:00
David Sparer
923b9efd40 began converting the database serializers to work with cred manager 2019-01-20 14:51:09 -06:00
David Sparer
f0d0b5ae21 reduced duplication in rdcm tests 2019-01-20 13:46:34 -06:00
David Sparer
8906e08704 made the rdcm 2.7 importer compatible with credential management 2019-01-20 12:38:39 -06:00
David Sparer
9ead7e8e16 fixed an issue with putty session importing
cred id was not being set. also added a test for it
2019-01-20 11:18:40 -06:00
David Sparer
788ca79ece fixed rdp file importer to support cred manager 2019-01-20 11:15:33 -06:00
David Sparer
88558a353c fixed putty connection manager credential serialization 2019-01-19 14:22:04 -06:00
David Sparer
7fd9abbbc8 resolved csv deserializer test 2019-01-19 13:19:06 -06:00
David Sparer
b029b35df7 Merge remote-tracking branch 'origin/develop' into reapply_credential_manager
# Conflicts:
#	mRemoteV1/Properties/Settings.Designer.cs
#	mRemoteV1/Properties/Settings.settings
#	mRemoteV1/app.config
2019-01-19 12:51:43 -06:00
David Sparer
3db50096c5 Merge pull request #1281 from V0174/patch-1
Typo correction in czech translation
2019-01-17 07:32:31 -06:00
V0174
36bb614a27 Typo correction
Heso -> Heslo.
2019-01-17 08:31:58 +01:00
Sean Kaim
968471ec4a white space clean up 2019-01-16 22:38:31 -05:00
Sean Kaim
401a518f0f Theme page label text update
All theme changes require a restart.
2019-01-16 22:35:08 -05:00
Sean Kaim
96af6b252a themeing fix & update comments 2019-01-16 11:18:34 -05:00
Sean Kaim
6bac9c2432 Disable AlwaysShowConnectionTabs functinoality
This will not work with DPS currently.  Reference https://github.com/dockpanelsuite/dockpanelsuite/issues/559
2019-01-15 17:16:18 -05:00
Sean Kaim
ad44a6ccee Merge branch 'develop' into RemoveMagicLib 2019-01-15 17:04:04 -05:00
David Sparer
d7f6f28413 Merge pull request #1204 from leaskovski/develop
Added a new option to toggle Connection Tabs
2019-01-15 14:23:43 -06:00
Leaskovski
6161307cbb Merge branch 'develop' of https://github.com/mRemoteNG/mRemoteNG into develop
# Conflicts:
#	mRemoteV1/Properties/Settings.Designer.cs
#	mRemoteV1/Properties/Settings.settings
#	mRemoteV1/Resources/Language/Language.resx
#	mRemoteV1/UI/Forms/OptionsPages/TabsPanelsPage.Designer.cs
#	mRemoteV1/app.config
2019-01-15 17:22:43 +00:00
David Sparer
187ca5e55b started to redo how cred harvesting works in order to apply it to all importers/deserializers 2019-01-14 16:32:51 -06:00
David Sparer
53c26d8a91 updated tests and references to using cred records rather than user/domain/pass of the connection 2019-01-14 14:02:41 -06:00
David Sparer
159f25b8a1 fixed exttools arg parser tests 2019-01-14 09:54:19 -06:00
David Sparer
f4904f350e minor cleanup 2019-01-14 07:59:09 -06:00
David Sparer
ea59f6ad9d centralized credential lookup logic 2019-01-14 07:56:31 -06:00
David Sparer
4bba05f737 minor cleanup of cred harvester, slightly more efficient 2019-01-14 07:35:37 -06:00
David Sparer
569cf38f24 fixed a cred harvester test 2019-01-14 07:35:13 -06:00
David Sparer
6f8cde4d8e added a method comment 2019-01-13 14:45:07 -06:00
David Sparer
753ea9b421 connections now correctly use default cred if no credential is supplied 2019-01-13 14:42:24 -06:00
David Sparer
a5ea867b6d began hooking up the default credential to the manager 2019-01-13 12:14:28 -06:00
David Sparer
80228966f9 double clicking cred repo tree item opens editor page 2019-01-13 11:27:42 -06:00
David Sparer
b8298ecb14 minor display changes of the repo manager 2019-01-13 11:19:03 -06:00
David Sparer
ee1db6ff8b refactored some methods/fields to be more descriptive 2019-01-13 11:07:58 -06:00
David Sparer
aab1fb1dd2 minor cleanup 2019-01-13 11:05:45 -06:00
David Sparer
fbea9d1ede hooked up remaining cred repo management buttons 2019-01-13 10:57:33 -06:00
David Sparer
75cfc9c75c Merge branch 'develop' into reapply_credential_manager
# Conflicts:
#	mRemoteV1/Properties/Settings.Designer.cs
#	mRemoteV1/Properties/Settings.settings
#	mRemoteV1/UI/Forms/frmMain.cs
#	mRemoteV1/app.config
2019-01-13 08:52:51 -06:00
Faryan Rezagholi
96952817c1 Merge branch 'develop' into rearrange_menu_items 2019-01-13 01:42:33 +01:00
Faryan Rezagholi
c8d4a9a671 Set focus to textbox instead of connecting, fixes #1271 2019-01-13 01:30:23 +01:00
Sean Kaim
f059a7732f Fix some theming issues. New IsExtended propery
Done with theme stuff... Or at least I want to be...
2019-01-11 13:30:39 -05:00
Sean Kaim
adefd95fb6 undo a line that was added for testing... Sorry. 2019-01-11 11:29:41 -05:00
Sean Kaim
a0935e8613 missed 2 files in last commit 2019-01-11 11:29:15 -05:00
Sean Kaim
bebc9c9dd4 check themeing active AND/OR IsExtendable
Lots of small changes as a result of this

other minor clean up

Tests should pass now.

And if \Themes\vs2015light.vstheme can't ben loaded, we should be OK now...
2019-01-11 11:28:57 -05:00
Sean Kaim
82507aabcb additional saftey checks and no extended palette for "raw" default theme 2019-01-11 10:48:03 -05:00
Sean Kaim
4e8d336527 remove enable themes and default accordingly
additional error handling attempts for theme loading.
Though, if we can't load \Themes\vs2015light.vstheme we're going to have a bad time...
2019-01-11 10:07:09 -05:00
Sean Kaim
9977f33461 whitespace 2019-01-11 09:25:58 -05:00
Sean Kaim
4e11baa579 designer generated change 2019-01-11 09:03:57 -05:00
Sean Kaim
ef82df5e72 minor cleanup/refactoring 2019-01-10 17:19:02 -05:00
Sean Kaim
506ae1cbc6 Merge branch 'develop' into RemoveMagicLib 2019-01-10 16:10:25 -05:00
Sean Kaim
6156ce48ac rename ONLY the 4 vsthemes
DPS themes are back to their default names.

The *.vsthemes provided on the file system get named in memory to *NG

If we don't find the the theme name pulled from settings, blank it out. This should ONLY happen after upgrading from previous releases for users of the 4 *.vsthemes providedon the file system:  "darcula", "vs2015blue", "vs2015dark" , "vs2015light"

The 3 vs2015* ones are NOT to be confsed with the DPS provided versions of the almost identical name.

Jumping through hoops rather than renaming files/theme names to avoid unexpected theme changes for as many users as possible.
2019-01-10 16:08:56 -05:00
David Sparer
cd32b69d86 Merge pull request #1267 from farosch/overlay_icon_fix
Fixed connection icon overlay sizing
2019-01-10 14:27:55 -06:00
Faryan Rezagholi
1ca38386b7 always resize connection icon to 16x16 before adding overlay icon, fixes #1264 2019-01-10 20:48:26 +01:00
Sean Kaim
ef48f51834 move base.SaveSettings to top like other pages 2019-01-10 14:44:27 -05:00
Sean Kaim
8bcd6b9e53 save settings should only be called on OK/Apply 2019-01-10 14:43:46 -05:00
Sean Kaim
7c22ea6b01 Add apply button 2019-01-10 14:41:25 -05:00
Sean Kaim
b5034fd925 whitespace cleanup 2019-01-10 14:39:27 -05:00
Sean Kaim
a765a71474 minor cleanup 2019-01-10 14:22:58 -05:00
Sean Kaim
f3ad6e66e8 whitepsace clean up 2019-01-10 14:17:06 -05:00
Sean Kaim
3713f98f7b whitespace 2019-01-10 14:00:26 -05:00
Sean Kaim
0c6778b5a3 minor clean up 2019-01-10 13:57:51 -05:00
David Sparer
f56f1160ba safer cast and value access when creating float window 2019-01-10 10:22:00 -06:00
Camilo Alvarez
cc184b7c58 Float window customization for size
It will undock to the original size when it was docked
2019-01-10 10:14:31 -05:00
Sean Kaim
53fdf2bbbf minor clean up 2019-01-10 09:24:42 -05:00
Sean Kaim
033635fb43 copyright 2019
reference #1261
2019-01-09 22:49:20 -05:00
Sean Kaim
40682bc842 create empty panel on startup not working
Reference #1261
2019-01-09 22:46:59 -05:00
Sean Kaim
9da26358ba copy hostname on folder causes exception
Reference #1261
2019-01-09 22:27:14 -05:00
Sean Kaim
2f0550de8e doubleclick on running connection in tree should bring tab to focus
Reference #1261
2019-01-09 22:21:12 -05:00
Sean Kaim
f6a1d603a9 avoid duplicate close() on reconnect 2019-01-09 21:30:03 -05:00
David Sparer
764521414f double include switch-to handler for doubleclick yet 2019-01-09 19:08:17 -06:00
David Sparer
ffe44706c2 fixed issue with connection handlers not updating when settings change 2019-01-09 19:02:17 -06:00
David Sparer
41cab2f652 resolved exception when closing a connection group (top-level dps tab) 2019-01-09 18:03:24 -06:00
David Sparer
35fada7fcd prevent exception when removing connection from list 2019-01-09 16:46:21 -06:00
David Sparer
5b8fb68f65 Merge branch 'develop' into RemoveMagicLib
# Conflicts:
#	mRemoteV1/UI/Forms/OptionsPages/ConnectionsPage.cs
2019-01-09 15:50:53 -06:00
David Sparer
f5e668b716 added user setting for TrackActiveConnectionInConnectionTree 2019-01-09 15:48:11 -06:00
David Sparer
acbc03dc82 Merge pull request #1231 from SeanTMill/feature/trackintree
Tracks the active tab in the treeview
2019-01-09 15:22:35 -06:00
David Sparer
294281e0ac fixed page font 2019-01-09 15:19:44 -06:00
David Sparer
2d450d4dbd Merge branch 'help-updates' of https://github.com/nmat/mRemoteNG into develop
# Conflicts:
#	mRemoteV1/UI/Window/HelpWindow.cs
2019-01-09 15:19:24 -06:00
Sean Kaim
e2865fafde update changelog 2019-01-09 13:57:33 -05:00
David Sparer
f60a481902 Merge branch 'develop' into reapply_credential_manager 2019-01-09 10:27:26 -06:00
David Sparer
e89c77a1bc fixed mis-merge 2019-01-09 10:26:40 -06:00
Sean Kaim
aa546d87ff safety checks 2019-01-09 10:35:28 -05:00
Sean Kaim
72e637d389 Merge branch 'develop' into RemoveMagicLib 2019-01-09 10:17:38 -05:00
Sean Kaim
842f7045f8 update ADTree.dll
DPI scaling and other minor fixes
2019-01-09 10:17:26 -05:00
Sean Kaim
4f4f3a0370 Merge branch 'develop' into RemoveMagicLib 2019-01-09 09:46:28 -05:00
Sean Kaim
6a354f8757 don't default to a dummy domain
This causes the control to timeout and takes nearly 30 seconds to load
2019-01-09 09:46:14 -05:00
David Sparer
45766b8c12 Merge branch 'develop' into reapply_credential_manager
# Conflicts:
#	mRemoteV1/UI/Forms/OptionsPages/CredentialsPage.Designer.cs
2019-01-09 07:32:09 -06:00
David Sparer
abd9aaa567 close splashscreen when error occurs while loading connections 2019-01-09 07:29:59 -06:00
Sean Kaim
32c4f984e9 theming updates and minor UI changes 2019-01-08 17:10:36 -05:00
Sean Kaim
86e806d021 code cleanup 2019-01-08 13:17:30 -05:00
Sean Kaim
32cff8af6d remove old code 2019-01-08 13:10:20 -05:00
Sean Kaim
40ac2124d8 whitespace clean up 2019-01-08 13:09:41 -05:00
Sean Kaim
a107d0586f close the protocol properly, just not the DockContent... 2019-01-08 12:16:50 -05:00
Sean Kaim
8a94000d98 clean up / refactoring 2019-01-08 12:02:43 -05:00
Sean Kaim
bb90261521 designer generated update 2019-01-08 11:57:45 -05:00
Sean Kaim
fd246bc83b Update title bar on connection change 2019-01-08 11:52:38 -05:00
Sean Kaim
018a97fb8e whitespace cleanup 2019-01-08 11:46:22 -05:00
Sean Kaim
9d10ee2da5 saftey checks 2019-01-08 11:45:41 -05:00
Sean Kaim
8a62942894 whitespace cleanup 2019-01-08 11:16:27 -05:00
Sean Kaim
71cabea03e minor cleanup 2019-01-08 11:15:25 -05:00
Sean Kaim
a37cd62d7e more updates to change themes on restart only 2019-01-08 10:49:32 -05:00
Sean Kaim
f180a5cd70 do nothing if double click on close is not set 2019-01-08 10:14:57 -05:00
Sean Kaim
4405a1fbf7 clean up / resharper fixes 2019-01-08 10:10:07 -05:00
Camilo Alvarez
7603587ce3 Reubicated the custom dock strip initialization
Now it work with all the themes and no theme enabled
2019-01-07 21:31:16 -05:00
Camilo Alvarez
27a06f6cfa Partial fix of double clic
Missing behavior on no theme scenario. Themes including default tested.
2019-01-07 21:03:08 -05:00
Camilo Alvarez
190204a47f Reverted the double click
Reverted the double click as it brokes the tab looks with themes
2019-01-07 20:01:21 -05:00
Camilo Alvarez
7e4003968d Fix broken test
Try #1 -.-
2019-01-07 19:28:03 -05:00
Camilo Alvarez
174dfbe95e Double click to close tab initial implementation
With the setting DoubleClickOnTabClosesIt it will close the tab, otherwise it will undock it. Missing do nothing implementation
2019-01-07 19:07:53 -05:00
Sean Kaim
9fef6dd2d3 minor clean up 2019-01-07 17:34:44 -05:00
Sean Kaim
4ac51a7e58 Tab ICONS!!!! 2019-01-07 17:01:41 -05:00
Sean Kaim
8487dde026 move connectiontab.designer to proper location in project
also make sure it has proper DPI settings
2019-01-07 16:35:02 -05:00
Sean Kaim
52bdf64cdb removed unused variable 2019-01-07 16:24:16 -05:00
Sean Kaim
e254d6978e ActiveTheme is only saved in setting and applied on restart 2019-01-07 15:33:14 -05:00
Sean Kaim
9eb15a25a5 designer generated change 2019-01-07 15:29:19 -05:00
Sean Kaim
8a63200ab9 handle events only when theming is active 2019-01-07 15:28:20 -05:00
Sean Kaim
b18ffc350f clean up 2019-01-07 14:53:24 -05:00
Sean Kaim
1340bc9902 apply themes after restart 2019-01-07 14:50:06 -05:00
Sean Kaim
df36523d6c minor cleanup 2019-01-07 14:27:24 -05:00
Sean Kaim
e626b65f5d speed up Options Page load 2019-01-07 14:03:38 -05:00
Sean Kaim
3ea8a75b3f minor fixes/cleanup 2019-01-07 11:46:14 -05:00
Sean Kaim
6fed9375d3 minor theming fix 2019-01-07 10:52:00 -05:00
Sean Kaim
7764c60797 Merge branch 'develop' into RemoveMagicLib 2019-01-07 10:37:53 -05:00
Sean Kaim
141567f303 Merge pull request #1253 from mRemoteNG/hidpi_fixes
Hidpi fixes
2019-01-07 10:37:35 -05:00
Sean Kaim
ecb2b05c5a connection panel rename not working
other misc fixes/cleanup
2019-01-07 10:17:52 -05:00
Sean Kaim
eda60a7142 resharper fixes & exception logging 2019-01-07 09:27:19 -05:00
nmat
e5fc8bfb2c Merge remote-tracking branch 'upstream/develop' into help-updates 2019-01-07 11:07:41 +01:00
Camilo Alvarez
d8cdba262b Remove tabcontroller references
Remove commented tab controller references
2019-01-06 22:43:57 -05:00
Camilo Alvarez
20f3b19f29 Restored reconnect all, correct tab collection now used instaed of custom one
Reconnect all from main file menu restored, tabsReferences in ConnectionWindow deleted in favor of connDock.DocumentsToArray()
2019-01-06 22:32:16 -05:00
Camilo Alvarez
52ef0c8bcb Fix darcula theme tab colors
Fix color to match theme
2019-01-06 21:17:12 -05:00
Sean Kaim
85aeb059fc find the correct InterfaceControl on conn change 2019-01-05 20:47:33 -05:00
Sean Kaim
edfbad2432 Implement screen shot functionality. 2019-01-05 19:58:56 -05:00
Sean Kaim
ea5b0362df more DPI scaling fixes + frmChoosePnl fixes
frmChoosePanel button layout was off a bit.
Exception when clicking "new" when no panels exist.
2019-01-05 14:34:02 -05:00
David Sparer
1c7d5a5803 fix scaling mode on options pages 2019-01-05 08:20:50 -06:00
David Sparer
1c44fcb070 Merge branch 'develop' into reapply_credential_manager
# Conflicts:
#	mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs
#	mRemoteV1/UI/Controls/Base/NGComboBox.cs
#	mRemoteV1/UI/Controls/NewPasswordWithVerification.Designer.cs
#	mRemoteV1/mRemoteV1.csproj
2019-01-05 07:48:43 -06:00
Sean Kaim
adb7035f3e Merge branch 'develop' into RemoveMagicLib 2019-01-04 20:33:54 -05:00
Sean Kaim
31f9611478 update external references
ADTree from mRemoteNG/ADTree
VncSharp from mRemoteNG/VncSharp with upstream changes included
2019-01-04 17:19:39 -05:00
Sean Kaim
543da46457 Merge branch 'develop' into RemoveMagicLib 2019-01-04 14:06:19 -05:00
Sean Kaim
6409cb276f minor theme related fixes 2019-01-04 13:58:17 -05:00
Sean Kaim
c07e2e48d0 RDP resize (fit and smartsize) are working now 2019-01-03 22:07:28 -05:00
Sean Kaim
df8613f6be minor refactoring 2019-01-03 21:46:33 -05:00
Sean Kaim
3b35e5a44d minor clean up and default to modern theme 2019-01-03 17:06:44 -05:00
Sean Kaim
69216c8902 minor cleanup 2019-01-03 16:23:31 -05:00
Sean Kaim
3fcafbd76b code clean up 2019-01-03 16:06:59 -05:00
Sean Kaim
a45772bceb remove the magiclib dll... 2019-01-03 15:41:03 -05:00
Sean Kaim
aa0be76c6b remove old MagicLib related code 2019-01-03 15:36:31 -05:00
Sean Kaim
3581f2c818 code cleanup 2019-01-03 14:58:57 -05:00
Sean Kaim
469e6b301c code clean up 2019-01-03 13:13:56 -05:00
Sean Kaim
854af92f3d Merge branch 'develop' into RemoveMagicLib 2019-01-03 12:12:39 -05:00
Sean Kaim
bacf832158 More Segoe UI 2019-01-03 12:08:33 -05:00
Sean Kaim
31744be691 Window -> Segoe UI
and cleanup
2019-01-03 12:04:49 -05:00
Sean Kaim
59155b9f6c TaskDailog -> Segoe UI
and minor cleanup
2019-01-03 11:46:14 -05:00
Sean Kaim
9692e67aab minor cleanup 2019-01-03 11:42:35 -05:00
Sean Kaim
3ab3b79bc7 minor cleanup 2019-01-03 11:41:30 -05:00
Sean Kaim
132713f274 more Forms -> Segoe UI 2019-01-03 11:38:09 -05:00
Sean Kaim
62f7347178 Forms -> Segoe UI 2019-01-03 11:24:04 -05:00
Sean Kaim
3dcb0b2c69 PageSequence -> Segoe UI
and some cleanup
2019-01-03 11:20:10 -05:00
Sean Kaim
9e962b468e FilteredPropertyGrid -> Segoe UI 2019-01-03 11:11:08 -05:00
Sean Kaim
d87283b7d7 UI.ConnTree -> Segoe UI 2019-01-03 11:09:17 -05:00
Sean Kaim
e442cacf5f Controls.Base -> Segoe UI 2019-01-03 09:28:48 -05:00
Sean Kaim
f8ed5b37ac controls -> Segoe UI 2019-01-03 09:24:50 -05:00
Sean Kaim
c36d873636 clean up 2019-01-03 09:21:58 -05:00
nmat
ca2f45fc41 Merge remote-tracking branch 'upstream/develop' into help-updates 2019-01-03 12:21:37 +01:00
nmat
3a3f8546d1 Cleanup and finalize some updates
Added and removed some help. Nothing big but trying to finalize some parts of help.
2019-01-03 12:21:17 +01:00
Sean Kaim
42befd9ce7 count open documents on main form close 2019-01-02 17:40:31 -05:00
Sean Kaim
0f315f414d typo 2019-01-02 17:11:23 -05:00
Sean Kaim
44c35c7fb3 changelog update 2019-01-02 16:06:28 -05:00
Sean Kaim
b1a4d839ac Merge branch 'develop' into RemoveMagicLib 2019-01-02 15:57:01 -05:00
Sean Kaim
1ad46b484f NGNumericUpDown Theming fix
Fixes #1240
2019-01-02 15:40:46 -05:00
Sean Kaim
67420e5416 Segoe UI font on Connections Option page 2019-01-02 15:39:53 -05:00
Sean Kaim
166cec0483 minor clean up 2019-01-02 12:48:47 -05:00
Camilo Alvarez
2c3aace7a9 Tool forms restricted from entering document area
Avoid mixing tool and connection forms in the document area, as they behave and look different.
2019-01-02 12:40:55 -05:00
Sean Kaim
d3e40d7c3d Speed up Theme Option Page load
Fixes #1245

The CheckChanged event was causing load settings to be called more than once on form load.
2019-01-02 10:43:33 -05:00
Sean Kaim
efad824fe3 Speed up Theme Option Page load
Fixes #1245

The CheckChanged event was causing load settings to be called more than once on form load.
2019-01-02 10:42:01 -05:00
Sean Kaim
3bb6962ccc minor cleanup 2019-01-02 10:40:32 -05:00
Sean Kaim
6edb94758e minor cleanup 2019-01-02 08:57:59 -05:00
Camilo Alvarez
e8e70bc81b Resolved broken build, references to drag events
Removed event handlers caused broken build.
2019-01-01 20:38:49 -05:00
Camilo Alvarez
269bbb71f3 Removed drag events
Drag events are already implemented in the MDI mode of DockPanelSuite.
2019-01-01 19:37:40 -05:00
Camilo Alvarez
5cfee0974e Cleanup unused code in CloseOtherTabsToTheRight
Cleanup unused code in CloseOtherTabsToTheRight
2019-01-01 19:30:20 -05:00
Camilo Alvarez
a08454a09a Tab close , other and right restored
Reorganized the close event to the connectionTab class, restore the close from the tab X icon functionality , close all other and close left
2019-01-01 19:26:52 -05:00
David Sparer
ce371e45ae xml deserialization can now tolerate missing attributes 2019-01-01 13:50:00 -06:00
David Sparer
82808be0c7 deleted confcons 2.8 schema since this version doesnt exist 2019-01-01 13:43:03 -06:00
David Sparer
f124ec7131 fixed failing test of the PreviousSessionOpener and readded necessary interface property 2019-01-01 11:55:14 -06:00
David Sparer
25aa815a82 began reworking the repo list management screen 2018-12-31 14:17:31 -06:00
Sean Kaim
3ea94fc5e0 fixed failing tests 2018-12-31 14:53:22 -05:00
Sean Kaim
afac6a9a89 Merge branch 'RemoveMagicLib' of https://github.com/mRemoteNG/mRemoteNG into RemoveMagicLib 2018-12-31 12:39:23 -05:00
Sean Kaim
80864c7ca4 code clean up / fix invalid cast
exception would be thrown when attempting to start an external app as a connection.
2018-12-31 12:39:05 -05:00
Camilo Alvarez
19765848d5 Update ConnectionWindow.cs
Restored rename tab functionality
2018-12-31 12:31:50 -05:00
David Sparer
a2542f1b18 rearranged some cred manager UI files 2018-12-31 11:13:48 -06:00
David Sparer
2e0979dc5a simplified screens for creating and editing creds 2018-12-31 11:05:36 -06:00
Sean Kaim
21b3ca0b2f cleanup 2018-12-31 12:01:02 -05:00
Sean Kaim
710fdef0fb avoid exception
When clicking on a cell after switching from an extensable theme to a non-extensable one.
2018-12-31 11:38:56 -05:00
Sean Kaim
4f0237209a Enable DPS 2015 Themes
Rename themes to show that they are the DPS out of the box themes.
2018-12-31 11:37:57 -05:00
Sean Kaim
8f5c40487c minor fixes/cleanup 2018-12-31 11:05:53 -05:00
Sean Kaim
5cecd2be81 enable more right click methods 2018-12-31 10:47:33 -05:00
Sean Kaim
c24b79cb9d FindInterfaceControl(DockPanel DockPnl) 2018-12-31 10:34:44 -05:00
David Sparer
e2ebf25b7b Merge branch 'develop' into reapply_credential_manager 2018-12-31 09:32:47 -06:00
David Sparer
0e804d0bba ngradiobutton now scales correctly for hidpi 2018-12-31 09:23:26 -06:00
Sean Kaim
c749f9ead4 Merge branch 'RemoveMagicLib' of https://github.com/mRemoteNG/mRemoteNG into RemoveMagicLib 2018-12-31 10:19:18 -05:00
Camilo Alvarez
87f8317b97 Update ConnectionWindow.cs
Resolved tabs getting into dock panel positions . Tabs are now restricted to  DockAreas.Document | DockAreas.Float. Menu hook no on opening event insteaed of mouse events .
2018-12-31 10:12:32 -05:00
David Sparer
e6e4ecacaf improved display of ngcheckbox on hidpi devices 2018-12-31 08:48:44 -06:00
Sean Kaim
d458bb9a45 minor cleanup 2018-12-31 09:39:07 -05:00
Sean Kaim
362bf7b141 Close is successful - so at least we can reelase some resources for now...
Added a log message also...
2018-12-31 09:16:01 -05:00
Sean Kaim
9c81766b78 Find the correct connection and switch to it
If a connection is open, double clicking on it in the connection tree should switch to that connection...
2018-12-30 22:27:42 -05:00
Sean Kaim
28580103f3 Initial tab close implemtnation
PuttyProcess.Dispose() seems to hang in my initial testing, so it's been disabled for now...
2018-12-30 21:50:23 -05:00
Sean Kaim
1f93ca1cf8 white space and log message 2018-12-30 21:47:06 -05:00
Sean Kaim
2778175752 minor cleanup 2018-12-30 20:21:48 -05:00
Sean Kaim
3e0ed5b0af minor clean up 2018-12-30 20:18:38 -05:00
Sean Kaim
325bd510ff minor clean up 2018-12-30 20:14:55 -05:00
Sean Kaim
2b5a327e53 auto properties 2018-12-30 20:10:41 -05:00
Sean Kaim
c322946c32 minor cleanup 2018-12-30 20:06:42 -05:00
Sean Kaim
aefee9c92b code cleanup 2018-12-30 20:04:57 -05:00
Sean Kaim
172f7f7085 minor code cleanup 2018-12-30 20:01:43 -05:00
Sean Kaim
bb9d2a0a69 move to correct namespace 2018-12-30 19:58:58 -05:00
Sean Kaim
2d9cc286f0 syntax clean up and null checks
mostly from ReSharper
2018-12-30 19:53:05 -05:00
David Sparer
6629faa4d5 ngcheckbox now scales correctly with dpi 2018-12-30 15:32:32 -06:00
David Sparer
cc44b830a2 scaled images in the unlocker form 2018-12-30 15:28:47 -06:00
David Sparer
687cb6c7bc cred unlocker wont appear if there are no repos to unlock 2018-12-30 14:42:37 -06:00
David Sparer
15f028157e inserted a new page in the upgrade process to view harvested credentials 2018-12-30 14:33:42 -06:00
David Sparer
63ebef56b0 updated cred manager upgrade text with correct version 2018-12-30 11:32:24 -06:00
nmat
d3d397cf70 Merge remote-tracking branch 'upstream/develop' into help-updates 2018-12-29 19:37:17 +01:00
Camilo Alvarez
8c91b37dc8 First removal
Magic library is removed, basic tabbing functions are on, but all other functions are commented.

Some code is lifted from DockPanelSuite in MremoteNGAutoHideStrip to change the behavior and looks for Mremote .
2018-12-29 01:40:18 -05:00
David Sparer
258093e52a when harvesting creds, consider Password when determining if a credential set is a duplicate
This prevents issues when the username and domain are the same but passwords are different (such as for local admin accounts)
2018-12-28 16:25:33 -06:00
David Sparer
b09fdcd5f5 credential objects now used when establishing connections 2018-12-28 16:25:33 -06:00
David Sparer
2277e95dd2 fixed tests 2018-12-28 16:25:33 -06:00
David Sparer
e0486bec7d simplified some of the credential management classes 2018-12-28 16:25:33 -06:00
David Sparer
29d44d103d fixed bug preventing FullyObservableCollection from generating events 2018-12-28 16:25:32 -06:00
David Sparer
44aa100566 minor change to chkbox location 2018-12-28 16:25:32 -06:00
David Sparer
23eb9cc44b added option to auto close the cred unlocker form when all repos are unlocked 2018-12-28 16:25:32 -06:00
David Sparer
f1797282d9 readded option to unlock cred repos on startup 2018-12-28 16:25:32 -06:00
David Sparer
0c0740d488 cred upgrade form now only lets you upgrade if all required fields are filled in 2018-12-28 16:25:32 -06:00
David Sparer
a4faaa20c3 cred manager upgrader now correctly uses custom password provided during upgrade 2018-12-28 16:25:29 -06:00
David Sparer
ce03b74d48 serialization is now working as expected 2018-12-28 16:25:29 -06:00
David Sparer
ce8ada05f5 hooked up the credential manager upgrader 2018-12-28 16:25:29 -06:00
David Sparer
b4dfe5beb6 hooked up tools menu button for cred manager 2018-12-28 16:25:29 -06:00
David Sparer
22ecf0d06f readded forms and controls for the credential manager 2018-12-28 16:25:29 -06:00
David Sparer
1e66787422 readded the credential record property to the connection info class 2018-12-28 16:25:28 -06:00
Sean Kaim
fc4b33f7f0 changelog update 2018-12-28 17:08:25 -05:00
Sean Kaim
918da6e0ee minor code clean up 2018-12-28 16:51:36 -05:00
Sean Kaim
963f487648 update to latest dockpanelsuite
Fixes #269
2018-12-28 13:48:45 -05:00
Faryan Rezagholi
ba1c49e23a rearranged items and added/replaced icons 2018-12-28 18:11:26 +01:00
Sean Kaim
95a27fe2c9 Fix CA1063 2018-12-28 12:05:47 -05:00
Sean Kaim
2951f96daf Fix CA1063 2018-12-28 11:58:44 -05:00
Sean Kaim
9bf2e07006 Fix CA1063 2018-12-28 11:37:34 -05:00
Sean Kaim
332274f2a8 forgot the IDisposable 2018-12-28 11:33:28 -05:00
Sean Kaim
35c052e605 fix CA1001 and code cleanup 2018-12-28 11:20:03 -05:00
Sean Kaim
91de1dbd27 fix CA2229 build warning 2018-12-28 11:09:14 -05:00
Sean Kaim
3bc392fdc4 minor code cleanup 2018-12-28 11:02:54 -05:00
Sean Kaim
79c14ad801 Update changelog 2018-12-28 10:46:57 -05:00
Sean Kaim
0f7503875c Merge pull request #1241 from farosch/issue_fixes
Two issues fixed
2018-12-28 10:41:03 -05:00
Sean Kaim
75e1eac785 Minor code clean up. Ensure a single port scan when selecting first port only. 2018-12-28 10:15:55 -05:00
Sean Kaim
f77b0a51f4 best attempt to cancel pings/scan
And some minor code clean up...
2018-12-28 09:45:03 -05:00
Sean Kaim
8cef1dd51a move localization to ctor and fix minor themeing issue 2018-12-27 17:20:34 -05:00
Faryan Rezagholi
8bdc1590dd Only Scan default ports, when no specific ports are given. Fixes #765 2018-12-27 23:06:41 +01:00
nmat
ea0cf96a4a Merge remote-tracking branch 'upstream/develop' into help-updates 2018-12-27 22:25:25 +01:00
nmat
1bd96f6a88 not sure if this fixes it
test
2018-12-27 22:25:10 +01:00
Faryan Rezagholi
5f4bd19dcc Merge branch 'develop' into issue_fixes 2018-12-27 21:21:16 +01:00
Faryan Rezagholi
843f59b492 Give Focus to FrmMain when clicking on it, fixes #1044 2018-12-27 21:13:44 +01:00
Sean Kaim
f9ccf9e6aa fix monor themeing issue and remove unused component 2018-12-27 15:05:20 -05:00
Sean Kaim
3275c03a21 Merge pull request #1232 from farosch/redesign
App redesign proposal
2018-12-27 14:37:53 -05:00
Sean Kaim
a1a9229852 Credits text not filling form height 2018-12-27 14:34:25 -05:00
Sean Kaim
fc09245cdb Merge branch 'develop' into pr/1232 2018-12-27 14:28:18 -05:00
Sean Kaim
6ac6646ac2 fix line terminators for credits/changelog on about window 2018-12-27 11:39:35 -05:00
Faryan Rezagholi
db8ebcc3d5 removed redundand methods to return page icon in all option pages 2018-12-27 17:11:46 +01:00
Faryan Rezagholi
e0aa053e95 moved mRemoteNG png into subfolder images 2018-12-27 17:11:17 +01:00
Faryan Rezagholi
c8a24374fb merged develop into redisign 2018-12-27 17:10:44 +01:00
Sean Kaim
cde9ac63aa move localization into the ctor 2018-12-27 10:11:11 -05:00
nmat
b2d3aa8c11 Merge remote-tracking branch 'upstream/develop' into help-updates 2018-12-27 15:07:37 +01:00
David Sparer
ed786dfb11 Merge pull request #1200 from sk82jack/develop
Fix and refactor CreateBulkConnections_ConfCons2_6.ps1
2018-12-27 07:35:07 -06:00
nmat
cc93f008a4 Merge remote-tracking branch 'upstream/develop' into help-updates 2018-12-26 23:16:34 +01:00
David Sparer
2284432057 Merge pull request #1222 from farosch/gui_fixes
gui fixes
2018-12-26 16:00:21 -06:00
David Sparer
c623748d27 moved Config window localization into the ctor 2018-12-26 15:54:54 -06:00
Faryan Rezagholi
954f905c8c Merge branch 'redesign' of https://github.com/farosch/mRemoteNG into redesign 2018-12-26 22:54:14 +01:00
Faryan Rezagholi
f23d1faa33 removed pixelated version of app icon 2018-12-26 22:53:53 +01:00
Faryan Rezagholi
1f8bfdac5f make all option pages load their icon in their public constructor 2018-12-26 22:34:27 +01:00
Sean Kaim
b580da9e9f update appveyor config 2018-12-26 16:25:54 -05:00
David Sparer
46a188093a fixed #1238 2018-12-26 13:19:03 -06:00
Faryan Rezagholi
1c7f6438ff Windows Form Designer regenerated code after merge 2018-12-26 19:34:09 +01:00
Faryan Rezagholi
f9da7afd75 merged rebase of upstream/develop onto gui_fixes 2018-12-26 19:31:13 +01:00
Faryan Rezagholi
9d49dd2f40 fixed column being set to an absolute value 2018-12-26 19:25:43 +01:00
Faryan Rezagholi
fb8e19285b redesign of the port scan form, addresses #990 2018-12-26 19:25:43 +01:00
Faryan Rezagholi
505abb3029 fixed gap between elements on the credential settings page and the page border to be consisten with other pages 2018-12-26 19:25:43 +01:00
Faryan Rezagholi
2014598eaf Fixed padding and margin for menustrips 2018-12-26 19:25:42 +01:00
Faryan Rezagholi
1b39c345af Merge remote-tracking branch 'upstream/develop' into develop
mering upstream into develop
2018-12-26 19:21:16 +01:00
David Sparer
bdb1812705 return a default options page icon if no icon exists for page 2018-12-26 10:33:49 -06:00
David Sparer
0b8bcafb72 added unit tests for the DisplayProperties utility class. made class more testable 2018-12-26 10:31:02 -06:00
Sean Kaim
c0c699eab6 remove installer from being built in debug config
intorduced in c7d42305a3
2018-12-26 10:55:33 -05:00
Faryan Rezagholi
5a99c2dcef moved screenshots to extras menu #1234 2018-12-25 20:05:39 +01:00
Faryan Rezagholi
cbce5729fd fixed input box form never returning dialog result "ok".panels/tabs could not be renamed and new themes could not be created 2018-12-25 19:31:28 +01:00
Faryan Rezagholi
7290245729 removed mRemoteNG theme, was accidentely commited 2018-12-25 17:56:11 +01:00
Faryan Rezagholi
5c1bb564f2 Group boxes in notification settings form were default winforms instead of NGGroupBoxes (themes didn't apply) 2018-12-25 17:49:54 +01:00
Faryan Rezagholi
94ee854196 renamed classes under UI\Forms to begin with a capital letter 2018-12-25 16:22:56 +01:00
Faryan Rezagholi
91602c0be5 dispaly wait cursor when options are loading 2018-12-25 16:04:34 +01:00
Faryan Rezagholi
a31f287b2b renamed AppIcon to mRemoteNG_Icon for consistency 2018-12-25 15:57:25 +01:00
Faryan Rezagholi
f3a0d82304 updated classes to properly return their page icon 2018-12-25 15:53:22 +01:00
Faryan Rezagholi
f2669bb875 altered theme page layout, so the scrollbar doesn't get cut off when page is loaded into options window 2018-12-25 15:52:43 +01:00
Faryan Rezagholi
4801559edc cleaned up loactions of all used icons to be under \resources\icons with consitens naming (_Icons) at the end 2018-12-25 15:51:29 +01:00
nmat
9496b71bb7 Merge remote-tracking branch 'upstream/develop' into help-updates 2018-12-25 10:27:35 +01:00
Sean Kaim
ba1e8cc448 update changelog 2018-12-24 15:08:33 -05:00
Sean Kaim
d307adbbef Merge pull request #1228 from farosch/external_links
External links
2018-12-24 15:02:14 -05:00
Faryan Rezagholi
933bc0a9e3 Added ico version of pixelated icon for main form, help button and notify icon 2018-12-24 01:17:59 +01:00
Faryan Rezagholi
ee7319c702 introduced pixelated version of logo to be easier readable in 16x16 2018-12-24 01:07:01 +01:00
Faryan Rezagholi
aa63d11816 added "text file fragment" block to wix configuration so that the tile manifest gets included in the installer 2018-12-24 01:06:35 +01:00
Faryan Rezagholi
b1b402b011 added needed minimum arguments for tile manifest to work 2018-12-24 01:05:04 +01:00
Faryan Rezagholi
5931e8f813 replaced icon for connection tree 2018-12-24 01:04:27 +01:00
Faryan Rezagholi
52a5a54bb3 corrected positioning of letters in icon 2018-12-24 01:03:42 +01:00
Faryan Rezagholi
7ca987fb1c corrected positioning of letters in icon 2018-12-24 01:03:21 +01:00
Faryan Rezagholi
66dbf21df0 fixed missing icon in windows control panel 2018-12-23 23:35:21 +01:00
Faryan Rezagholi
cc0d42f34f fixed "Launch mRemoteNG now" string, was falsely change in an earlier commit 2018-12-23 23:23:16 +01:00
Faryan Rezagholi
38a79d8d3e excluded tile manifest from postbuild "tidy"-script 2018-12-23 23:17:29 +01:00
Faryan Rezagholi
9420420622 added post-build script to copy tiles and manifest 2018-12-23 23:17:02 +01:00
Faryan Rezagholi
ce1139f114 added tiles and tile manifest to resources 2018-12-23 23:16:32 +01:00
Faryan Rezagholi
d8ce0416fa added images and manifest for windows tiles 2018-12-23 23:15:23 +01:00
Faryan Rezagholi
a0e696eca4 updated splash screen 2018-12-23 22:00:25 +01:00
Faryan Rezagholi
6b20ffeeba Merge branch 'develop' into redesign 2018-12-23 21:39:32 +01:00
Faryan Rezagholi
ac1c0c90e7 Merge remote-tracking branch 'upstream/develop' into develop
update fork from original repository
2018-12-23 21:35:58 +01:00
Faryan Rezagholi
3663384ccf removed default colors from the manager class (was added in a commit earlier) 2018-12-23 21:29:52 +01:00
Faryan Rezagholi
ecf8d437c7 removed edition label in favor of adding the edition string to the title label 2018-12-23 21:22:31 +01:00
Faryan Rezagholi
3c07fc0387 removed illegal cast 2018-12-23 21:19:10 +01:00
Faryan Rezagholi
8bd2b9d7a7 replaced logo in about screen 2018-12-23 21:17:22 +01:00
Faryan Rezagholi
b2b78c67f4 new app icon as png for help menu 2018-12-23 21:17:08 +01:00
Faryan Rezagholi
94147c23b1 Replaced old mRemoteNG icon with new one 2018-12-23 20:40:04 +01:00
Faryan Rezagholi
ba588c9edf Removed unnecessary translation files for installer 2018-12-23 20:39:41 +01:00
Faryan Rezagholi
8810f453df Removed unnecessary party from licence file, see #1153 2018-12-23 19:42:40 +01:00
Faryan Rezagholi
c7d42305a3 Tidied up Resources folder, added new Photoshop templates for images and replaced installer images 2018-12-23 19:38:11 +01:00
Sean Milligan
40025db415 Tracks the active tab in the treeview 2018-12-23 09:19:05 -08:00
Faryan Rezagholi
c0b8a8b8eb redesign of the port scan form, addresses #990 2018-12-23 15:58:48 +01:00
Sean Kaim
92416b4661 test build for running with FIPS enabled
Reference #222
2018-12-22 19:19:11 -05:00
Faryan Rezagholi
aaa93b1bcc external links to open in browser instead of mremote itself 2018-12-23 00:56:09 +01:00
sk82jack
b328331d7c Add prompt for decryption password only if necessary 2018-12-22 22:24:39 +00:00
sk82jack
f51079e065 Add credential parameters 2018-12-22 22:24:39 +00:00
sk82jack
534c622980 Add folder selection for portable installation 2018-12-22 22:24:39 +00:00
sk82jack
6cc1cb5afa Fix registry key locations 2018-12-22 22:24:39 +00:00
sk82jack
2372d5ca92 Fix and refactor code 2018-12-22 22:24:39 +00:00
David Sparer
331af8cd24 Merge pull request #1218 from farosch/splashscreen
Splashscreen
2018-12-22 16:16:39 -06:00
Faryan Rezagholi
d58b8fffdc Merge pull request #2 from mRemoteNG/develop
update
2018-12-22 23:10:45 +01:00
David Sparer
e5d05b88bc Merge pull request #1227 from farosch/searchbar2top
Position of search bar configurable via settings
2018-12-22 16:07:47 -06:00
Faryan Rezagholi
61f823b6be Made position of the search bar configurable vias settings 2018-12-22 17:20:32 +01:00
David Sparer
06f23d5754 Merge pull request #1220 from farosch/appleicon
Added Apple Icon
2018-12-22 09:29:09 -06:00
Faryan Rezagholi
e567f1386a Merge pull request #1 from mRemoteNG/develop
update
2018-12-22 15:38:21 +01:00
nmat
15a734ace6 Merge remote-tracking branch 'upstream/develop' into help-updates 2018-12-22 10:45:48 +01:00
nmat
6f0309b6a7 Some fixes after comment from dev 2018-12-22 10:00:13 +01:00
Faryan Rezagholi
08191278d7 Chnaged splash screen form to display correctly on a high DPI device 2018-12-21 18:19:13 +01:00
Faryan Rezagholi
6a4b31ffe6 fixed gap between elements on the credential settings page and the page border to be consisten with other pages 2018-12-21 16:21:25 +01:00
Faryan Rezagholi
a150757a97 fixed checkbox in connection settings being 1px off 2018-12-21 16:09:48 +01:00
Faryan Rezagholi
8eded14f85 Fixed padding and margin for menustrips 2018-12-21 16:08:09 +01:00
David Sparer
b311f85ca0 Merge pull request #1217 from farosch/searchbar2top
Moved searchbar in connection tree to top
2018-12-21 07:37:10 -06:00
Faryan Rezagholi
9423c8135f Added Apple Icon 2018-12-21 14:21:40 +01:00
Faryan Rezagholi
5221907ef8 added my name to my github link :P 2018-12-21 00:43:32 +01:00
Faryan Rezagholi
4cc1847ea6 added mRemoteNG Logo to splash screen 2018-12-21 00:41:02 +01:00
Faryan Rezagholi
2a0032a199 Splash screen shown on startup and hiding after completion of the load method of the main form 2018-12-21 00:10:59 +01:00
Faryan Rezagholi
9b722eacdb Added form for spash screen 2018-12-20 23:42:11 +01:00
Faryan Rezagholi
c6f15411e3 Moved searchbar in connection tree to top 2018-12-20 15:48:22 +01:00
nmat
90a16b7149 Add more options and some cleaning 2018-12-18 22:23:29 +01:00
David Sparer
2df9741cd6 loadbalanceinfo property now imported from rdp files
fixes #1132
2018-12-17 11:47:15 -06:00
David Sparer
497b8bfce5 updated readme badges 2018-12-17 09:38:10 -06:00
nmat
0fdbb8d8a1 Merge remote-tracking branch 'upstream/develop' into help-updates 2018-12-15 18:28:24 +01:00
David Sparer
7a8a2fbf77 Merge pull request #1191 from mRemoteNG/929_server_name_in_notification
Host names are now displayed in some notifications
2018-12-15 10:12:33 -06:00
nmat
1e48cb831a Merge remote-tracking branch 'upstream/develop' into help-updates 2018-12-15 02:22:12 +01:00
Sean Kaim
9e96732b73 Update SSH.NET package
* Code clean up
* Notify users of exceptions/failed uploads
2018-12-14 17:09:30 -05:00
David Sparer
e863906eaa added test validating that an empty password cannot be passed to an encryptor 2018-12-14 07:31:50 -06:00
nmat
13ec6e2dca More cleanup and add tabs and panels 2018-12-09 19:51:57 +01:00
nmat
968e7222fd Merge remote-tracking branch 'upstream/develop' into help-updates 2018-12-05 23:34:23 +01:00
David Sparer
a84159ee70 Merge pull request #1159 from mRemoteNG/1123_handle_unhandled_exceptions
Added unhandled exception window
2018-12-05 16:31:36 -06:00
David Sparer
703f9deb9a added a version property to the ISerializer interface. switch to using confcons v2.7 serializer in production and tests. this resolved an issue with serializing the RedirectClipboard property 2018-12-05 16:07:59 -06:00
nmat
07147f13a8 Added keyboardshortcuts and removed configuration file. 2018-12-04 23:52:47 +01:00
nmat
a57d9d41c3 Help updates
Some help updates
2018-12-04 21:39:57 +01:00
Leaskovski
a40f66fc94 Added a new option to the Appearance and Tabs configuration page to allow the user to toggle if connection windows display tabs or not as per #1171. 2018-12-03 15:46:14 +00:00
nmat
097c97ca32 Merge remote-tracking branch 'upstream/develop' into help-updates 2018-11-16 00:35:57 +01:00
David Sparer
3e1d418269 Merge branch 'develop' into 929_server_name_in_notification 2018-11-15 15:44:24 -06:00
David Sparer
5ee7b3fcbf fixed failing test 2018-11-15 15:44:04 -06:00
David Sparer
15adf97174 refactored some protocol base events to standardize how disconnect/error events are raised 2018-11-15 15:31:38 -06:00
David Sparer
4bd5befaaa refactored force flag checks to be simpler to read 2018-11-15 14:18:45 -06:00
nmat
5fe6272915 Replaced mRemote with mRemoteNG in help 2018-11-15 00:46:30 +01:00
nmat
7a01a1f33f Add updated screenshot 2018-11-15 00:32:40 +01:00
David Sparer
92759aa9dc refactored connection initiator a bit to reduce unnecessary code
the conForm arg was always null, we didnt need it
2018-11-14 07:06:25 -06:00
David Sparer
65e21190b9 extracted rdp error codes to new class 2018-11-12 18:54:54 -06:00
David Sparer
f6877631d9 updated changelog 2018-11-12 17:23:58 -06:00
David Sparer
1e4fa8432b task dialog now properly localizes its buttons 2018-11-12 17:11:25 -06:00
David Sparer
ed5423368e use the task dialog for confirming node deletions, Esc key now closes dialog
related to #1064
2018-11-12 17:07:07 -06:00
David Sparer
673acad72c NBLabel now respects the TextAlignment property when in theming mode 2018-11-12 17:05:10 -06:00
David Sparer
efc04cc82d refactored task dialog to use am NGLabel instead of custom string drawing for the main instruction 2018-11-12 16:56:49 -06:00
David Sparer
b880f7c946 NGLabel now attempts to wrap text like default labels when theme mode is active 2018-11-12 16:51:45 -06:00
David Sparer
7304de0102 Esc key now cancels options window changes
related to #1064
2018-11-11 18:18:46 -06:00
David Sparer
a64601afcc fixed some visual issues with the notificaiton panel date label 2018-11-11 11:22:06 -06:00
David Sparer
79ce3c0d74 fixed issue with notification panel internal layout 2018-11-11 10:27:59 -06:00
David Sparer
83c31ad2b4 created sql version upgrader for confcons v2.7 2018-11-08 17:16:33 -06:00
David Sparer
3bcb769965 Merge branch 'release/v1.76' into develop
# Conflicts:
#	CHANGELOG.TXT
#	mRemoteV1/Properties/AssemblyInfo.cs
#	mRemoteV1/mRemoteV1.csproj
2018-11-08 16:38:51 -06:00
David Sparer
75e0b8f4c2 set release date in changelog 2018-11-08 15:09:08 -06:00
David Sparer
78ef0fdaf4 Merge pull request #1107 from mRemoteNG/321_hidpi
Implement HiDPI support
2018-11-08 07:36:44 -06:00
David Sparer
8d29ff2d61 fixes #1168 2018-11-04 19:13:10 -06:00
David Sparer
eea79da1ae updated changelog 2018-11-04 18:06:14 -06:00
David Sparer
cb5447f86e fixes #1181 2018-11-04 18:03:39 -06:00
David Sparer
8cb31ad524 slight cleanup of Runtime class 2018-11-04 18:03:29 -06:00
David Sparer
6ca52a0db1 updated changelog 2018-11-04 16:39:25 -06:00
David Sparer
25e30672c8 bumped version to v1.76.12 2018-11-04 16:38:14 -06:00
David Sparer
abcab2aadf sql now encrypts and decrypts passwords 2018-11-03 18:28:53 -05:00
David Sparer
19bb8f7595 refactored db classes to expose tblRoot data 2018-11-03 11:02:26 -05:00
David Sparer
0427956e8b we can now prevent saving to the database when a save was triggered for a local-only property change
this will prevent unnecessary db saves
2018-11-03 10:34:30 -05:00
David Sparer
78bf40282a the IsExapnded property is no longer saved to the DB 2018-11-02 11:30:39 -05:00
David Sparer
6c6a82f8e6 minor cleanup 2018-11-02 11:03:25 -05:00
David Sparer
4b9cc7be08 Merge branch 'release/v1.76' into 1134_dont_save_connection_status_to_db
# Conflicts:
#	mRemoteV1/Connection/ConnectionsService.cs
2018-11-02 10:56:49 -05:00
David Sparer
dc2d6b8160 added a few debug messages to track db connection loading events 2018-11-02 10:45:18 -05:00
David Sparer
083456e33a fixed several event handle leaks #1173 2018-11-02 10:29:09 -05:00
David Sparer
80e43e8634 added a safety check to the previous session opener to only open sessions that aren't already open 2018-11-02 09:30:18 -05:00
David Sparer
e99b8ed453 hooked up the local settings serializer 2018-11-01 19:14:25 -05:00
David Sparer
4aba36b756 added classes to handle local connection properties when dealing with the DB 2018-11-01 16:37:30 -05:00
David Sparer
2ebf654973 added a ForEach extension for enumerables 2018-11-01 16:36:56 -05:00
David Sparer
f560fb86d8 moved database serializers to more logical place 2018-11-01 15:00:51 -05:00
David Sparer
981689aa26 resolved #1170 2018-11-01 08:50:27 -05:00
David Sparer
b3fd266c31 Merge branch 'develop' into 1123_handle_unhandled_exceptions
# Conflicts:
#	mRemoteV1/Resources/Language/Language.resx
2018-10-31 09:10:14 -05:00
David Sparer
062b7a5986 removed test exception 2018-10-30 08:32:52 -05:00
David Sparer
088b1ee1c2 updated changelog and credits for v1.77 2018-10-29 17:12:25 -05:00
David Sparer
1d572bb4b6 Merge pull request #1160 from MitchellBot/develop
Feature Request: Right click option to copy hostname #1141
2018-10-29 17:01:11 -05:00
MitchellBot
cf8e033831 QuickConnect uses exact case of input
https://github.com/mRemoteNG/mRemoteNG/issues/1121
2018-10-28 20:59:40 -07:00
MitchellBot
43977a74cc Feature Request: Right click option to copy hostname #1141
Feature Request: Right click option to copy hostname #1141
2018-10-28 20:06:03 -07:00
David Sparer
d67e96539b added an unhandled exception window that will be displayed when unhandeled exceptions occur 2018-10-28 14:46:30 -05:00
David Sparer
09d1aff6a8 rdp connections now properly scale for hidpi 2018-10-27 16:09:12 -05:00
David Sparer
41c5a49abc began investigating how to set rdp desktop scaling for hidpi 2018-10-20 18:29:34 -05:00
David Sparer
eacff9025e Merge branch 'develop' into 321_hidpi
# Conflicts:
#	mRemoteV1/Connection/Protocol/PuttyBase.cs
2018-10-20 09:56:26 -05:00
David Sparer
f56b8f8e42 Merge branch 'master' into develop
# Conflicts:
#	CHANGELOG.TXT
#	CREDITS.TXT
#	mRemoteV1/Properties/AssemblyInfo.cs
2018-10-20 09:48:50 -05:00
David Sparer
8ab221e5a8 Merge branch 'release/v1.76' 2018-10-18 17:29:11 -05:00
David Sparer
21e51c8455 updated changelog and credits 2018-10-18 17:08:30 -05:00
David Sparer
3234896caf bumped version 2018-10-18 17:08:22 -05:00
David Sparer
b00dd1c5f5 fixes #1136 2018-10-17 17:48:16 -05:00
David Sparer
992a3f9d1c cherrypicked pr #1145
Fixing "Reconnect to previously opened sessions on startup"
2018-10-17 16:52:22 -05:00
David Sparer
6b280b5aa4 Merge pull request #1145 from st-schuler/reconnect-patch
Fixing "Reconnect to previously opened sessions on startup"
2018-10-17 16:46:39 -05:00
st-schuler
e6713520c7 Fixing "Reconnect to previously opened sessions on startup" 2018-10-17 20:01:51 +02:00
David Sparer
4f75b0343e Merge pull request #1120 from Fyers/develop
Improved German translations
2018-10-10 08:22:34 -05:00
David Sparer
097ebccdcd Merge pull request #1129 from pablomh/patch-1
Update Language.es.resx
2018-10-10 06:48:49 -05:00
pablomh
954e1de4da Update Language.es.resx
Misc fixes.
2018-10-10 09:22:31 +02:00
Fyers
63dc79699d Merge pull request #2 from Fyers/merge
Merge
2018-10-08 23:31:54 +02:00
Fyers
63f342bbdb resolved conflicts 2018-10-08 23:31:01 +02:00
Fyers
7c9b90ed7d Merge remote-tracking branch 'upstream/develop' into merge 2018-10-08 23:21:31 +02:00
David Sparer
00e45b60ad Merge branch 'master' into develop
# Conflicts:
#	CHANGELOG.TXT
#	mRemoteV1/Properties/AssemblyInfo.cs
#	mRemoteV1/Resources/Language/Language.resx
2018-10-08 15:23:25 -05:00
David Sparer
d1a7a37909 Merge branch 'release/v1.76' 2018-10-07 18:42:03 -05:00
David Sparer
1c12b52ada extension to the fix for #1124 2018-10-07 18:32:17 -05:00
David Sparer
722fe40899 updated changelog and bumped version 2018-10-07 16:33:29 -05:00
David Sparer
b2e7ebf43d fixed #1124 2018-10-07 16:28:09 -05:00
David Sparer
3ed8e768aa bumped patch version 2018-10-07 09:04:48 -05:00
David Sparer
d362691389 updated build scripts to include debug symbols and normalized github
asset names

cherrypicked from the develop branch
2018-10-07 07:53:31 -05:00
David Sparer
4b7c54d5b5 updated changelog 2018-10-07 07:28:57 -05:00
David Sparer
fbd0407863 added redirect clipboard to xml schema for v2.7 confcons 2018-10-03 21:05:12 -05:00
David Sparer
7bab1b4297 created a confcons v2.7 serializer 2018-10-03 21:00:23 -05:00
David Sparer
cfce9e9887 Merge pull request #951 from CrAbelleira/develop
Clipboard sharing setting implementation for RDP protocol
2018-10-03 20:51:19 -05:00
Fyers
9df2a96027 improved german translations 2018-10-01 19:26:26 +02:00
Cristian Abelleira Olañeta
d967c719f5 Added "RedirectClipboard" to ConnectionSerializers/Xml and MiscSerializers 2018-10-01 00:52:31 +02:00
David Sparer
ec80a5aa70 fixed #1117 2018-09-30 13:19:35 -05:00
David Sparer
0c95f178ca updated changelog 2018-09-30 11:04:03 -05:00
David Sparer
e0405b15df fixes #1110 2018-09-30 11:02:01 -05:00
David Sparer
e029f30acf added a few try/catch blocks around some rdp code. related to #853 2018-09-30 10:44:22 -05:00
David Sparer
44ed836b7c fixed #1115 2018-09-29 12:14:44 -05:00
David Sparer
00401201d1 fixed Spanish translation issue. fixes #1112 2018-09-27 08:23:17 -05:00
Cristian Abelleira Olañeta
726491feee Completed BuildExpectedConnectionInfoPropertyList 2018-09-24 18:19:33 +02:00
Cristian Abelleira
36a94e1399 Merge branch 'develop' into develop 2018-09-24 11:39:32 +02:00
David Sparer
855c83a325 Merge branch 'develop' into 321_hidpi
# Conflicts:
#	mRemoteV1/UI/Controls/MultiSshToolStrip.cs
#	mRemoteV1/UI/Window/AboutWindow.cs
#	mRemoteV1/UI/Window/ComponentsCheckWindow.cs
2018-09-22 17:51:00 -05:00
David Sparer
d9e65719d3 Merge branch 'release/v1.76' into develop
# Conflicts:
#	CHANGELOG.TXT
2018-09-22 17:40:42 -05:00
David Sparer
c774070feb fixed putty placement within connection window 2018-09-22 17:22:01 -05:00
David Sparer
5aeff8c9c0 fixed some more ctaskdialog scaling issues 2018-09-22 16:37:02 -05:00
David Sparer
4d5f5cf04b fixed textbox width scaling of quick connect and multissh toolbar controls 2018-09-22 16:01:53 -05:00
David Sparer
1d6b87ffa7 fixed about window scaling 2018-09-22 15:36:22 -05:00
David Sparer
3b82435740 fixed ad import window scaling 2018-09-22 15:35:19 -05:00
David Sparer
17499abfd0 fixed uvnc window scaling 2018-09-22 15:35:03 -05:00
David Sparer
9a57deb9ab fixed scaling of export form 2018-09-22 15:31:09 -05:00
David Sparer
089c58310c fixed scaling of screenshot window 2018-09-22 15:30:59 -05:00
David Sparer
647de5d473 fixed scaling of message window 2018-09-22 15:26:01 -05:00
David Sparer
b223b121d1 minor visual fix 2018-09-22 14:38:22 -05:00
David Sparer
49fbb37542 fixed scaling of the external tools window 2018-09-22 14:36:01 -05:00
David Sparer
1496192756 fixed port scan window scaling 2018-09-22 13:22:31 -05:00
David Sparer
f34cd50b9c fixed ssh transfer window scaling 2018-09-22 13:22:20 -05:00
David Sparer
20f46bea61 fixes #1106 2018-09-20 15:10:43 -05:00
David Sparer
f4ff8d37d5 component check window layout fixed for hidpi 2018-09-15 15:30:41 -05:00
David Sparer
15108645d4 updated the update screen to layout correctly on higher dpi screens 2018-09-15 15:23:51 -05:00
David Sparer
b5e8f32f1f removed dead code 2018-09-15 13:29:02 -05:00
David Sparer
4027c41c73 made password form respect dpi scaling 2018-09-15 13:20:33 -05:00
David Sparer
7037139ab3 removed the now-unused input class 2018-09-08 14:27:58 -05:00
David Sparer
b976fe4bad rewrote the input box class to be more display-responsive 2018-09-08 14:26:03 -05:00
David Sparer
d674a201ee options page icons now scale correctly 2018-09-08 10:48:45 -05:00
David Sparer
d4a3e292ed correct the appearance page icon 2018-09-08 09:24:06 -05:00
David Sparer
50084e47f7 themes page now displays correctly on hidpi 2018-09-08 09:21:40 -05:00
David Sparer
6e0a16a4d1 task dialog now works in scaled displays 2018-09-07 18:16:44 -05:00
David Sparer
5e87d8de18 scale the putty image on the advanced page 2018-09-03 10:02:57 -05:00
David Sparer
9a6c2fa7c8 added a bitmap scaling function 2018-09-03 10:01:06 -05:00
David Sparer
f440f91233 made appearance options page scale correctly 2018-09-03 09:10:34 -05:00
David Sparer
ccf364f2dd added func for calculating scaled width 2018-09-03 09:06:27 -05:00
David Sparer
3c5baae568 added class to calculate desktop scaling factor. connection tree icons are now scaled appropriately 2018-09-03 07:51:40 -05:00
David Sparer
7710ff32a6 scale search image size 2018-09-02 18:09:26 -05:00
David Sparer
e081d2b73a set window scaling to DPI 2018-09-02 18:07:14 -05:00
David Sparer
0c77fa43ff initial redesign of connection tree window using table layout panel 2018-09-02 17:56:10 -05:00
David Sparer
6ee4353bbd better to just remove the max size setting on the custom controls than override it in frmmain 2018-09-02 17:29:34 -05:00
David Sparer
bddab24d48 explicitly set the max size of toolbar items to infinite
i guess the default max size is height:25. When we don't explicitly set this to 0 it doesn't scale correctly
2018-09-02 17:15:16 -05:00
David Sparer
45f9a32e59 remove max size constraint from quick connect and ext tools toolbars 2018-09-02 17:10:40 -05:00
David Sparer
39b297fd00 set EnableWindowsFormsHighDpiAutoResizing config 2018-08-31 18:54:36 -05:00
David Sparer
fd2167d679 set dpi scale on frmmain 2018-08-31 18:37:21 -05:00
David Sparer
d07249e1b2 custom scaling of quick connect toolbar 2018-08-31 17:45:08 -05:00
David Sparer
31dc59c9d5 suspend layout of all menu controls when creating form 2018-08-31 17:28:37 -05:00
David Sparer
f3e82dac19 dont set max size on tool strip menu controls 2018-08-31 17:21:51 -05:00
David Sparer
41db80dba8 try different renderer 2018-08-31 17:13:44 -05:00
David Sparer
8efe922b50 set manifest entry to enable dpi scaling 2018-08-31 16:26:41 -05:00
Sean Kaim
a5d22d287c Fixed #1091 2018-08-28 14:59:07 -04:00
Sean Kaim
793095900b fix #1092
parse enums properly
2018-08-28 09:35:08 -04:00
David Sparer
ee63292e55 Merge branch 'update-asset-labels' into develop 2018-08-26 12:49:18 -05:00
David Sparer
9fbcde3ca0 simplify labels 2018-08-26 12:46:17 -05:00
David Sparer
9e48c8e359 changed labels to be more enduser appropriate 2018-08-26 12:21:59 -05:00
David Sparer
da07f50e49 Merge branch 'label-github-assets' into develop 2018-08-25 18:27:39 -05:00
David Sparer
cc872cd2b4 fixed powershell script 2018-08-25 17:03:28 -05:00
David Sparer
a3fa1e541c modified build to label assets 2018-08-25 17:02:54 -05:00
David Sparer
b579e823bd updated credits 2018-08-25 11:42:11 -05:00
David Sparer
fc5b1ec85e adjusted a few english strings that were added in #928 2018-08-25 11:39:25 -05:00
David Sparer
e0c2037831 set assembly version to 1.77.0 2018-08-25 11:38:40 -05:00
David Sparer
9f44d6b75b added changelog items for v1.77 updates 2018-08-25 10:56:30 -05:00
David Sparer
b6f2fff42b Merge branch 'release/v1.76' into develop 2018-08-25 10:46:10 -05:00
David Sparer
f10e54e47b bumped assembly version to 1.76.8 2018-08-25 10:31:35 -05:00
David Sparer
704e0c1dc1 updated changelog 2018-08-25 10:29:43 -05:00
David Sparer
067ac8fb56 Merge branch 'areytsman-Advanced_closing_tabs' into develop 2018-08-25 09:51:09 -05:00
David Sparer
4428089146 Merge branch 'Advanced_closing_tabs' of https://github.com/areytsman/mRemoteNG into areytsman-Advanced_closing_tabs
# Conflicts:
#	mRemoteV1/Resources/Language/Language.resx
#	mRemoteV1/Resources/Language/Language.ru.resx
2018-08-25 09:24:58 -05:00
David Sparer
44ce674166 Merge branch 'release/v1.76' into develop 2018-08-24 17:20:56 -05:00
David Sparer
0c79a9acde fixes #1088 2018-08-24 14:43:08 -05:00
David Sparer
ebfc2715e7 updated changelog 2018-08-24 13:24:23 -05:00
David Sparer
b0dbc9dc18 only delete reg key value if the value exists 2018-08-24 13:23:52 -05:00
David Sparer
507cdf75a5 fixes #1087 2018-08-24 13:23:02 -05:00
David Sparer
8f8492b0be xml deserializer now gives connections an ID if the ID string in xml is empty
fixes #1082
2018-08-24 10:37:54 -05:00
David Sparer
457e715188 set assembly version to 1.76.7 and set release date in changelog 2018-08-22 10:59:45 -05:00
David Sparer
3fad827b9f Merge branch 'release/v1.76' into develop
# Conflicts:
#	Tools/zip_portable_files.ps1
#	mRemoteV1/Config/Putty/PuttySessionsRegistryProvider.cs
2018-08-22 10:39:09 -05:00
David Sparer
8bd571c78d added a wrapper around the windows registry api so we can better unit test classes that use the registry 2018-08-22 09:41:32 -05:00
David Sparer
1724521ebf added some null guards to methods 2018-08-22 07:06:44 -05:00
David Sparer
b0fb3596aa added some safety checks around accessing putty registry settings 2018-08-22 07:06:16 -05:00
David Sparer
38ff8340e4 Merge pull request #1016 from wwj402/develop
Chinese simplified language update for latest commit 05c96da
2018-08-19 12:01:31 -05:00
David Sparer
f759ea4bc2 Merge pull request #1072 from sli-pro/develop
Update the Russian language
2018-08-19 11:54:19 -05:00
David Sparer
fb228d72b1 resolved bug #1076 2018-08-19 11:44:43 -05:00
David Sparer
916361a3be update changelog 2018-08-11 20:03:27 -05:00
sli-pro
011d0cad8c Update the Russian language
- Update the Russian language (Language.ru.resx)

- Update Language.resx
2018-08-11 18:34:11 +03:00
David Sparer
408c40f699 fixed a few toolbar location loading edge cases
related to #1068
2018-08-11 10:02:07 -05:00
David Sparer
4173f6d775 swapped direct calls to Monitor with a lock statement and added a few method comments 2018-08-11 06:47:31 -05:00
Sean Kaim
e6f3c22064 code clean up / add'l checks
related to #1061
2018-08-03 10:13:31 -04:00
David Sparer
a013518eac bump assembly version 2018-08-03 08:51:44 -05:00
David Sparer
9c88cacb3d hopefully a fix for #1061 2018-08-03 08:33:51 -05:00
David Sparer
d49bf04b15 fixes #1062 2018-08-03 08:13:39 -05:00
David Sparer
1dbd5dc5bc set 1.76.5 release date in changelog 2018-08-02 18:15:33 -05:00
David Sparer
c103706a54 added test to verify #1057 2018-08-02 17:55:36 -05:00
David Sparer
b0a027df52 updated changelog 2018-08-02 17:49:50 -05:00
David Sparer
868641378a Merge pull request #1055 from mRemoteNG/647_save_symbols
647 save symbols
2018-08-02 16:34:04 -05:00
David Sparer
11baae3107 applying patch provided by Toomix in #1057 and merged in 7dbef77 2018-08-01 07:01:45 -05:00
David Sparer
7526bb430f Merge pull request #1057 from Toomix/patch-1
Fixing NullReferenceException when renaming node
2018-08-01 06:45:42 -05:00
Toomix
7dbef77687 Fixing NullReferenceExcepction in renaming Node
When I have no selected node and I press F2 key, NullReferenceException appears in method RenameSelectedNode(). I added not null condition, it is working now. Debugged in VS2017.
2018-08-01 08:50:55 +02:00
David Sparer
ed8125042e make portable symbols zip file name easier to distinguish from regular symbols 2018-07-30 17:02:08 -05:00
David Sparer
25b2655d0f log which files are uploaded to github release 2018-07-30 16:55:09 -05:00
David Sparer
145a264154 handle wildcard in github asset upload file path 2018-07-30 16:45:55 -05:00
David Sparer
3e33170ae0 handle non-auto hidden notification panel focusing too 2018-07-30 15:23:59 -05:00
David Sparer
d18bf68f0e fix release tests 2018-07-30 14:12:17 -05:00
David Sparer
368917e108 accidentally left off the variable identifier for msbuild 2018-07-30 11:16:04 -05:00
David Sparer
cdea4c3911 missed a groovy var 2018-07-30 11:02:05 -05:00
David Sparer
b4b9b55bbf updated jenkins publish script to target msbuild15 2018-07-30 10:59:21 -05:00
David Sparer
6092c63df4 fix zipping symbols 2018-07-30 08:03:40 -05:00
David Sparer
fda5132184 zip symbols 2018-07-29 22:22:13 -05:00
Sean Kaim
6a9fb25a18 fixes #868
DialogResult is not currently checked, so it's a minimal/non-impact bug currently. But it's fixed now in case it's used in the future...
2018-07-29 21:30:11 -04:00
Sean Kaim
18d7344690 fixes #762
Increased button size by about 150%
2018-07-29 21:16:19 -04:00
Sean Kaim
ba50cf20a0 update changelog 2018-07-29 21:03:54 -04:00
Sean Kaim
7bd6e126e2 Fix #893
Disabled ClickOnce/Publish wihtin the project options.
2018-07-29 21:02:33 -04:00
Sean Kaim
f7521c81d5 Fixes #1052
and some code clean up
2018-07-29 19:03:21 -04:00
David Sparer
f483a2dc2f replaced Timer implementation with Task async call
fixes #1052
2018-07-29 12:02:41 -05:00
Sean Kaim
9769d5af06 changelog update 2018-07-28 22:31:26 -04:00
Sean Kaim
0a2dc3563e fixes #1040
clicking close would have the same effect. Check return code and don't open the connection unless user input has been provided.
2018-07-28 22:30:06 -04:00
Sean Kaim
e9f0157b2b code clean up 2018-07-28 22:15:11 -04:00
Sean Kaim
e8e566fcdd localization fixes 2018-07-28 22:10:17 -04:00
Sean Kaim
72b7d22cef localization fixes 2018-07-28 22:09:27 -04:00
Sean Kaim
f79da476fd options pages code clean up 2018-07-28 21:59:24 -04:00
Sean Kaim
ef31b7844c Merge pull request #1053 from mRemoteNG/cherry
Cherry picked commits for 1.76
2018-07-28 13:54:34 -04:00
Sean Kaim
f1ed1bf115 appveyor post build tests 2018-07-28 13:11:56 -04:00
Sean Kaim
23ea028965 don't run post build zip in appveyor 2018-07-28 13:11:10 -04:00
Sean Kaim
42046a614f Solution config was building wrong projects 2018-07-28 13:05:37 -04:00
Sean Kaim
36055f56e6 the post publish job in the appveyor.yaml in ps1 form 2018-07-28 13:05:28 -04:00
Sean Kaim
b693cb30fc Trim ConfigurationName 2018-07-28 13:03:27 -04:00
Sean Kaim
20377d4ff5 zip portable directly via powershell
Trying to fix appveyor artifact build
2018-07-28 13:03:16 -04:00
Sean Kaim
570d732b0e latest 7-zip 2018-07-28 13:03:00 -04:00
Sean Kaim
d9d2b1de70 code clean up (convert to expression body) 2018-07-28 13:02:36 -04:00
Sean Kaim
0a7eaaf36f minor code clean up 2018-07-28 13:02:25 -04:00
Sean Kaim
36dd3e496d minor code clean up 2018-07-28 13:02:14 -04:00
Sean Kaim
83fd914d7b code clean up 2018-07-28 13:01:41 -04:00
Sean Kaim
281c6b13fa minor code clean up
* No need to kick off the registry provider here (it's done already in PuttySessionsManager#StartWatcher())

* if (Directory.Exists(sessionsFolderPath)) thows an exception even though it should have just fallen through... but if (!Directory.Exists(sessionsFolderPath)) doesn't throw and logs a message with a graceful return????

IDK... I had a Uri.IsWellFormedUriString test in there to avoid the exception, but it seems unnecessary...
2018-07-28 13:01:06 -04:00
David Sparer
00b7b1221c fixes #1051 2018-07-28 09:03:57 -05:00
David Sparer
56cbf0ff3f fixes #1050 2018-07-28 07:52:57 -05:00
Sean Kaim
f852a4d341 minor code clean up 2018-07-27 17:02:51 -04:00
Sean Kaim
7c8c7d482a frmChoosePanel was not properly themed 2018-07-27 16:58:25 -04:00
Sean Kaim
9e95ae2cb0 code clean up 2018-07-27 16:45:38 -04:00
Sean Kaim
0d2d935f17 set default theme when themes disabled
Fixes #1039
Also some code clean up
2018-07-27 16:04:42 -04:00
Sean Kaim
eeb320a825 more clean up (use .ToString) 2018-07-27 14:50:44 -04:00
Sean Kaim
9452d4dbe3 Theme code clean up 2018-07-27 14:45:07 -04:00
Sean Kaim
03d2387cdd appveyor build for 1.76 branch 2018-07-27 14:44:35 -04:00
Sean Kaim
61b325ccb9 code clean up 2018-07-27 14:26:01 -04:00
Sean Kaim
e57de9a4de localized strings 2018-07-27 14:24:42 -04:00
Sean Kaim
a259ab9541 fix typo 2018-07-27 14:16:14 -04:00
Sean Kaim
96946f3a1e porting fix for #971 to 1.76 branch 2018-07-27 14:15:23 -04:00
Sean Kaim
08569276eb Revert "fixing changelog item"
This reverts commit edc4be2d44.
2018-07-27 14:11:43 -04:00
David Sparer
edc4be2d44 fixing changelog item 2018-07-27 07:49:00 -05:00
David Sparer
8cd6fb7ae2 updated changelog 2018-07-26 13:40:53 -05:00
David Sparer
a5afa90790 fixes #1045 2018-07-26 13:39:12 -05:00
David Sparer
f634eb8d37 created tests for the config window to ensure property grid items correctly display for certain object types 2018-07-26 13:38:53 -05:00
David Sparer
694b61a67b added a property to expose the list of object properties being shown by the property grid
this will help a lot with testing the property grid/config window
2018-07-26 09:12:47 -05:00
David Sparer
88f0d00a15 minor style cleanup 2018-07-26 08:55:55 -05:00
David Sparer
e31088fd2e ensure that quick connect items always have a panel set, even if the con default Panel setting is empty
related to #802
2018-07-25 14:39:23 -05:00
David Sparer
1d7bb63710 ensure ConDefaultPanel has a default value
related to #802
2018-07-25 14:21:44 -05:00
Sean Kaim
64422c60bb update changelog 2018-07-25 14:08:05 -04:00
Sean Kaim
a8b082ed4b fix test failures 2018-07-25 13:46:54 -04:00
Sean Kaim
5a5ade0d60 fix build failure 2018-07-25 13:10:39 -04:00
Sean Kaim
7e24e2dcfb fixes #971
Remove the "machineNode" XML node so that settings are portable to all systems
2018-07-25 13:02:30 -04:00
Sean Kaim
930579d983 PortableSettingsProvider code clean up 2018-07-25 12:35:53 -04:00
David Sparer
af1ed5349f updated changelog 2018-07-25 08:08:35 -05:00
David Sparer
9dcf71dc31 new connection tree nodes will survive filtering until they exit edit mode
resolves #1038
2018-07-25 08:05:48 -05:00
David Sparer
8bf9af0ed8 updated changelog 2018-07-24 14:49:33 -05:00
David Sparer
aecfad5871 only access first array item if array has any items
resolves #1036
2018-07-24 14:49:01 -05:00
David Sparer
3edd155898 updated changelog 2018-07-24 12:55:27 -05:00
David Sparer
2c419c0b2e minor cleanup 2018-07-24 12:54:34 -05:00
David Sparer
2fb67e7042 fixed issue where the connection context menu wasn't using translated strings
The ctor for the context menu was being called before we loaded the desired culture, leading to the use of the English default strings. Resolves #1034
2018-07-24 12:54:20 -05:00
David Sparer
82847f07b2 Merge branch 'release/v1.76' into develop 2018-07-23 13:22:39 -05:00
David Sparer
29483b2625 attached the file backup pruner to listen to connection file save events
resolves #1020
2018-07-23 12:53:03 -05:00
David Sparer
7fc59e79f3 bumped assembly version in preparation for next alpha release 2018-07-23 12:03:53 -05:00
David Sparer
79b3e21148 updated changelog 2018-07-23 12:02:09 -05:00
David Sparer
ee91117010 renamed function to be a bit more accurate 2018-07-23 11:54:49 -05:00
David Sparer
0548037ff3 added a few method summaries 2018-07-23 11:53:50 -05:00
David Sparer
46002632bb removed duplicate code 2018-07-23 11:52:38 -05:00
David Sparer
9659ac1611 added a dialog to prompt for action when decrypting a connection file fails 2018-07-23 11:51:58 -05:00
David Sparer
bbc497e68d added some quality of life methods to Optional 2018-07-23 08:03:03 -05:00
David Sparer
d7ec7574ad updated changelog 2018-07-20 14:54:42 -05:00
David Sparer
2f476d9e61 fix a null ref exception when importing from port scan without selecting a tree node. resolves #1030 2018-07-20 14:52:12 -05:00
David Sparer
c74f37f0de confirmer should return false if deletion target is null. found during regression testing 2018-07-20 12:31:59 -05:00
David Sparer
d27a62cbfc added some extra null checks in the rdcman importer 2018-07-20 07:26:38 -05:00
David Sparer
8029e491a3 Merge branch 'auto_save_during_sort' into release/v1.76 2018-07-18 14:53:26 -05:00
David Sparer
fe56268421 added a simple system to batch saves in the connection service 2018-07-18 14:53:02 -05:00
David Sparer
2db6fabbe9 reverted 3bdcf65 2018-07-18 14:52:12 -05:00
David Sparer
035e89801a reduce FrmMain minimum size to prevent issues with other system features. resolves #1024 2018-07-17 08:07:10 -05:00
Sean Kaim
a7280da30c Solution config was building wrong projects 2018-07-07 14:10:18 -04:00
Sean Kaim
ac2920820d the post publish job in the appveyor.yaml in ps1 form 2018-07-03 17:04:11 -04:00
Sean Kaim
fcecc4b31e post build zip artifact test 2018-07-03 14:24:12 -04:00
Sean Kaim
4abef50ca0 appveyor post build tests 2018-07-03 13:38:22 -04:00
Sean Kaim
5e16445b08 testing post build appveyor script 2018-07-03 13:11:10 -04:00
Sean Kaim
be593b8185 don't run post build zip in appveyor 2018-07-03 13:10:52 -04:00
Sean Kaim
ca27cb9981 Trim ConfigurationName 2018-07-03 12:34:20 -04:00
Sean Kaim
5b64e629c9 zip portable directly via powershell
Trying to fix appveyor artifact build
2018-07-03 11:59:02 -04:00
Sean Kaim
18640826b6 latest 7-zip 2018-07-03 11:48:26 -04:00
Sean Kaim
e4d3239831 appveyor build installer 2018-07-02 17:34:08 -04:00
Sean Kaim
e834eadbe1 appveyor artifacts test 2018-07-02 17:03:23 -04:00
Sean Kaim
0ec8f66972 Revert "test appveyor artifacts"
This reverts commit 458c462f49.
2018-07-02 15:31:17 -04:00
Sean Kaim
28b49aab70 fix quotes 2018-07-02 15:29:27 -04:00
Sean Kaim
458c462f49 test appveyor artifacts 2018-07-02 15:29:05 -04:00
Sean Kaim
6f6e2a1254 code clean up (convert to expression body) 2018-07-02 15:12:01 -04:00
Sean Kaim
f46a3d69e1 minor code clean up 2018-07-02 14:57:10 -04:00
Sean Kaim
fa787ed082 minor code clean up 2018-07-02 14:34:22 -04:00
wwj402
b5b748f993 Chinese simplified language update for latest commit 05c96da 2018-07-02 11:02:48 +08:00
David Sparer
3bdcf655fd suspend tree model events during sort, since this can produce a lot of changes 2018-06-25 15:15:46 -05:00
David Sparer
284755f298 fix tab ordering on port scan page 2018-06-23 09:03:25 -05:00
David Sparer
ad5eed96e7 fixed visual bug when filtering connection tree. resolves #993 2018-06-22 15:09:53 -05:00
David Sparer
431c830ea0 resize connection tree column width when calling expand all. related to #993 2018-06-22 13:56:22 -05:00
David Sparer
da047427a5 fix test 2018-06-21 20:33:32 -05:00
David Sparer
69da1dca5f added some tests of the connection tree duplicate function. related to #1004 2018-06-21 18:04:29 -05:00
David Sparer
cc61501f63 dont attempt to delete selected node if it is not a valid deletion target. resolves #1004 2018-06-21 17:35:42 -05:00
David Sparer
4ced2d3392 accidentally put a few changelog items under the wrong version 2018-06-21 16:51:41 -05:00
David Sparer
7c72bfdf6b connection tree now removes filtering when 'use filtering' option turned off. resolves #1002 2018-06-21 15:33:43 -05:00
David Sparer
b8878e1458 updated changelog 2018-06-21 08:35:29 -05:00
David Sparer
abd40cec1b removed duplicate disable/enable shortcut calls that was causing an issue. resolves #1001 2018-06-21 08:34:26 -05:00
David Sparer
cc18da4f28 updated changelog 2018-06-20 16:43:24 -05:00
David Sparer
1a39039162 reenable all hotkeys once file menu closes. Resolves #999 2018-06-20 16:42:58 -05:00
David Sparer
cf9dd72ea5 dont allow folder/connections to be added to the putty root node in connection tree. Resolves #998 2018-06-20 16:25:08 -05:00
David Sparer
b7cdf81665 ensure putty root node returns correct tree node type. Related to #998 2018-06-20 16:20:51 -05:00
David Sparer
8497a05fd1 resolves #991
fixed bug when deleting connection tree node when in filtered view
2018-06-13 14:34:05 -05:00
David Sparer
7db4eec45c fixed bug where the export screen was using new credential manager code that shouldn't be active yet 2018-06-03 10:45:29 -05:00
David Sparer
cd822b545a random stuff the ui designer regenerated 2018-06-03 10:45:06 -05:00
David Sparer
e872581d3c updated changelog 2018-06-03 09:50:42 -05:00
David Sparer
defe9e094c made opening an empty panel on startup configurable in options 2018-05-31 06:26:43 -05:00
David Sparer
5662735cb8 bumped assembly version for next pre-release 2018-05-25 18:01:32 -05:00
David Sparer
05c96da98f Merge branch 'release/v1.76' into develop 2018-05-20 11:08:14 -05:00
David Sparer
8646dce21b update jenkins build to use newest msbuild (enables c# 7 lang features) 2018-05-20 11:07:43 -05:00
David Sparer
ea53fc190b Merge branch 'release/v1.76' into develop 2018-05-20 09:08:41 -05:00
David Sparer
99a3eabbaf updated changelog 2018-05-19 17:00:57 -05:00
David Sparer
c57bd386f2 dont try to connect to folders in quick connect menu. resolves #924 2018-05-19 16:57:34 -05:00
David Sparer
f2a52b03df menu bar can be moved when "lock toolbar position" is turned off. closes #902 2018-05-19 12:57:29 -05:00
David Sparer
860e1ccfaa fix a mismerged language item 2018-05-18 21:33:16 -05:00
David Sparer
49967b38d4 update changelog 2018-05-18 21:32:51 -05:00
David Sparer
36038fff6d fix minor code typo 2018-05-18 20:52:17 -05:00
David Sparer
c5958954b0 apply language later in app startup 2018-05-18 20:45:27 -05:00
David Sparer
d0d63016ca Merge branch 'pr_948_target' into release/v1.76
# Conflicts:
#	mRemoteV1/Resources/Language/Language.resx
#	mRemoteV1/UI/Forms/frmMain.Designer.cs
#	mRemoteV1/UI/Menu/ViewMenu.cs
2018-05-18 20:04:23 -05:00
David Sparer
35f2484adf Merge pull request #948 from farosch/translation
some changes regarding tranlsation
2018-05-18 18:41:06 -05:00
Sean Kaim
662b5bde31 code clean up 2018-05-16 22:58:12 -04:00
Sean Kaim
388a4ed75b minor code clean up
* No need to kick off the registry provider here (it's done already in PuttySessionsManager#StartWatcher())

* if (Directory.Exists(sessionsFolderPath)) thows an exception even though it should have just fallen through... but if (!Directory.Exists(sessionsFolderPath)) doesn't throw and logs a message with a graceful return????

IDK... I had a Uri.IsWellFormedUriString test in there to avoid the exception, but it seems unnecessary...
2018-05-16 21:55:24 -04:00
David Sparer
c2cf496ded updated changelog and credits 2018-04-29 12:00:08 -05:00
David Sparer
8a172f02a9 updated changelog and credits for #942 2018-04-19 08:08:44 -05:00
David Sparer
f27935ea61 Merge pull request #942 from sli-pro/develop
Made several strings translatable and added Russian translations
2018-04-19 07:58:16 -05:00
Cristian Abelleira Olañeta
5311b522b7 Added InheritRedirectClipboard to CsvSerializer 2018-04-18 18:07:52 +02:00
Cristian Abelleira Olañeta
ea682e218d Fixed multiple errors in implementation 2018-04-15 20:13:28 +02:00
Cristian Abelleira Olañeta
aa5f7ef2a8 Implemented clipboard sharing setting for RDP protocol 2018-04-15 10:41:39 +02:00
Faryan Rezagholi
043df0aec3 fixed wording 2018-04-14 11:56:01 +02:00
Faryan Rezagholi
63a2e18760 added missing items 2018-04-14 11:56:01 +02:00
Faryan Rezagholi
c3ced7ed03 fix: translations of main file menu items were not loaded 2018-04-14 11:56:01 +02:00
Faryan Rezagholi
f597e14b3d fix group box was not translatable 2018-04-14 11:56:01 +02:00
Faryan Rezagholi
aff4ba9115 fix: set labels dock mode to fill (wasnt displaying longer translated texts) 2018-04-14 11:56:01 +02:00
Faryan Rezagholi
554e0805e3 fix: title of options page was not translatable 2018-04-14 11:56:01 +02:00
Faryan Rezagholi
f4efa74a23 Added missing translation options in viewMenu.cs 2018-04-14 11:56:01 +02:00
Vladimir Semenov
ddc19587fa Edited and added a translation of the Russian language in the forms
- File/import
- File/Import from AD
- File/Export to File
- View/Lock Toolbar position
- View/Mylti SSH toolbar
- Tools/Options/Additionally
Related to question #940.
2018-04-10 13:41:34 +03:00
Vladimir Semenov
5f1232727e Edit and add a translation on the external tools form.
Added and corrected Russian and English translations in the external tools tab.
Adjusted the placement of components on the external tools form so that the text does not overlap during translation.
Related to question #940.
2018-04-10 09:58:59 +03:00
David Sparer
9c373e8f0a Merge pull request #938 from sli-pro/develop
Small visual correction of the forms
2018-04-07 11:25:55 -05:00
David Sparer
83942d788f Merge branch '916_default_properties_not_saving' into develop 2018-04-06 15:05:35 -05:00
David Sparer
73d6fec6f3 updated changelog 2018-04-06 15:05:00 -05:00
David Sparer
a37b5deaa1 finished updating some tests for default inheritance 2018-04-06 15:02:14 -05:00
Vladimir Semenov
3b9de847e7 Small visual correction of the forms
- for the main form set the minimum resolution 1140; 603.
- for the form of port scans, done visual editing of components.
2018-04-06 20:59:15 +03:00
David Sparer
924f1f1e48 improved tests for default connection info 2018-04-05 16:37:22 -05:00
David Sparer
7bdebbe25b Merge pull request #936 from sli-pro/develop
Update Language ru
2018-04-05 15:16:31 -05:00
David Sparer
8f46c25dc9 Merge pull request #935 from marcomsousa/develop
Update Language es
2018-04-05 15:15:04 -05:00
Vladimir Semenov
8bb4a03639 Update Language ru
Fix typos in Russian language
2018-04-05 18:51:47 +03:00
Marco Sousa
7b5bc5e057 Update Language es 2018-04-05 12:39:02 +02:00
Aleksei Reytsman
2c62218fd6 Add context menu items to close other and other to the right tabs 2018-03-28 18:21:47 +03:00
David Sparer
35582a5e6a fixed bug with saving and loading default connection info data
updated tests to better cover this feature. related to #916
2018-03-22 16:54:50 -05:00
David Sparer
20340fd31f Merge pull request #913 from mRemoteNG/github-templates
Update .github templates
2018-03-22 07:44:10 -05:00
David Sparer
d6d7664b48 update readme shield 2018-03-14 19:30:25 -05:00
Bennett Blodinger
e5a34388ae Update .github templates
Bumping up the quality of the templates with help from https://www.talater.com/open-source-templates
2018-03-09 09:46:03 -05:00
1531 changed files with 108006 additions and 89032 deletions

View File

@@ -1,58 +0,0 @@
# Welcome!
We are really glad you are interested in contributing to mRemoteNG!
Open source software is best when shared with others. This also applies to the work that goes into the software. Your ideas and passion are what make this software great.
### Ways you can contribute
There are many ways that you can help improve mRemoteNG, even if you don't know how to program.
For example, you might:
- add documentation or "how-to" articles on the [Wiki](https://github.com/mRemoteNG/mRemoteNG/wiki)
- answer support questions on the [forum](http://forum.mremoteng.org)
- [add or improve a translation](https://github.com/mRemoteNG/mRemoteNG/wiki/How-to-Help-Translating-mRemoteNG)
- submit a [pull request](https://github.com/mRemoteNG/mRemoteNG/pulls) for a [bug or feature ticket](https://github.com/mRemoteNG/mRemoteNG/issues)
# Submitting GitHub Issues
The GitHub Issue tracker is our preferred channel for bug reports and feature requests.
- For questions or general discussion, please use [our public Gitter chat](https://gitter.im/mRemoteNG/PublicChat) or the [forum](http://forum.mremoteng.org).
- If you find a security vulnerability, do **NOT** open an issue. Email support@mremoteng.org instead.
### Bug reports
A bug is any behavior that does not consistently produce the expected result.
Guidelines for bug reports:
1. Do not open bug reports for questions.
1. Use the GitHub Issue search to make sure your bug hasn't already been reported.
1. Include as much detailed information as possible. We've included a default template when opening an issue to make this easier.
### Feature requests
Feature requests are great! Take some time to compose a well thought out proposal. It's up to you to convince the project maintainers that your feature is a good idea. To ensure your request receives the consideration that it deserves, include as much detail as possible. For example:
- What is the purpose of the new feature?
- What situation led you to want this feature?
- How does the application perform now and how would the new feature change this?
- If applicable, consider including visual mock-ups to show us what you mean.
# Pull requests
Good pull requests are a huge help! If you haven't already, please consider reading [GitHub's guide to contributing to open source](https://guides.github.com/activities/contributing-to-open-source/)
Our requests when it comes to pull requests:
- Be clear about what your PR seeks to do.
- Keep your PR focused. It should be clear what code changed to achieve your stated goal.
- Add or update tests when possible. Some of the code base is still very hard to effectively test. If you can, please try to create or update tests that relate to your PR.
- Please talk with one of the project maintainers before starting work on large pull requests. Otherwise, you run the risk of putting a lot of time into a feature or refactor that gets denied.
- If you have access to Static Code Analysis tools (like ReSharper), please don't analyze/fix everything in one giant PR. As great as these tools are, they can sometimes cause unintended problems.
# Code Style
- Please make use of simple types and var where possible
- Prefer "using" over .Dispose()
- Avoid nesting "using"
# Your first contributions
Want to help but don't know where to start? Check out the issues that we've labeled with [`Help Wanted`](https://github.com/mRemoteNG/mRemoteNG/issues?q=is%3Aissue+is%3Aopen+label%3A%22Help+Wanted%22) or [`ready`](https://github.com/mRemoteNG/mRemoteNG/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20label%3A%22ready%22). These will vary in difficulty, but should be possible for new contributors.
Want to help but don't know C#? Check out the issues that we've labeled with [`Documentation`](https://github.com/mRemoteNG/mRemoteNG/labels/Documentation).
Sorry, we currently do not have any tags for truly beginner-friendly issues :(

View File

@@ -1,16 +0,0 @@
<!--
Only file GitHub issues for bugs and feature requests. All other topics will be closed.
Before opening an issue, please search for a duplicate or closed issue.
Please provide as much detail as possible for us to fix your issue.
-->
<!-- Bug -->
|Detail|Value|
|--:|---|
|Operating system | Windows 10 x64 |
|mRemoteNG version| 1.75.7008 |
<!-- Feature Request -->
<!-- If you file a feature request, please delete the bug section -->

View File

@@ -1,4 +0,0 @@
<!--
Please provide as much detail as possible with what your pull request does.
Include a reference to a filed issue if it exists.
-->

5
.gitignore vendored
View File

@@ -283,9 +283,6 @@ Installer Projects/Installer/Fragments/HelpFilesFragment.wxs
InstallerProjects/Installer/Fragments/FilesFragment.wxs
InstallerProjects/Installer/Resources/License.rtf
# user preference: .editorconfig - http://editorconfig.org/
.editorconfig
# gh-pages info
runlocal.bat
/_site
/_site

14
.readthedocs.yaml Normal file
View File

@@ -0,0 +1,14 @@
# .readthedocs.yaml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Build documentation in the docs/ directory with Sphinx
sphinx:
configuration: mRemoteNGDocumentation/conf.py
# Optionally build your docs in additional formats such as PDF
formats:
- pdf

File diff suppressed because it is too large Load Diff

1635
CHANGELOG.md Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,140 +0,0 @@
Contributors
============
Current mRemoteNG dev team:
David Sparer (github.com/sparerd)
Sean Kaim (github.com/kmscode)
Thanks for the awesome new website!
Bennett Blodinger (github.com/benwa)
Joe Cefoli (github.com/jcefoli)
countchappy (github.com/countchappy)
Tony Lambert
Julien Roncaglia (github.com/vbfox)
github.com/peterchenadded
Brandon Wulf (github.com/mrwulf)
Pedro Rodrigues (github.com/pedro2555)
github.com/dekelMP
github.com/farosch
Bruce (github.com/brucetp)
Camilo Alvarez (github.com/jotatsu)
github.com/DamianBis
github.com/pfjason
github.com/sirLoaf
github.com/Fyers
Past Contributors
=================
Felix Deimel - mRemote original developer
Riley McArdle - mRemoteNG original developer
Hayato Iriumi (github.com/hiriumi)
Jason Barbier
Wiktor Beryt
Lionel Caignec
Ruben d'Arco
Holger Henke
Tom Hiller
Apisitt Rattana
Andreas Rehm
David Vidmar
github.com/Brandhor
github.com/Kvarkas
Translators
===========
Eugenio "Ryo567" Mart<72>nez
Mathieu Pape
Emanuel Silva
Robert Siwiec
Hayato Iriumi
Sebastien Thieury (github.com/SebThieu)
Riza Emet
Lukas Plachy (github.com/rheingold)
Gyuha Shin
Stefan (github.com/polluks)
github.com/emazv72
Included Source Code
====================
Command Line Arguments Parser
Copyright <20> 2002 Richard Lopes
MIT License
http://www.codeproject.com/KB/recipes/command_line.aspx
FilteredPropertyGrid
Copyright <20> 2006 Azuria
http://www.codeproject.com/KB/cs/FilteredPropertyGrid.aspx
InputBox
Copyright <20> 2016 Jan Slama
http://www.csharp-examples.net/inputbox/
IP TextBox
Copyright <20> 2005 mawnkay
http://www.codeproject.com/Articles/11576/IP-TextBox
PortableSettingsProvider
Copyright <20> 2014 crdx
https://github.com/crdx/PortableSettingsProvider
Included Components
===================
ADTree
Copyright <20> 2004 Marc Merritt
Copyright <20> 2008 Felix Deimel
http://www.codeproject.com/KB/selection/ADPickerCtrl.aspx
DockPanel Suite
Copyright <20> 2016 @roken and @lextm (formerly Weifen Luo)
MIT License
https://github.com/dockpanelsuite/dockpanelsuite
GeckoFX
Copyright <20> 2016 Tom Hindle
Mozilla Public License
https://bitbucket.org/geckofx/
log4net
Copyright <20> 2001-2015 The Apache Software Foundation
Apache License Version 2.0
http://logging.apache.org/log4net/
Magic Library
Copyright <20> 2002-2003 Crownwood Consulting, Ltd.
Freely redistributable with attribution
http://www.dotnetmagic.com/magic_download.html
PuTTY
Copyright <20> 1997-2017 Simon Tatham
MIT License
http://www.chiark.greenend.org.uk/~sgtatham/putty/
Silk Icon Set
Copyright <20> 2005-2008 FAMFAMFAM
Creative Commons Attribution 2.5 License
http://www.famfamfam.com/
SSH.NET
Copyright <20> 2016
MIT License
https://github.com/sshnet/SSH.NET
VncSharp
Copyright <20> 2004-2009 David Humphrey
GNU General Public License (GPL) Version 2
https://github.com/humphd/VncSharp
ObjectListView
Copyright <20> 2006-2016 Phillip Piper
GNU General Public License (GPL) Version 3
https://sourceforge.net/projects/objectlistview/

123
CREDITS.md Normal file
View File

@@ -0,0 +1,123 @@
# Contributors
## Current mRemoteNG dev team
[David Sparer](http://github.com/sparerd)
[Sean Kaim](http://github.com/kmscode)
[Faryan Rezagholi](http://github.com/farosch)
[Bennett Blodinger](http://github.com/benwa)
[Joe Cefoli](http://github.com/jcefoli)
[countchappy](http://github.com/countchappy)
Tony Lambert
[Julien Roncaglia](http://github.com/vbfox)
[peterchenadded](http://github.com/peterchenadded)
[Brandon Wulf](http://github.com/mrwulf)
[Pedro Rodrigues](http://github.com/pedro2555)
[dekelMP](http://github.com/dekelMP)
[Bruce](http://github.com/brucetp)
[Camilo Alvarez](http://github.com/jotatsu)
[DamianBis](http://github.com/DamianBis)
[pfjason](http://github.com/pfjason)
[sirLoaf](http://github.com/sirLoaf)
[Fyers](http://github.com/Fyers)
[Vladimir Semenov](http://github.com/sli-pro)
[Stephan](http://github.com/st-schuler)
[Aleksey Reytsman](http://github.com/areytsman)
[Cristian Abelleira](http://github.com/CrAbelleira)
[MitchellBot](http://github.com/MitchellBot)
[Filippo Ferrazini](http://github.com/Filippo125)
## Past Contributors
Felix Deimel - mRemote original developer
Riley McArdle - mRemoteNG original developer
[Hayato Iriumi](http://github.com/hiriumi)
Jason Barbier
Wiktor Beryt
Lionel Caignec
Ruben d'Arco
Holger Henke
Tom Hiller
Apisitt Rattana
Andreas Rehm
David Vidmar
[Brandhor](http://github.com/Brandhor)
[Dimitrij](http://github.com/Kvarkas)
## Translators
Eugenio "Ryo567" Martínez
Mathieu Pape
Emanuel Silva
Robert Siwiec
Hayato Iriumi
[Sebastien Thieury](http://github.com/SebThieu)
Riza Emet
[Lukas Plachy](http://github.com/rheingold)
Gyuha Shin
[Stefan](http://github.com/polluks)
[emazv72](http://github.com/emazv72)
[Vladimir Semenov](http://github.com/sli-pro)
[Marco Sousa](http://github.com/marcomsousa)
[wwj402](http://github.com/wwj402)
[Fyers](http://github.com/Fyers)
[pablomh](http://github.com/pablomh)
[Damian Szczepanik](http://github.com/damianszczepanik)
[Mant1kor](http://github.com/Mant1kor)
# Included Source Code
**[Command Line Arguments Parser](http://www.codeproject.com/KB/recipes/command_line.aspx)**
Copyright © 2002 Richard Lopes
MIT License
**[FilteredPropertyGrid](http://www.codeproject.com/KB/cs/FilteredPropertyGrid.aspx)**
Copyright © 2006 Azuria
**[InputBox](http://www.csharp-examples.net/inputbox/)**
Copyright © 2016 Jan Slama
**[IP TextBox](http://www.codeproject.com/Articles/11576/IP-TextBox)**
Copyright © 2005 mawnkay
**[PortableSettingsProvider](https://github.com/crdx/PortableSettingsProvider)**
Copyright © 2014 crdx
**[ADTree](http://www.codeproject.com/KB/selection/ADPickerCtrl.aspx)**
Copyright © 2004 Marc Merritt © 2008 Felix Deimel
# Included Components
**[DockPanel Suite](https://github.com/dockpanelsuite/dockpanelsuite)**
Copyright © 2018 @roken and @lextm (formerly Weifen Luo)
MIT License
**[log4net](http://logging.apache.org/log4net/)**
Copyright © 2001-2015 The Apache Software Foundation
Apache License Version 2.0
**[PuTTY](http://www.chiark.greenend.org.uk/~sgtatham/putty/)**
Copyright © 1997-2017 Simon Tatham
MIT License
**[Silk Icon Set](http://www.famfamfam.com/)**
Copyright © 2005-2008 FAMFAMFAM
Creative Commons Attribution 2.5 License
**[SSH.NET](https://github.com/sshnet/SSH.NET)**
Copyright © 2016
MIT License
**[VncSharp](https://github.com/humphd/VncSharp) (Archived)**
Copyright © 2004-2009 David Humphrey
GNU General Public License (GPL) Version 2
**[ObjectListView](https://sourceforge.net/projects/objectlistview/)**
Copyright © 2006-2016 Phillip Piper
GNU General Public License (GPL) Version 3
**[ConsoleControl](https://github.com/dwmkerr/consolecontrol)**
Copyright © 2015 Dave Kerr
MIT License

View File

@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<ComponentGroup Id="CG.ProjectInfoFiles" Directory="INSTALLDIR">
<Component Id="C.Changelog" Guid="*">
<File Id="ChangelogFile" Name="Changelog.txt" Source="$(var.SolutionDir)CHANGELOG.TXT" KeyPath="yes" />
</Component>
<Component Id="C.Credits" Guid="*">
<File Id="CreditsFile" Name="Credits.txt" Source="$(var.SolutionDir)CREDITS.TXT" KeyPath="yes" />
</Component>
<Component Id="C.License" Guid="*">
<File Id="LicenseFile" Name="License.txt" Source="$(var.SolutionDir)COPYING.TXT" KeyPath="yes" />
</Component>
<Component Id="C.Readme" Guid="*">
<File Id="ReadmeFile" Name="Readme.txt" Source="$(var.SolutionDir)README.TXT" KeyPath="yes" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="cs-CZ" Language="1029" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<!-- Install Conditions -->
<String Id="Upgrade_NewerVersionInstalled" Overridable="yes">A newer version of [ProductName] is already installed.</String>
<String Id="Install_NeedToBeAdminToInstall">You need to be an administrator to install this product.</String>
<String Id="Install_NeedDotNetFrameworkVersion">mRemoteNG requires Microsoft .NET Framework $(var.RequiredDotNetFrameworkVersion).</String>
<String Id="Install_OSVersionRequirement">mRemoteNG requires Windows 7 SP1 or higher to run. Please update your operating system and try again.</String>
<String Id="Install_RDP80Requirement">mRemoteNG requires RDP 8.0 or higher to run. Windows 7 users will need to install KB2592687</String>
<String Id="Install_Win7RequiresSP1">For mRemoteNG to run on Windows 7, it requires Service Pack 1 to be installed. Please install Service Pack 1 and try again.</String>
<!-- Directories and File names -->
<String Id="Folders_Desktop">Desktop</String>
<String Id="File_Credits">Credits</String>
<String Id="File_License">License</String>
<String Id="File_VersionHistory">Version History</String>
<!-- Features and install options -->
<String Id="Feature_Complete">Complete</String>
<String Id="Feature_DesktopShortcut">Desktop Shortcut</String>
<String Id="Feature_StartMenuShortcut">Start menu shortcut</String>
<!-- GUI Page Text -->
<String Id="FinishPage_LaunchMremoteNow" Overridable="yes">Launch [ProductName] Now</String>
</WixLocalization>

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="de-DE" Language="1031" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<!-- Install Conditions -->
<String Id="Upgrade_NewerVersionInstalled" Overridable="yes">A newer version of [ProductName] is already installed.</String>
<String Id="Install_NeedToBeAdminToInstall">You need to be an administrator to install this product.</String>
<String Id="Install_NeedDotNetFrameworkVersion">mRemoteNG requires Microsoft .NET Framework $(var.RequiredDotNetFrameworkVersion).</String>
<String Id="Install_OSVersionRequirement">mRemoteNG requires Windows 7 SP1 or higher to run. Please update your operating system and try again.</String>
<String Id="Install_RDP80Requirement">mRemoteNG requires RDP 8.0 or higher to run. Windows 7 users will need to install KB2592687</String>
<String Id="Install_Win7RequiresSP1">For mRemoteNG to run on Windows 7, it requires Service Pack 1 to be installed. Please install Service Pack 1 and try again.</String>
<!-- Directories and File names -->
<String Id="Folders_Desktop">Desktop</String>
<String Id="File_Credits">Credits</String>
<String Id="File_License">License</String>
<String Id="File_VersionHistory">Version History</String>
<!-- Features and install options -->
<String Id="Feature_Complete">Complete</String>
<String Id="Feature_DesktopShortcut">Desktop Shortcut</String>
<String Id="Feature_StartMenuShortcut">Start menu shortcut</String>
<!-- GUI Page Text -->
<String Id="FinishPage_LaunchMremoteNow" Overridable="yes">mRemoteNG jetzt Starten</String>
</WixLocalization>

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="ja-JP" Language="1041" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<!-- Install Conditions -->
<String Id="Upgrade_NewerVersionInstalled" Overridable="yes">A newer version of [ProductName] is already installed.</String>
<String Id="Install_NeedToBeAdminToInstall">You need to be an administrator to install this product.</String>
<String Id="Install_NeedDotNetFrameworkVersion">mRemoteNG requires Microsoft .NET Framework $(var.RequiredDotNetFrameworkVersion).</String>
<String Id="Install_OSVersionRequirement">mRemoteNG requires Windows 7 SP1 or higher to run. Please update your operating system and try again.</String>
<String Id="Install_RDP80Requirement">mRemoteNG requires RDP 8.0 or higher to run. Windows 7 users will need to install KB2592687</String>
<String Id="Install_Win7RequiresSP1">For mRemoteNG to run on Windows 7, it requires Service Pack 1 to be installed. Please install Service Pack 1 and try again.</String>
<!-- Directories and File names -->
<String Id="Folders_Desktop">Desktop</String>
<String Id="File_Credits">Credits</String>
<String Id="File_License">License</String>
<String Id="File_VersionHistory">Version History</String>
<!-- Features and install options -->
<String Id="Feature_Complete">Complete</String>
<String Id="Feature_DesktopShortcut">Desktop Shortcut</String>
<String Id="Feature_StartMenuShortcut">Start menu shortcut</String>
<!-- GUI Page Text -->
<String Id="FinishPage_LaunchMremoteNow" Overridable="yes">Launch [ProductName] Now</String>
</WixLocalization>

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="ru-RU" Language="1049" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<!-- Install Conditions -->
<String Id="Upgrade_NewerVersionInstalled" Overridable="yes">A newer version of [ProductName] is already installed.</String>
<String Id="Install_NeedToBeAdminToInstall">You need to be an administrator to install this product.</String>
<String Id="Install_NeedDotNetFrameworkVersion">mRemoteNG requires Microsoft .NET Framework $(var.RequiredDotNetFrameworkVersion).</String>
<String Id="Install_OSVersionRequirement">mRemoteNG requires Windows 7 SP1 or higher to run. Please update your operating system and try again.</String>
<String Id="Install_RDP80Requirement">mRemoteNG requires RDP 8.0 or higher to run. Windows 7 users will need to install KB2592687</String>
<String Id="Install_Win7RequiresSP1">For mRemoteNG to run on Windows 7, it requires Service Pack 1 to be installed. Please install Service Pack 1 and try again.</String>
<!-- Directories and File names -->
<String Id="Folders_Desktop">Desktop</String>
<String Id="File_Credits">Credits</String>
<String Id="File_License">License</String>
<String Id="File_VersionHistory">Version History</String>
<!-- Features and install options -->
<String Id="Feature_Complete">Complete</String>
<String Id="Feature_DesktopShortcut">Desktop Shortcut</String>
<String Id="Feature_StartMenuShortcut">Start menu shortcut</String>
<!-- GUI Page Text -->
<String Id="FinishPage_LaunchMremoteNow" Overridable="yes">Launch [ProductName] Now</String>
</WixLocalization>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 451 KiB

63
Jenkinsfile vendored
View File

@@ -1,63 +0,0 @@
node('windows') {
def jobDir = pwd()
def solutionFilePath = "\"${jobDir}\\mRemoteV1.sln\""
def vsToolsDir = "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools"
def vsExtensionsDir = "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\IDE\\CommonExtensions\\Microsoft\\TestWindow"
def nunitConsolePath = "${jobDir}\\packages\\NUnit.ConsoleRunner.3.7.0\\tools\\nunit3-console.exe"
def openCoverPath = "${jobDir}\\packages\\OpenCover.4.6.519\\tools\\OpenCover.Console.exe"
def reportGeneratorPath = "${jobDir}\\packages\\ReportGenerator.3.0.2\\tools\\ReportGenerator.exe"
def testResultFilePrefix = "TestResult"
def testResultFileNormal = "${testResultFilePrefix}_UnitTests_normal.xml"
def testResultFilePortable = "${testResultFilePrefix}_UnitTests_portable.xml"
def testResultFileAcceptance = "${testResultFilePrefix}_AcceptanceTests.xml"
def coverageReport = "code_coverage_report.xml"
def codeCoverageHtml = "CodeCoverageReport.html"
stage ('Checkout Branch') {
checkout scm
bat "del /Q \"${jobDir}\\${testResultFilePrefix}*.xml\""
}
stage ('Restore NuGet Packages') {
def nugetPath = "C:\\nuget.exe"
bat "${nugetPath} restore ${solutionFilePath}"
}
stage ('Build mRemoteNG (Normal)') {
bat "\"${vsToolsDir}\\VsDevCmd.bat\" && msbuild.exe /nologo /p:Platform=x86 \"${jobDir}\\mRemoteV1.sln\""
}
stage ('Build mRemoteNG (Portable)') {
bat "\"${vsToolsDir}\\VsDevCmd.bat\" && msbuild.exe /nologo /p:Configuration=\"Debug Portable\";Platform=x86 \"${jobDir}\\mRemoteV1.sln\""
}
stage ('Run Unit Tests (Normal, w/coverage)') {
try {
bat "\"${openCoverPath}\" -register:user -target:\"${nunitConsolePath}\" -targetargs:\"\"${jobDir}\\mRemoteNGTests\\bin\\debug\\mRemoteNGTests.dll\" --result=${testResultFileNormal} --x86\" -output:\"${coverageReport}\""
}
catch (ex) {
nunit testResultsPattern: "${testResultFilePrefix}*.xml"
throw ex
}
}
stage ('Run Unit Tests (Portable)') {
try {
bat "\"${nunitConsolePath}\" \"${jobDir}\\mRemoteNGTests\\bin\\debug portable\\mRemoteNGTests.dll\" --result=${testResultFilePortable} --x86"
}
catch (ex) {
nunit testResultsPattern: "${testResultFilePrefix}*.xml"
throw ex
}
}
stage ('Run Acceptance Tests') {
try {
bat "\"${nunitConsolePath}\" \"${jobDir}\\mRemoteNG.Specs\\bin\\debug\\mRemoteNG.Specs.dll\" --result=${testResultFileAcceptance} --x86"
}
catch (ex) {
nunit testResultsPattern: "${testResultFilePrefix}*.xml"
throw ex
}
}
}

View File

@@ -1,68 +0,0 @@
node('windows') {
def jobDir = pwd()
def solutionFilePath = "\"${jobDir}\\mRemoteV1.sln\""
def vsToolsDir = "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools"
def vsExtensionsDir = "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\IDE\\CommonExtensions\\Microsoft\\TestWindow"
def nunitTestAdapterPath = "C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\VisualStudio\\14.0\\Extensions"
stage ('Clean output dir') {
bat script: "rmdir /S /Q \"${jobDir}\\Release\" 2>nul", returnStatus: true
}
stage ('Checkout Branch') {
checkout([
$class: 'GitSCM',
branches: [[name: '*/${TargetBranch}']],
doGenerateSubmoduleConfigurations: false,
extensions: [],
submoduleCfg: [],
userRemoteConfigs: [[
credentialsId: '9c3fbff4-5b90-402f-a298-00e607fcec87',
url: 'https://github.com/mRemoteNG/mRemoteNG.git'
]]
])
}
stage ('Restore NuGet Packages') {
def nugetPath = "C:\\nuget.exe"
bat "${nugetPath} restore ${solutionFilePath}"
}
withCredentials([file(credentialsId: '9b674d57-6792-48e3-984a-4d1bab2abb64', variable: 'CODE_SIGNING_CERT')]) {
withCredentials([usernamePassword(credentialsId: '05b7449b-05c0-490f-8661-236242526e62', passwordVariable: 'MRNG_CERT_PASSWORD', usernameVariable: 'NO_USERNAME')]) {
stage ('Build mRemoteNG (Normal - MSI)') {
bat "\"${vsToolsDir}\\VsDevCmd.bat\" && msbuild.exe /nologo /t:Clean,Build /p:Configuration=\"Release Installer\" /p:Platform=x86 /p:CertPath=\"${env.CODE_SIGNING_CERT}\" /p:CertPassword=${env.MRNG_CERT_PASSWORD} \"${jobDir}\\mRemoteV1.sln\""
archiveArtifacts artifacts: "Release\\*.msi", caseSensitive: false, onlyIfSuccessful: true, fingerprint: true
}
stage ('Build mRemoteNG (Portable)') {
bat "\"${vsToolsDir}\\VsDevCmd.bat\" && msbuild.exe /nologo /t:Clean,Build /p:Configuration=\"Release Portable\" /p:Platform=x86 /p:CertPath=\"${env.CODE_SIGNING_CERT}\" /p:CertPassword=${env.MRNG_CERT_PASSWORD} \"${jobDir}\\mRemoteV1.sln\""
archiveArtifacts artifacts: "Release\\*.zip", caseSensitive: false, onlyIfSuccessful: true, fingerprint: true
}
}
}
stage ('Run Unit Tests (Normal - MSI)') {
bat "\"${vsToolsDir}\\VsDevCmd.bat\" && VSTest.Console.exe /logger:trx /TestAdapterPath:${nunitTestAdapterPath} \"${jobDir}\\mRemoteNGTests\\bin\\Release\\mRemoteNGTests.dll\""
}
stage ('Run Unit Tests (Portable)') {
bat "\"${vsToolsDir}\\VsDevCmd.bat\" && VSTest.Console.exe /logger:trx /TestAdapterPath:${nunitTestAdapterPath} \"${jobDir}\\mRemoteNGTests\\bin\\Release Portable\\mRemoteNGTests.dll\""
}
stage ('Generate UpdateCheck Files') {
bat "powershell -ExecutionPolicy Bypass -File \"${jobDir}\\Tools\\create_upg_chk_files.ps1\" -TagName \"${env.TagName}\" -UpdateChannel \"${env.UpdateChannel}\""
archiveArtifacts artifacts: "Release\\*.txt", caseSensitive: false, onlyIfSuccessful: true
}
stage ('Publish to GitHub') {
withCredentials([string(credentialsId: '5443a369-dbe8-42d3-b4e8-04d0b4e9039a', variable: 'GH_AUTH_TOKEN')]) {
def zipPath = "${jobDir}\\Release\\*.zip"
def msiPath = "${jobDir}\\Release\\*.msi"
// because batch files suck at handling newline characters, we have to convert to base64 in groovy and back to text in powershell
def base64Description = env.ReleaseDescription.bytes.encodeBase64().toString()
bat "powershell -ExecutionPolicy Bypass -File \"${jobDir}\\Tools\\publish_to_github.ps1\" -Owner \"mRemoteNG\" -Repository \"mRemoteNG\" -ReleaseTitle \"${env.ReleaseTitle}\" -TagName \"${env.TagName}\" -TargetCommitish \"${env.TargetBranch}\" -Description \"${base64Description}\" -IsDraft ${env.IsDraft} -IsPrerelease ${env.IsPreRelease} -ZipFilePath \"${zipPath}\" -MsiFilePath \"${msiPath}\" -AuthToken \"${env.GH_AUTH_TOKEN}\" -DescriptionIsBase64Encoded"
}
}
}

174
README.MD
View File

@@ -1,59 +1,181 @@
# Welcome to the mRemoteNG project!
**NOTICE: This project currently transited to a new maintainer. Development help would be greatly appreciated.**
[![Twitter Follow](https://img.shields.io/twitter/follow/mRemoteNG.svg?style=social&label=Follow)](https://twitter.com/intent/follow?screen_name=mRemoteNG)
[![Join the chat at https://gitter.im/mRemoteNG/PublicChat/](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mRemoteNG/PublicChat)
[![PayPal](https://img.shields.io/badge/%24-PayPal-blue.svg)](https://www.paypal.me/DavidSparer)
<br/><br/>
<p align="center">
<img width="500" src="https://github.com/mRemoteNG/mRemoteNG/blob/develop/mRemoteNGProjectFiles/Header_dark.png">
</p>
<p align="center">
An open source, multi-protocol, tabbed remote connections manager allowing you to view all of your connections in a simple yet powerful interface
</p>
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/529/badge)](https://bestpractices.coreinfrastructure.org/projects/529)
<p align="center">
<img alt="GitHub All Releases" src="https://img.shields.io/github/downloads/mremoteng/mremoteng/total?label=Overall%20Downloads&style=for-the-badge">
</p>
[![Issues In Progress](https://badge.waffle.io/mRemoteNG/mRemoteNG.png?label=In%20Progress&title=In%20Progress)](https://waffle.io/mRemoteNG/mRemoteNG)
<p align="center">
<a href="https://www.reddit.com/r/mRemoteNG/">
<img alt="Subreddit subscribers" src="https://img.shields.io/reddit/subreddit-subscribers/mremoteng?label=Reddit&logo=Reddit&style=flat-square">
</a>
<a href="https://twitter.com/mremoteng">
<img alt="Twitter Follow" src="https://img.shields.io/twitter/follow/mremoteng?color=%231DA1F2&label=Twitter&logo=Twitter&style=flat-square">
</a>
<a href="https://gitter.im/mRemoteNG/PublicChat">
<img alt="Gitter" src="https://img.shields.io/gitter/room/mRemoteNG/PublicChat?label=Join%20the%20Chat&logo=Gitter&style=flat-square">
</a>
<a href="https://www.paypal.me/DavidSparer">
<img alt="PayPal" src="https://img.shields.io/badge/%24-PayPal-blue.svg?label=Donate&logo=PayPal&style=flat-square">
</a>
<a href="bitcoin:16fUnHUM3k7W9Fvpc6dug7TAdfeGEcLbSg">
<img alt="Bitcoin" src="https://img.shields.io/badge/%24-Bitcoin.svg?label=Donate&logo=bitcoin&style=flat-square">
</a>
</p>
<p align="center">
<a href="https://github.com/mRemoteNG/mRemoteNG/blob/develop/COPYING.TXT">
<img alt="License" src="https://img.shields.io/github/license/mremoteng/mremoteng?label=License&style=flat">
</a>
<a href="https://bestpractices.coreinfrastructure.org/projects/529">
<img alt="CII Best Practices" src="https://bestpractices.coreinfrastructure.org/projects/529/badge?style=flat">
</a>
<a href='https://mremoteng.readthedocs.io/en/latest/?badge=latest'>
<img src='https://readthedocs.org/projects/mremoteng/badge/?version=latest' alt='Documentation Status' />
</a>
</p>
---
| Update Channel | Build Status | Downloads |
| ---------------|--------------|-----------|
| Stable | [![Build status](https://ci.appveyor.com/api/projects/status/k0sdbxmq90fgdmj6/branch/master?svg=true)](https://ci.appveyor.com/project/mremoteng/mremoteng/branch/master) | [![Github Releases (by Release)](https://img.shields.io/github/downloads/mRemoteNG/mRemoteNG/v1.75.7012/total.svg)](https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.75.7012) |
| Beta | | [![Github Releases (by Release)](https://img.shields.io/github/downloads/mRemoteNG/mRemoteNG/v1.75.7012/total.svg)](https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.75.7012) |
| Development | [![Build status](https://ci.appveyor.com/api/projects/status/k0sdbxmq90fgdmj6/branch/develop?svg=true)](https://ci.appveyor.com/project/mremoteng/mremoteng/branch/develop) | [![Github Releases (by Release)](https://img.shields.io/github/downloads/mRemoteNG/mRemoteNG/v1.76Alpha4/total.svg)](https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.76Alpha4) |
mRemoteNG is the next generation of mRemote, a full-featured, multi-tab remote connections manager.
| Stable | [![Build status](https://ci.appveyor.com/api/projects/status/k0sdbxmq90fgdmj6/branch/master?svg=true)](https://ci.appveyor.com/project/mremoteng/mremoteng/branch/master) | [![Github Releases (by Release)](https://img.shields.io/github/downloads/mRemoteNG/mRemoteNG/v1.76.20/total.svg)](https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.76.20) |
| Prerelease | [![Build status](https://ci.appveyor.com/api/projects/status/k0sdbxmq90fgdmj6/branch/develop?svg=true)](https://ci.appveyor.com/project/mremoteng/mremoteng/branch/develop) | [![Github Releases (by Release)](https://img.shields.io/github/downloads/mRemoteNG/mRemoteNG/v1.77.1/total.svg)](https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.77.1) |
| Nightly build | [![Build status](https://ci.appveyor.com/api/projects/status/k0sdbxmq90fgdmj6/branch/develop?svg=true)](https://ci.appveyor.com/project/mremoteng/mremoteng/branch/develop) | [![Github Releases (by Release)](https://img.shields.io/github/downloads/mRemoteNG/mRemoteNG/v1.77.2-nb/total.svg)](https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.77.2-nb) |
## Features
mRemoteNG is a fork of mRemote: an open source, tabbed, multi-protocol, remote connections manager. mRemoteNG adds bug fixes and new features to mRemote.
The following protocols are supported:
It allows you to view all of your remote connections in a simple yet powerful tabbed interface.
mRemoteNG supports the following protocols:
* RDP (Remote Desktop/Terminal Server)
* RDP (Remote Desktop Protocol)
* VNC (Virtual Network Computing)
* ICA (Citrix Independent Computing Architecture)
* SSH (Secure Shell)
* Telnet (TELecommunication NETwork)
* HTTP/HTTPS (Hypertext Transfer Protocol)
* rlogin (Remote Login)
* Raw Socket Connections
* Powershell remoting
For a detailed feature list and general usage support, refer to the [User Manual](https://github.com/mRemoteNG/mRemoteNG/wiki/User-Manual).
For a detailed feature list and general usage support, refer to the [Documentation](https://mremoteng.readthedocs.io/en/latest/).
## Installation
Before installing make sure you have all the required [prerequisites](https://github.com/mRemoteNG/mRemoteNG/wiki/Prerequisites).
### Supported Operating Systems
mRemoteNG is available as a redistributable msi package, and can be downloaded from the following locations:
- [Windows 11](https://en.wikipedia.org/wiki/Windows_11)
- [Windows 10](https://en.wikipedia.org/wiki/Windows_10)
- [Windows 8.1](https://en.wikipedia.org/wiki/Windows_8.1)
- [Windows Server 2019](https://en.wikipedia.org/wiki/Windows_Server_2019)
- [Windows Server 2016](https://en.wikipedia.org/wiki/Windows_Server_2016)
- [Windows Server 2012 R2](https://en.wikipedia.org/wiki/Windows_Server_2012_R2)
### Packaging
Downloads are provided in three different packages.
#### Binary package
The binary package of mRemoteNG is a compiled version of mRemoteNG which comes in an MSI installer.
This is the most common way to install mRemoteNG and get up and running.
#### Portable package
The portable package contains a modified version of the executable which stores and loads all your settings from files in the application's directory.
This package can be used to run mRemoteNG from a USB stick and preserve your configuration wherever you go.
#### Source package
This contains the source code from which mRemoteNG is build.
You will need to compile it yourself using Visual Studio.
### Minimum Requirements
* [Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads)
* [Microsoft .NET Framework 4.0](https://www.microsoft.com/en-us/download/details.aspx?id=17851)
* Microsoft Terminal Service Client 6.0 or later
* Needed if you use RDP. mstscax.dll and/or msrdp.ocx be registered.
### Download
mRemoteNG is available as a redistributable MSI package or as a portable ZIP package and can be downloaded from the following locations:
* [GitHub](https://github.com/mRemoteNG/mRemoteNG/releases)
* [Project Website](https://mremoteng.org/download)
mRemoteNG is supported on Windows 7 or later.
Windows 7 and Windows Server 2008 installations must ensure the [listed required updates](https://github.com/mRemoteNG/mRemoteNG/wiki/Prerequisites#full-list-of-required-windows-updates-for-windows-7--server-2008-clients) are installed and active.
### Command line install
The MSI package of mRemoteNG can be installed using the command line:
`msiexec /i C:\Path\To\mRemoteNG-Installer.exe [INSTALLDIR=value] [IGNOREPREREQUISITES=value]`
| Property | Value | Description |
|-|-|-|
| INSTALLDIR | `folder path` | This allows you to set the installation directory from the command line. For paths that contain spaces, enclose the path in double quotes (""). This overrides any value found in the registry. |
| IGNOREPREREQUISITES | `0` or `1` | When set to `1`, the installer will not be halted if any prerequisite check is not met. You must still run the installer as administrator. |
#### Examples
**Install to a custom folder**
`msiexec /i C:\Path\To\mRemoteNG-Installer.msi INSTALLDIR="D:\Work Apps\mRemoteNG"`
**Ignore prerequisites during a normal install**
`msiexec /i C:\Path\To\mRemoteNG-Installer.msi IGNOREPREREQUISITES=1`
**Ignore prerequisites during a silent install**
`msiexec /i C:\Path\To\mRemoteNG-Installer.msi /qn IGNOREPREREQUISITES=1`
### Troubleshooting installation
Turn on verbose logging by using the `/lv* <log path>` argument at the command line.
`msiexec /i C:\Path\To\mRemoteNG-Installer.msi /l*v C:\mremoteng_install.log`
## Uninstall
### Standard Uninstall
mRemoteNG basic binary package can be uninstalled with Windows Control Panel. If for some reason it does not work please
follow information provided below for Manual Uninstall.
### Manual Uninstall
_If you are using the Portable version, simply deleting the folder that contains mRemoteNG should be sufficient. These uninstall instructions are only necessary for the normal binary .MSI installed version of mRemoteNG_
* Delete the folder where mRemoteNG was installed. By default, this is:
`%PROGRAMFILES%\mRemoteNG`
* Delete the mRemoteNG install entry from one of the following locations. Search for "mRemoteNG" in the DisplayName field:
* x86: ``HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\``
* x64: ``HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\``
* (Optional) If you would also like to delete user data remove `%LOCALAPPDATA%\mRemoteNG`
## Featured Projects
* [PSmRemoteNG](https://github.com/realslacker/PSmRemoteNG) A module to create mRemoteNG connection files from PowerShell.
* [mRemoteNGOpenVPN](https://github.com/T3los/mRemoteNGOpenVPN) A script that can be embedded as an external tool to control OpenVPN.
## Contribute
If you find mRemoteNG useful and would like to contribute, it would be greatly appreciated. When you contribute, you make it possible for the team to cover the costs of producing mRemoteNG.
### Submit Code
Check out the [Wiki page](https://github.com/mRemoteNG/mRemoteNG/wiki/Development) on how to configure your development environment and submit a pull request.
Check out the [Wiki page](https://github.com/mRemoteNG/mRemoteNG/wiki) on how to configure your development environment and submit a pull request.
### Translate
Check out the [Wiki page](https://github.com/mRemoteNG/mRemoteNG/wiki/How%20to%20Help%20Translating%20mRemoteNG) on how to help make mRemoteNG a polygot
Check out the [Wiki page](https://github.com/mRemoteNG/mRemoteNG/wiki) on how to help make mRemoteNG a polyglot.
[![Developed with ReSharper](https://raw.githubusercontent.com/mRemoteNG/mRemoteNG/develop/.github/icon_ReSharper.png)](https://www.jetbrains.com/resharper/)
</br>
<p align="center">
<img alt="Developed with ReSharper" src="https://github.com/mRemoteNG/mRemoteNG/blob/develop/mRemoteNGProjectFiles/icon_ReSharper.png">
</p>

View File

@@ -1,25 +0,0 @@
mRemoteNG is the next generation of mRemote, a full-featured, multi-tab remote connections manager.
It allows you to store all your remote connections in a simple yet powerful interface.
Currently these protocols are supported:
* RDP (Remote Desktop)
* VNC (Virtual Network Computing)
* ICA (Independent Computing Architecture)
* SSH (Secure Shell)
* Telnet (TELecommunication NETwork)
* HTTP/S (Hypertext Transfer Protocol)
* Rlogin (Rlogin)
* RAW
mRemoteNG can be installed on Windows 7 or later.
Windows 7 systems require RDP version 8:
https://support.microsoft.com/en-us/kb/2592687
OR
https://support.microsoft.com/en-us/kb/2923545
Windows 8+ support RDP version 8+ out of the box.
RDP versions are backwards compatible, so an mRemoteNG client running on Windows 10 can connection successfully to a Windows 2003 host (for example).

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,31 +0,0 @@
7-Zip Extra
~~~~~~~~~~~
License for use and distribution
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Copyright (C) 1999-2016 Igor Pavlov.
7-Zip Extra files are under the GNU LGPL license.
Notes:
You can use 7-Zip Extra on any computer, including a computer in a commercial
organization. You don't need to register or pay for 7-Zip.
GNU LGPL information
--------------------
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You can receive a copy of the GNU Lesser General Public License from
http://www.gnu.org/

View File

@@ -1,77 +0,0 @@
7-Zip Extra history
-------------------
9.35 beta 2014-12-07
------------------------------
- SFX modules were moved to LZMA SDK package.
9.34 alpha 2014-06-22
------------------------------
- Minimum supported system now is Windows 2000 for EXE and DLL files.
- all EXE and DLL files use msvcrt.dll.
- 7zr.exe now support AES encryption.
9.18 2010-11-02
------------------------------
- New small SFX module for installers.
9.17 2010-10-04
------------------------------
- New 7-Zip plugin for FAR Manager x64.
9.10 2009-12-30
------------------------------
- 7-Zip for installers now supports LZMA2.
9.09 2009-12-12
------------------------------
- LZMA2 compression method support.
- Some bugs were fixed.
4.65 2009-02-03
------------------------------
- Some bugs were fixed.
4.38 beta 2006-04-13
------------------------------
- SFX for installers now supports new properties in config file:
Progress, Directory, ExecuteFile, ExecuteParameters.
4.34 beta 2006-02-27
------------------------------
- ISetProperties::SetProperties:
it's possible to specify desirable number of CPU threads:
PROPVARIANT: name=L"mt", vt = VT_UI4, ulVal = NumberOfThreads
If "mt" is not defined, 7za.dll will check number of processors in system to set
number of desirable threads.
Now 7za.dll can use:
2 threads for LZMA compressing
N threads for BZip2 compressing
4 threads for BZip2 decompressing
Other codecs use only one thread.
Note: 7za.dll can use additional "small" threads with low CPU load.
- It's possible to call ISetProperties::SetProperties to specify "mt" property for decoder.
4.33 beta 2006-02-05
------------------------------
- Compressing speed and Memory requirements were increased.
Default dictionary size was increased: Fastest: 64 KB, Fast: 1 MB,
Normal: 4 MB, Max: 16 MB, Ultra: 64 MB.
- 7z/LZMA now can use only these match finders: HC4, BT2, BT3, BT4
4.27 2005-09-21
------------------------------
- Some GUIDs/interfaces were changed.
IStream.h:
ISequentialInStream::Read now works as old ReadPart
ISequentialOutStream::Write now works as old WritePart

View File

@@ -1,124 +0,0 @@
7-Zip Extra 16.02
-----------------
7-Zip Extra is package of extra modules of 7-Zip.
7-Zip Copyright (C) 1999-2016 Igor Pavlov.
7-Zip is free software. Read License.txt for more information about license.
Source code of binaries can be found at:
http://www.7-zip.org/
This package contains the following files:
7za.exe - standalone console version of 7-Zip with reduced formats support.
7za.dll - library for working with 7z archives
7zxa.dll - library for extracting from 7z archives
License.txt - license information
readme.txt - this file
Far\ - plugin for Far Manager
x64\ - binaries for x64
All 32-bit binaries can work in:
Windows 2000 / 2003 / 2008 / XP / Vista / 7 / 8 / 10
and in any Windows x64 version with WoW64 support.
All x64 binaries can work in any Windows x64 version.
All binaries use msvcrt.dll.
7za.exe
-------
7za.exe - is a standalone console version of 7-Zip with reduced formats support.
Extra: 7za.exe : support for only some formats of 7-Zip.
7-Zip: 7z.exe with 7z.dll : support for all formats of 7-Zip.
7za.exe and 7z.exe from 7-Zip have same command line interface.
7za.exe doesn't use external DLL files.
You can read Help File (7-zip.chm) from 7-Zip package for description
of all commands and switches for 7za.exe and 7z.exe.
7za.exe features:
- High compression ratio in 7z format
- Supported formats:
- Packing / unpacking: 7z, xz, ZIP, GZIP, BZIP2 and TAR
- Unpacking only: Z, lzma, CAB.
- Highest compression ratio for ZIP and GZIP formats.
- Fast compression and decompression
- Strong AES-256 encryption in 7z and ZIP formats.
Note: LZMA SDK contains 7zr.exe - more reduced version of 7za.exe.
But you can use 7zr.exe as "public domain" code.
DLL files
---------
7za.dll and 7zxa.dll are reduced versions of 7z.dll from 7-Zip.
7za.dll and 7zxa.dll support only 7z format.
Note: 7z.dll is main DLL file that works with all archive types in 7-Zip.
7za.dll and 7zxa.dll support the following decoding methods:
- LZMA, LZMA2, PPMD, BCJ, BCJ2, COPY, 7zAES, BZip2, Deflate.
7za.dll also supports 7z encoding with the following encoding methods:
- LZMA, LZMA2, PPMD, BCJ, BCJ2, COPY, 7zAES.
7za.dll and 7zxa.dll work via COM interfaces.
But these DLLs don't use standard COM interfaces for objects creating.
Look also example code that calls DLL functions (in source code of 7-Zip):
7zip\UI\Client7z
Another example of binary that uses these interface is 7-Zip itself.
The following binaries from 7-Zip use 7z.dll:
- 7z.exe (console version)
- 7zG.exe (GUI version)
- 7zFM.exe (7-Zip File Manager)
Note: The source code of LZMA SDK also contains the code for similar DLLs
(DLLs without BZip2, Deflate support). And these files from LZMA SDK can be
used as "public domain" code. If you use LZMA SDK files, you don't need to
follow GNU LGPL rules, if you want to change the code.
License FAQ
-----------
Can I use the EXE or DLL files from 7-Zip in a commercial application?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Yes, but you are required to specify in documentation for your application:
(1) that you used parts of the 7-Zip program,
(2) that 7-Zip is licensed under the GNU LGPL license and
(3) you must give a link to www.7-zip.org, where the source code can be found.
Can I use the source code of 7-Zip in a commercial application?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Since 7-Zip is licensed under the GNU LGPL you must follow the rules of that license.
In brief, it means that any LGPL'ed code must remain licensed under the LGPL.
For instance, you can change the code from 7-Zip or write a wrapper for some
code from 7-Zip and compile it into a DLL; but, the source code of that DLL
(including your modifications / additions / wrapper) must be licensed under
the LGPL or GPL.
Any other code in your application can be licensed as you wish. This scheme allows
users and developers to change LGPL'ed code and recompile that DLL. That is the
idea of free software. Read more here: http://www.gnu.org/.
Note: You can look also LZMA SDK, which is available under a more liberal license.
---
End of document

View File

@@ -1,60 +1,208 @@
#####################################
# Author: David Sparer
# Summary:
# Authors: David Sparer & Jack Denton
# Summary:
# This is intended to be a template for creating connections in bulk. This uses the serializers directly from the mRemoteNG binaries.
# You will still need to create the connection info objects, but the library will handle serialization. It is expected that you
# are familiar with PowerShell. If this is not the case, reach out to the mRemoteNG community for help.
# Usage:
# Replace or modify the examples that are shown toward the end of the script to create your own connection info objects.
# Replace or modify the examples that are shown toward the end of the script to create your own connection info objects.
#####################################
$EncryptionKey = (Get-Credential -Message "Enter the encryption key you would like to use. This must match the encryption key used by the rest of the confCons file." -UserName "DontNeedUsername").Password
$PathToMrngFolder = ""
foreach ($Path in 'HKLM:\SOFTWARE\WOW6432Node\mRemoteNG', 'HKLM:\SOFTWARE\mRemoteNG') {
Try {
$mRNGPath = (Get-ItemProperty -Path $Path -Name InstallDir -ErrorAction Stop).InstallDir
break
}
Catch {
continue
}
}
if (!$mRNGPath) {
Add-Type -AssemblyName System.Windows.Forms
$FolderBrowser = [System.Windows.Forms.FolderBrowserDialog]@{
Description = 'Please select the folder which contains mRemoteNG.exe'
ShowNewFolderButton = $false
}
$Response = $FolderBrowser.ShowDialog()
if ($Response.value__ -eq 1) {
$mRNGPath = $FolderBrowser.SelectedPath
}
elseif ($Response.value__ -eq 2) {
Write-Warning 'A folder containing mRemoteNG.exe has not been selected'
return
}
}
$null = [System.Reflection.Assembly]::LoadFile((Join-Path -Path $mRNGPath -ChildPath "mRemoteNG.exe"))
Add-Type -Path (Join-Path -Path $mRNGPath -ChildPath "BouncyCastle.Crypto.dll")
if ($PathToMrngFolder -eq "") {
Write-Error -Message 'You must set the $PathToMrngFolder variable in this script to the folder which contains mRemoteNG.exe'
function ConvertTo-mRNGSerializedXml {
[CmdletBinding()]
Param (
[Parameter(Mandatory)]
[mRemoteNG.Connection.ConnectionInfo[]]
$Xml
)
function Get-ChildNodes {
Param ($Xml)
$Xml
if ($Xml -is [mRemoteNG.Container.ContainerInfo] -and $Xml.HasChildren()) {
foreach ($Node in $Xml.Children) {
Get-ChildNodes -Xml $Node
}
}
}
$AllNodes = Get-ChildNodes -Xml $Xml
if (
$AllNodes.Password -or
$AllNodes.RDGatewayPassword -or
$AllNodes.VNCProxyPassword
) {
$Password = Read-Host -Message 'If you have password protected your ConfCons.xml please enter the password here otherwise just press enter' -AsSecureString
}
else {
$Password = [securestring]::new()
}
$CryptoProvider = [mRemoteNG.Security.SymmetricEncryption.AeadCryptographyProvider]::new()
$SaveFilter = [mRemoteNG.Security.SaveFilter]::new()
$ConnectionNodeSerializer = [mRemoteNG.Config.Serializers.Xml.XmlConnectionNodeSerializer26]::new($CryptoProvider, $Password, $SaveFilter)
$XmlSerializer = [mRemoteNG.Config.Serializers.Xml.XmlConnectionsSerializer]::new($CryptoProvider, $ConnectionNodeSerializer)
$RootNode = [mRemoteNG.Tree.Root.RootNodeInfo]::new('Connection')
foreach ($Node in $Xml) {
$RootNode.AddChild($Node)
}
$XmlSerializer.Serialize($RootNode)
}
$assembly = [System.Reflection.Assembly]::LoadFile((Join-Path -Path $PathToMrngFolder -ChildPath "mRemoteNG.exe"))
$assembly = [System.Reflection.Assembly]::LoadFile((Join-Path -Path $PathToMrngFolder -ChildPath "BouncyCastle.Crypto.dll"))
function New-mRNGConnection {
[CmdletBinding(DefaultParameterSetName = 'Credential')]
Param (
[Parameter(Mandatory)]
[string]
$Name,
function New-mRemoteNGXmlSerializer {
[CmdletBinding()]
param (
[SecureString]
$EncryptionKey
[Parameter(Mandatory)]
[string]
$Hostname,
[Parameter(Mandatory)]
[mRemoteNG.Connection.Protocol.ProtocolType]
$Protocol,
[Parameter(ParameterSetName = 'Credential')]
[pscredential]
$Credential,
[Parameter(ParameterSetName = 'InheritCredential')]
[switch]
$InheritCredential,
[Parameter()]
[mRemoteNG.Container.ContainerInfo]
$ParentContainer,
[Parameter()]
[switch]
$PassThru
)
PROCESS {
$cryptoProvider = New-Object -TypeName mRemoteNG.Security.SymmetricEncryption.AeadCryptographyProvider
$saveFilter = New-Object -TypeName mRemoteNG.Security.SaveFilter -ArgumentList @($false)
$xmlSerializer = New-Object -TypeName mRemoteNG.Config.Serializers.XmlConnectionNodeSerializer -ArgumentList @($cryptoProvider, $encryptionKey, $saveFilter)
Write-Output $xmlSerializer
$Connection = [mRemoteNG.Connection.ConnectionInfo]@{
Name = $Name
Hostname = $Hostname
Protocol = $Protocol
}
if ($Credential) {
$Connection.Username = $Credential.GetNetworkCredential().UserName
$Connection.Domain = $Credential.GetNetworkCredential().Domain
$Connection.Password = $Credential.GetNetworkCredential().Password
}
if ($InheritCredential) {
$Connection.Inheritance.Username = $true
$Connection.Inheritance.Domain = $true
$Connection.Inheritance.Password = $true
}
if ($ParentContainer) {
$ParentContainer.AddChild($Connection)
if ($PSBoundParameters.ContainsKey('PassThru')) {
$Connection
}
}
else {
$Connection
}
}
function New-mRemoteNGConnectionInfo {
function New-mRNGContainer {
[CmdletBinding(DefaultParameterSetName = 'Credential')]
Param (
[Parameter(Mandatory)]
[string]
$Name,
[Parameter(ParameterSetName = 'Credential')]
[pscredential]
$Credential,
[Parameter(ParameterSetName = 'InheritCredential')]
[switch]
$InheritCredential,
[Parameter()]
[mRemoteNG.Container.ContainerInfo]
$ParentContainer
)
$Container = [mRemoteNG.Container.ContainerInfo]@{
Name = $Name
}
if ($Credential) {
$Container.Username = $Credential.GetNetworkCredential().UserName
$Container.Domain = $Credential.GetNetworkCredential().Domain
$Container.Password = $Credential.GetNetworkCredential().Password
}
if ($InheritCredential) {
$Container.Inheritance.Username = $true
$Container.Inheritance.Domain = $true
$Container.Inheritance.Password = $true
}
if ($ParentContainer) {
$ParentContainer.AddChild($Container)
}
$Container
}
function Export-mRNGXml {
[CmdletBinding()]
param ()
param (
[Parameter()]
[string]
$Path,
PROCESS {
$connectionInfo = New-Object -TypeName mRemoteNG.Connection.ConnectionInfo
Write-Output $connectionInfo
}
[Parameter()]
[string]
$SerializedXml
)
$FilePathProvider = [mRemoteNG.Config.DataProviders.FileDataProvider]::new($Path)
$filePathProvider.Save($SerializedXml)
}
function New-mRemoteNGContainerInfo {
[CmdletBinding()]
param ()
PROCESS {
$connectionInfo = New-Object -TypeName mRemoteNG.Container.ContainerInfo
Write-Output $connectionInfo
}
}
# Setup the services needed to do serialization
$xmlSerializer = New-mRemoteNGXmlSerializer -EncryptionKey $EncryptionKey
@@ -62,53 +210,85 @@ $xmlSerializer = New-mRemoteNGXmlSerializer -EncryptionKey $EncryptionKey
# Example 1: serialize many connections, no containers
# Here you can define the number of connection info objects to create
# You can also provide a list of desired hostnames and iterate over those
$xml = ""
foreach($i in 1..5)
{
$connectionInfo = New-mRemoteNGConnectionInfo
# Set connection info properties
$connectionInfo.Name = "server-$i"
$connectionInfo.Hostname = "some-win-server-$i"
$connectionInfo.Protocol = [mRemoteNG.Connection.Protocol.ProtocolType]::RDP
$connectionInfo.Inheritance.Username = $true
$connectionInfo.Inheritance.Domain = $true
$connectionInfo.Inheritance.Password = $true
$serializedConnection = $xmlSerializer.SerializeConnectionInfo($connectionInfo).ToString()
$xml += $serializedConnection + [System.Environment]::NewLine
$Connections = foreach ($i in 1..5) {
# Create new connection
$Splat = @{
Name = 'Server-{0:D2}' -f $i
Hostname = 'Server-{0:D2}' -f $i
Protocol = 'RDP'
InheritCredential = $true
}
New-mRNGConnection @Splat
}
Write-Output $xml
# Serialize the connections
$SerializedXml = ConvertTo-mRNGSerializedXml -Xml $Connections
# Write the XML to a file ready to import into mRemoteNG
Export-mRNGXml -Path "$ENV:APPDATA\mRemoteNG\PowerShellGenerated.xml" -SerializedXml $SerializedXml
# Now open up mRemoteNG and press Ctrl+O and open up the exported XML file
#----------------------------------------------------------------
# Example 2: serialize a container which has connections
# You can also create containers and add connections to them, which will be nested correctly when serialized
$xml = ""
$container = New-mRemoteNGContainerInfo
$container.Name = "ProductionServers"
$serializedContainer = $xmlSerializer.SerializeConnectionInfo($container)
# You can also create containers and add connections and containers to them, which will be nested correctly when serialized
# If you specify the ParentContainer parameter for new connections then there will be no output unless the PassThru parameter is also used
foreach($i in 1..3)
{
$connectionInfo = New-mRemoteNGConnectionInfo
$ProdServerCreds = Get-Credential
$ProdServers = New-mRNGContainer -Name 'ProdServers' -Credential $ProdServerCreds
# Set connection info properties
$connectionInfo.Name = "server-$i"
$connectionInfo.Hostname = "some-linux-server-$i"
$connectionInfo.Protocol = [mRemoteNG.Connection.Protocol.ProtocolType]::SSH2
$connectionInfo.Inheritance.Username = $true
$connectionInfo.Inheritance.Domain = $true
$connectionInfo.Inheritance.Password = $true
# serialize the connection
$serializedConnection = $xmlSerializer.SerializeConnectionInfo($connectionInfo)
# add the connection to the container
$serializedContainer.Add($serializedConnection)
foreach ($i in 1..3) {
# Create new connection
$Splat = @{
Name = 'Server-{0:D2}' -f $i
Hostname = 'Server-{0:D2}' -f $i
Protocol = 'RDP'
InheritCredential = $true
ParentContainer = $ProdServers
}
New-mRNGConnection @Splat
}
# Call ToString() on the top-level container to get the XML of it and all its children
Write-Output $serializedContainer.ToString()
$ProdWebServers = New-mRNGContainer -Name 'WebServers' -ParentContainer $ProdServers -InheritCredential
foreach ($i in 1..3) {
# Create new connection
$Splat = @{
Name = 'WebServer-{0:D2}' -f $i
Hostname = 'WebServer-{0:D2}' -f $i
Protocol = 'SSH1'
InheritCredential = $true
ParentContainer = $ProdWebServers
}
New-mRNGConnection @Splat
}
$DevServers = New-mRNGContainer -Name 'DevServers'
foreach ($i in 1..3) {
# Create new connection
$Splat = @{
Name = 'DevServer-{0:D2}' -f $i
Hostname = 'DevServer-{0:D2}' -f $i
Protocol = 'RDP'
InheritCredential = $true
ParentContainer = $DevServers
PassThru = $true
}
# Specified the PassThru parameter in order to catch the connection and change a property
$Connection = New-mRNGConnection @Splat
$Connection.Resolution = 'FullScreen'
}
# Serialize the container
$SerializedXml = ConvertTo-mRNGSerializedXml -Xml $ProdServers, $DevServers
# Write the XML to a file ready to import into mRemoteNG
Export-mRNGXml -Path "$ENV:APPDATA\mRemoteNG\PowerShellGenerated.xml" -SerializedXml $SerializedXml
# Now open up mRemoteNG and press Ctrl+O and open up the exported XML file

View File

@@ -1,45 +0,0 @@
@echo off
setlocal enabledelayedexpansion
set SOLUTIONDIR=%~dp0..
rem Windows Sysinternals Sigcheck from http://technet.microsoft.com/en-us/sysinternals/bb897441
set SIGCHECK="%SOLUTIONDIR%\Tools\exes\sigcheck.exe"
set SEVENZIP="%SOLUTIONDIR%\Tools\7zip\7za.exe"
set VCVARSALL="%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
call %VCVARSALL% x86
IF NOT "%~1"=="build" goto skipbuild
echo Building...
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe" "%SOLUTIONDIR%\mRemoteV1.sln" /Rebuild "Release Portable"
:skipbuild
IF NOT EXIST "%SOLUTIONDIR%\mRemoteV1\bin\Release Portable\mRemoteNG.exe" echo Did you forget to build? && goto end
set SIGCHECK=!SIGCHECK:"=^"!
set SIGCHECK=!SIGCHECK: =^^ !
set SIGCHECK=!SIGCHECK:(=^^(!
set SIGCHECK=!SIGCHECK:)=^^)!
for /F "usebackq delims=. tokens=1-4" %%i in (`!SIGCHECK! /accepteula -q -n "%SOLUTIONDIR%\mRemoteV1\bin\Release Portable\mRemoteNG.exe"`) do (
set PRODUCT_VERSION_SHORT=%%i.%%j
set PRODUCT_VERSION=%%i.%%j.%%k.%%l
)
echo Version is %PRODUCT_VERSION%
set PORTABLEZIP="%SOLUTIONDIR%\Release\mRemoteNG-Portable-%PRODUCT_VERSION%.zip"
rmdir /S /Q "%SOLUTIONDIR%\mRemoteV1\bin\package"
mkdir "%SOLUTIONDIR%\mRemoteV1\bin\package"
copy "%SOLUTIONDIR%\*.txt" "%SOLUTIONDIR%\mRemoteV1\bin\package"
copy "%SOLUTIONDIR%\Installer Projects\Installer\Dependencies\PuTTYNG.exe" "%SOLUTIONDIR%\mRemoteV1\bin\package"
xcopy /S /Y "%SOLUTIONDIR%\mRemoteV1\bin\Release Portable" "%SOLUTIONDIR%\mRemoteV1\bin\package"
echo Creating portable ZIP file...
echo %PORTABLEZIP%
del /f /q %PORTABLEZIP% > nul 2>&1
%SEVENZIP% a -bt -mx=9 -tzip -y -r %PORTABLEZIP% "%SOLUTIONDIR%\mRemoteV1\bin\package\*.*"
%SEVENZIP% a -bt -mx=9 -tzip -y %PORTABLEZIP% "%SOLUTIONDIR%\*.TXT"
:end

Binary file not shown.

View File

@@ -1,15 +0,0 @@
param (
[string]
[Parameter(Mandatory=$true)]
$SolutionDir,
[string]
[Parameter(Mandatory=$true)]
$TargetDir
)
Write-Output "===== Beginning $($PSCmdlet.MyInvocation.MyCommand) ====="
Write-Output "Copying PUTTYNG to correct directory"
Copy-Item -Path (Join-Path -Path $SolutionDir -ChildPath "mRemoteV1\Resources\PuTTYNG.exe") -Destination $TargetDir -Force
Write-Output ""

View File

@@ -1,19 +0,0 @@
param (
[string]
[Parameter(Mandatory=$true)]
$SolutionDir,
[string]
[Parameter(Mandatory=$true)]
$TargetDir
)
Write-Output "===== Beginning $($PSCmdlet.MyInvocation.MyCommand) ====="
Write-Output "Copying THEMES folder to output"
$sourceFiles = [io.path]::combine($SolutionDir , 'mRemoteV1\Resources\Themes' )
$DestinationDir = [io.path]::combine($TargetDir , 'Themes')
robocopy $sourceFiles $DestinationDir *.vstheme /s
Write-Output ""

View File

@@ -30,7 +30,7 @@ function New-MsiUpdateFileContent {
$fileContents = `
"Version: $version
dURL: https://github.com/mRemoteNG/mRemoteNG/releases/download/$TagName/$($MsiFile.Name)
clURL: https://raw.githubusercontent.com/mRemoteNG/mRemoteNG/$TagName/CHANGELOG.TXT
clURL: https://raw.githubusercontent.com/mRemoteNG/mRemoteNG/$TagName/CHANGELOG.md
CertificateThumbprint: $certThumbprint
Checksum: $hash"
Write-Output $fileContents

View File

@@ -171,13 +171,27 @@ function Upload-GitHubReleaseAsset {
[string]
[Parameter(Mandatory=$true)]
# The OAuth2 token to use for authentication.
$AuthToken
$AuthToken,
[string]
# A short description label for the asset
$Label = ""
)
$UploadUri = $UploadUri -replace "(\{[\w,\?]*\})$"
$file = Get-Item -Path $FilePath
$files = Get-Item -Path $FilePath
$req_uploadZipAsset = Invoke-WebRequest -Uri "$($UploadUri)?name=$($file.Name)" -Method Post -Headers @{"Authorization"="token $AuthToken"} -ContentType $ContentType -InFile $file.FullName -ErrorAction Stop
$labelParam = ""
if ($Label -ne "") {
$labelParam = "&label=$Label"
}
# Get-Item could produce an array of files if a wildcard is provided. (C:\*.txt)
# Upload each matching item individually
foreach ($file in $files) {
Write-Output "Uploading asset to GitHub release: '$($file.FullName)'"
$req_uploadZipAsset = Invoke-WebRequest -Uri "$($UploadUri)?name=$($file.Name)$labelParam" -Method Post -Headers @{"Authorization"="token $AuthToken"} -ContentType $ContentType -InFile $file.FullName -ErrorAction Stop
}
}

View File

@@ -1,23 +0,0 @@
param (
[string]
[Parameter(Mandatory=$true)]
$TargetDir
)
Write-Output "===== Beginning $($PSCmdlet.MyInvocation.MyCommand) ====="
$path_HelpFilesDir = Join-Path -Path $TargetDir -ChildPath "Help"
Write-Output "Moving Help files to correct directory"
# Remove stale Help files, if they exist
if (Test-Path -Path $path_HelpFilesDir) {
Remove-Item -Path $path_HelpFilesDir -Recurse -Force
}
# Move Help files
Move-Item -Path (Join-Path -Path $TargetDir -ChildPath "Resources\Help") -Destination $path_HelpFilesDir -Force
Start-Sleep -Seconds 2
Remove-Item -Path (Join-Path -Path $TargetDir -ChildPath "Resources") -Recurse -Force
Write-Output ""

View File

@@ -1,149 +0,0 @@
@echo off
setlocal enabledelayedexpansion
set VERSIONTAG=
set VCVARSALL="%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
set DEVENV="devenv.exe"
set MAKENSIS="%ProgramFiles(x86)%\NSIS\Unicode\makensis.exe"
set RAR="%ProgramFiles%\WinRAR\WinRAR.exe"
set SIGNCMD=signtool.exe sign /n "Astrospark Technologies, LLC" /sha1 "1cbd910dbd6e77f26506e7f600736972f700673f" /tr http://timestamp.comodoca.com/rfc3161
rem Windows Sysinternals Sigcheck from http://technet.microsoft.com/en-us/sysinternals/bb897441
set SIGCHECK="%ProgramFiles(x86)%\Sigcheck\sigcheck.exe"
call %VCVARSALL% x86
rmdir /s /q "%~dp0\mRemoteV1\bin" > nul 2>&1
rmdir /s /q "%~dp0\mRemoteV1\obj" > nul 2>&1
if exist "%~dp0\mRemoteV1\bin" goto ERROR_RMDIR
if exist "%~dp0\mRemoteV1\obj" goto ERROR_RMDIR
goto NOERROR_RMDIR
:ERROR_RMDIR
echo.
echo Could not clean output directories.
echo.
echo Build process failed.
echo.
goto END
:NOERROR_RMDIR
echo Building release version...
%DEVENV% "%~dp0\mRemoteV1.sln" /build "Release"
echo Building portable version...
%DEVENV% "%~dp0\mRemoteV1.sln" /build "Release Portable"
echo Signing binaries...
%SIGNCMD% ^
"%~dp0\mRemoteV1\bin\Release\de\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release\el\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release\en-US\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release\es\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release\es-AR\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release\fr\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release\hu\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release\it\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release\nb-NO\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release\nl\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release\pl\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release\pt\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release\pt-BR\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release\ru\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release\uk\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release\zh-CN\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release\zh-TW\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release\AxInterop.MSTSCLib.dll" ^
"%~dp0\mRemoteV1\bin\Release\AxInterop.WFICALib.dll" ^
"%~dp0\mRemoteV1\bin\Release\Interop.EOLWTSCOM.dll" ^
"%~dp0\mRemoteV1\bin\Release\Interop.MSTSCLib.dll" ^
"%~dp0\mRemoteV1\bin\Release\Interop.ShDocVw.dll" ^
"%~dp0\mRemoteV1\bin\Release\Interop.WFICALib.dll" ^
"%~dp0\mRemoteV1\bin\Release\mRemoteNG.exe" ^
"%~dp0\mRemoteV1\bin\Release Portable\de\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\el\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\en-US\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\es\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\es-AR\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\fr\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\hu\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\it\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\nb-NO\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\nl\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\pl\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\pt\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\pt-BR\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\ru\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\uk\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\zh-CN\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\zh-TW\mRemoteNG.resources.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\AxInterop.MSTSCLib.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\AxInterop.WFICALib.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\Interop.EOLWTSCOM.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\Interop.MSTSCLib.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\Interop.ShDocVw.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\Interop.WFICALib.dll" ^
"%~dp0\mRemoteV1\bin\Release Portable\mRemoteNG.exe" ^
rem Do not remove the two blank lines above this line.
mkdir "%~dp0\Release" > nul 2>&1
echo Getting product version...
set VERSIONNSH="%~dp0\Release\Version.nsh"
set SIGCHECK=!SIGCHECK:"=^"!
set SIGCHECK=!SIGCHECK: =^^ !
set SIGCHECK=!SIGCHECK:(=^^(!
set SIGCHECK=!SIGCHECK:)=^^)!
for /F "usebackq delims=. tokens=1-4" %%i in (`!SIGCHECK! /accepteula -q -n "%~dp0\mRemoteV1\bin\Release\mRemoteNG.exe"`) do (
set PRODUCT_VERSION_SHORT=%%i.%%j
echo ^^!define PRODUCT_VERSION "%%i.%%j.%%k.%%l" > %VERSIONNSH%
echo ^^!define PRODUCT_VERSION_SHORT "%%i.%%j" >> %VERSIONNSH%
echo ^^!define PRODUCT_VERSION_MAJOR "%%i" >> %VERSIONNSH%
echo ^^!define PRODUCT_VERSION_MINOR "%%j" >> %VERSIONNSH%
)
echo Version is %PRODUCT_VERSION_SHORT%
echo Creating installer package...
if defined VERSIONTAG (
%MAKENSIS% /DPRODUCT_VERSION_TAG=%VERSIONTAG% "%~dp0\Installer\mRemote.nsi"
set INSTALLEREXE="%~dp0\Release\mRemoteNG-Installer-%PRODUCT_VERSION_SHORT%-%VERSIONTAG%.exe"
set BINARYZIP="%~dp0\Release\mRemoteNG-%PRODUCT_VERSION_SHORT%-%VERSIONTAG%.zip"
set PORTABLEZIP="%~dp0\Release\mRemoteNG-Portable-%PRODUCT_VERSION_SHORT%-%VERSIONTAG%.zip"
) else (
%MAKENSIS% "%~dp0\Installer\mRemote.nsi"
set INSTALLEREXE="%~dp0\Release\mRemoteNG-Installer-%PRODUCT_VERSION_SHORT%.exe"
set BINARYZIP="%~dp0\Release\mRemoteNG-%PRODUCT_VERSION_SHORT%.zip"
set PORTABLEZIP="%~dp0\Release\mRemoteNG-Portable-%PRODUCT_VERSION_SHORT%.zip"
)
del %VERSIONNSH%
echo Signing installer package...
%SIGNCMD% %INSTALLEREXE%
echo Creating release ZIP file...
del /f /q %BINARYZIP% > nul 2>&1
%RAR% a -m5 -r -ep1 -afzip -inul %BINARYZIP% "%~dp0\mRemoteV1\bin\Release\*.*"
%RAR% a -m5 -r -ep1 -afzip -inul %BINARYZIP% "%~dp0\Installer\Dependencies\*.*"
%RAR% a -m5 -ep -afzip -inul %BINARYZIP% "%~dp0\*.TXT"
echo Creating portable ZIP file...
del /f /q %PORTABLEZIP% > nul 2>&1
%RAR% a -m5 -r -ep1 -afzip -inul %PORTABLEZIP% "%~dp0\mRemoteV1\bin\Release Portable\*.*"
%RAR% a -m5 -r -ep1 -afzip -inul %PORTABLEZIP% "%~dp0\Installer\Dependencies\*.*"
%RAR% a -m5 -ep -afzip -inul %PORTABLEZIP% "%~dp0\*.TXT"
echo.
echo Build process complete.
echo.
:END
pause

View File

@@ -1,26 +0,0 @@
@echo off
set TEMP_FOLDER="%TEMP%\Translations.tmp"
set SORTRESX="%~dp0\Tools\SortRESX.exe"
echo.
echo This script sorts the language files
echo.
choice /m "Would you like to continue?"
echo.
rmdir /s /q %TEMP_FOLDER%
mkdir %TEMP_FOLDER%
copy "%~dp0\mRemoteV1\Language\*.resx" %TEMP_FOLDER%
pushd %TEMP_FOLDER%
for %%f in (*) do %SORTRESX% %TEMP_FOLDER%\%%f "%~dp0\mRemoteV1\Language\%%f"
popd
rmdir /s /q %TEMP_FOLDER%
echo Done.
echo.
pause

Binary file not shown.

View File

@@ -1,55 +0,0 @@
@echo off
set ZIP_FILE="%~dp0\..\mremoteng.zip"
set TEMP_FOLDER="%TEMP%\Translations.tmp"
set SORTRESX="%~dp0\Tools\SortRESX.exe"
set RAR="%ProgramFiles%\WinRAR\WinRAR.exe"
call :expand %ZIP_FILE%
goto :skip
:expand
set ZIP_FILE="%~f1"
exit /b
:skip
echo.
echo This script updates the language files with new translations from Crowdin
echo.
echo Download the latest translation file from Crowdin and place it here:
echo.
echo %ZIP_FILE%
echo.
choice /m "Would you like to continue?"
echo.
mkdir %TEMP_FOLDER%
%RAR% x -o+ %ZIP_FILE% *.* %TEMP_FOLDER%
%SORTRESX% %TEMP_FOLDER%\ar\Language.ar.resx "%~dp0\mRemoteV1\Language\Language.ar.resx"
%SORTRESX% %TEMP_FOLDER%\bg\Language.bg.resx "%~dp0\mRemoteV1\Language\Language.bg.resx"
%SORTRESX% %TEMP_FOLDER%\de\Language.de.resx "%~dp0\mRemoteV1\Language\Language.de.resx"
%SORTRESX% %TEMP_FOLDER%\el\Language.el.resx "%~dp0\mRemoteV1\Language\Language.el.resx"
%SORTRESX% %TEMP_FOLDER%\en-US\Language.en.resx "%~dp0\mRemoteV1\Language\Language.en-US.resx"
%SORTRESX% %TEMP_FOLDER%\es-AR\Language.es.resx "%~dp0\mRemoteV1\Language\Language.es-AR.resx"
%SORTRESX% %TEMP_FOLDER%\es-ES\Language.es.resx "%~dp0\mRemoteV1\Language\Language.es.resx"
%SORTRESX% %TEMP_FOLDER%\fr\Language.fr.resx "%~dp0\mRemoteV1\Language\Language.fr.resx"
%SORTRESX% %TEMP_FOLDER%\he\Language.he.resx "%~dp0\mRemoteV1\Language\Language.he.resx"
%SORTRESX% %TEMP_FOLDER%\hu\Language.hu.resx "%~dp0\mRemoteV1\Language\Language.hu.resx"
%SORTRESX% %TEMP_FOLDER%\it\Language.it.resx "%~dp0\mRemoteV1\Language\Language.it.resx"
%SORTRESX% %TEMP_FOLDER%\nb\Language.nb.resx "%~dp0\mRemoteV1\Language\Language.nb-NO.resx"
%SORTRESX% %TEMP_FOLDER%\nl\Language.nl.resx "%~dp0\mRemoteV1\Language\Language.nl.resx"
%SORTRESX% %TEMP_FOLDER%\pl\Language.pl.resx "%~dp0\mRemoteV1\Language\Language.pl.resx"
%SORTRESX% %TEMP_FOLDER%\pt-BR\Language.pt.resx "%~dp0\mRemoteV1\Language\Language.pt-BR.resx"
%SORTRESX% %TEMP_FOLDER%\pt-PT\Language.pt.resx "%~dp0\mRemoteV1\Language\Language.pt.resx"
%SORTRESX% %TEMP_FOLDER%\ru\Language.ru.resx "%~dp0\mRemoteV1\Language\Language.ru.resx"
%SORTRESX% %TEMP_FOLDER%\uk\Language.uk.resx "%~dp0\mRemoteV1\Language\Language.uk.resx"
%SORTRESX% %TEMP_FOLDER%\zh-CN\Language.zh.resx "%~dp0\mRemoteV1\Language\Language.zh-CN.resx"
%SORTRESX% %TEMP_FOLDER%\zh-TW\Language.zh.resx "%~dp0\mRemoteV1\Language\Language.zh-TW.resx"
rmdir /s /q %TEMP_FOLDER%
echo Done.
echo.
pause

View File

@@ -33,11 +33,12 @@ Format-Table -AutoSize -Wrap -InputObject @{
"TargetDir" = $TargetDir
"TargetFileName" = $TargetFileName
"ConfigurationName" = $ConfigurationName
"CertificatePath" = $CertificatePath
"ExcludeFromSigning" = $ExcludeFromSigning
}
& "$PSScriptRoot\sign_binaries.ps1" -TargetDir $TargetDir -CertificatePath $CertificatePath -CertificatePassword $CertificatePassword -ConfigurationName $ConfigurationName -Exclude $ExcludeFromSigning
& "$PSScriptRoot\verify_binary_signatures.ps1" -TargetDir $TargetDir -ConfigurationName $ConfigurationName -CertificatePath $CertificatePath
& "$PSScriptRoot\sign_binaries.ps1" -TargetDir $TargetDir -CertificatePath $CertificatePath -CertificatePassword $CertificatePassword -ConfigurationName $ConfigurationName -Exclude $ExcludeFromSigning -SolutionDir $SolutionDir
& "$PSScriptRoot\verify_binary_signatures.ps1" -TargetDir $TargetDir -ConfigurationName $ConfigurationName -CertificatePath $CertificatePath -SolutionDir $SolutionDir
& "$PSScriptRoot\rename_installer_with_version.ps1" -SolutionDir $SolutionDir
& "$PSScriptRoot\copy_release_installer.ps1" -SourcePath $TargetDir -DestinationDir (Join-Path -Path $SolutionDir -ChildPath "Release")

View File

@@ -26,24 +26,20 @@ param (
)
Write-Output "+=================================================================+"
Write-Output "| Beginning mRemoteV1 Post Build |"
Write-Output "| Beginning mRemoteNG Post Build |"
Write-Output "+=================================================================+"
Format-Table -AutoSize -Wrap -InputObject @{
"SolutionDir" = $SolutionDir
"TargetDir" = $TargetDir
"TargetFileName" = $TargetFileName
"ConfigurationName" = $ConfigurationName
"CertificatePath" = $CertificatePath
"ExcludeFromSigning" = $ExcludeFromSigning
}
& "$PSScriptRoot\copy_puttyng.ps1" -SolutionDir $SolutionDir -TargetDir $TargetDir
& "$PSScriptRoot\copy_themes.ps1" -SolutionDir $SolutionDir -TargetDir $TargetDir
& "$PSScriptRoot\move_help_files.ps1" -TargetDir $TargetDir
& "$PSScriptRoot\set_LargeAddressAware.ps1" -TargetDir $TargetDir -TargetFileName $TargetFileName
& "$PSScriptRoot\verify_LargeAddressAware.ps1" -TargetDir $TargetDir -TargetFileName $TargetFileName
& "$PSScriptRoot\tidy_files_for_release.ps1" -TargetDir $TargetDir -ConfigurationName $ConfigurationName
& "$PSScriptRoot\sign_binaries.ps1" -TargetDir $TargetDir -CertificatePath $CertificatePath -CertificatePassword $CertificatePassword -ConfigurationName $ConfigurationName -Exclude $ExcludeFromSigning
& "$PSScriptRoot\verify_binary_signatures.ps1" -TargetDir $TargetDir -ConfigurationName $ConfigurationName -CertificatePath $CertificatePath
& "$PSScriptRoot\zip_portable_files.ps1" -SolutionDir $SolutionDir -TargetDir $TargetDir -ConfigurationName $ConfigurationName
& "$PSScriptRoot\sign_binaries.ps1" -TargetDir $TargetDir -CertificatePath $CertificatePath -CertificatePassword $CertificatePassword -ConfigurationName $ConfigurationName -Exclude $ExcludeFromSigning -SolutionDir $SolutionDir
& "$PSScriptRoot\verify_binary_signatures.ps1" -TargetDir $TargetDir -ConfigurationName $ConfigurationName -CertificatePath $CertificatePath -SolutionDir $SolutionDir
& "$PSScriptRoot\zip_files.ps1" -SolutionDir $SolutionDir -TargetDir $TargetDir -ConfigurationName $ConfigurationName

View File

@@ -43,13 +43,8 @@ param (
[string]
[Parameter(Mandatory=$true)]
# Path to the zip file to upload with the release
$ZipFilePath,
[string]
[Parameter(Mandatory=$true)]
#Path to the msi file to upload with the release
$MsiFilePath,
# Path to the folder which contains release assets to upload
$ReleaseFolderPath,
[string]
[Parameter(Mandatory=$true)]
@@ -70,7 +65,17 @@ if ($DescriptionIsBase64Encoded) {
. "$PSScriptRoot\github_functions.ps1"
$releaseFolderItems = Get-ChildItem -Path $ReleaseFolderPath
$mrngPortablePath = ($releaseFolderItems | ?{$_.Name -match "portable-[\d\.]+\.zip"}).FullName
$mrngNormalPath = ($releaseFolderItems | ?{$_.Name -match "installer-[\d\.]+\.msi"}).FullName
$mrngPortableSymbolsPath = ($releaseFolderItems | ?{$_.Name -match "mremoteng-portable-symbols-[\d\.]+\.zip"}).FullName
$mrngNormalSymbolsPath = ($releaseFolderItems | ?{$_.Name -match "mremoteng-symbols-[\d\.]+\.zip"}).FullName
$release = Publish-GitHubRelease -Owner $Owner -Repository $Repository -ReleaseTitle $ReleaseTitle -TagName $TagName -TargetCommitish $TargetCommitish -Description $Description -IsDraft ([bool]::Parse($IsDraft)) -IsPrerelease ([bool]::Parse($IsPrerelease)) -AuthToken $AuthToken
$zipUpload = Upload-GitHubReleaseAsset -UploadUri $release.upload_url -FilePath $ZipFilePath -ContentType "application/zip" -AuthToken $AuthToken
$msiUpload = Upload-GitHubReleaseAsset -UploadUri $release.upload_url -FilePath $MsiFilePath -ContentType "application/octet-stream" -AuthToken $AuthToken
$zipUpload = Upload-GitHubReleaseAsset -UploadUri $release.upload_url -FilePath $mrngPortablePath -ContentType "application/zip" -AuthToken $AuthToken -Label "Portable Edition (zip)"
$msiUpload = Upload-GitHubReleaseAsset -UploadUri $release.upload_url -FilePath $mrngNormalPath -ContentType "application/octet-stream" -AuthToken $AuthToken -Label "Normal Edition (msi)"
$portableEditionSymbols = Upload-GitHubReleaseAsset -UploadUri $release.upload_url -FilePath $mrngPortableSymbolsPath -ContentType "application/zip" -AuthToken $AuthToken -Label "Portable Edition Debug Symbols"
$normalEditionSymbols = Upload-GitHubReleaseAsset -UploadUri $release.upload_url -FilePath $mrngNormalSymbolsPath -ContentType "application/zip" -AuthToken $AuthToken -Label "Normal Edition Debug Symbols"
Write-Output (Get-GitHubRelease -Owner $Owner -Repository $Repository -ReleaseId $release.id -AuthToken $AuthToken)

View File

@@ -3,12 +3,12 @@
$SolutionDir
)
$renameTarget = $SolutionDir + "InstallerProjects\Installer\bin\Release\en-US\mRemoteNG-Installer.msi"
$renameTarget = $SolutionDir + "mRemoteNGInstaller\Installer\bin\Release\en-US\mRemoteNG-Installer.msi"
Write-Host $SolutionDir
Write-Host $renameTarget
$targetVersionedFile = "$SolutionDir\mRemoteV1\bin\Release\mRemoteNG.exe"
$targetVersionedFile = "$SolutionDir\mRemoteNG\bin\Release\mRemoteNG.exe"
$version = &"$SolutionDir\Tools\exes\sigcheck.exe" /accepteula -q -n $targetVersionedFile

View File

@@ -12,12 +12,16 @@ param (
$Exclude,
[string]
[AllowEmptyString()]
# The code signing certificate to use when signing the files.
$CertificatePath,
[string]
# Password to unlock the code signing certificate.
$CertificatePassword
$CertificatePassword,
[string]
$SolutionDir
)
Write-Output "===== Beginning $($PSCmdlet.MyInvocation.MyCommand) ====="
@@ -26,51 +30,59 @@ Write-Output "===== Beginning $($PSCmdlet.MyInvocation.MyCommand) ====="
$timeserver = "http://timestamp.verisign.com/scripts/timstamp.dll"
if ($ConfigurationName -notmatch "Release") {
Write-Output "This is not a release build - we won't sign files."
return
}
# validate release versions and if the certificate value was passed
if ($ConfigurationName -match "Release" -And ($CertificatePath)) {
if ($CertificatePath -eq "" -or !(Test-Path -Path $CertificatePath -PathType Leaf)) {
Write-Output "Certificate is not present - we won't sign files."
return
}
if(-Not ([string]::IsNullOrEmpty($Env:APPVEYOR_BUILD_FOLDER)) ) {
$CertificatePath = Join-Path -Path $SolutionDir -ChildPath $CertificatePath
}
if ($CertificatePassword -eq "") {
Write-Output "No certificate password was provided - we won't sign files."
return
}
# make sure the cert is actually available
if ($CertificatePath -eq "" -or !(Test-Path -Path $CertificatePath -PathType Leaf))
{
Write-Output "Certificate is not present - we won't sign files."
return
}
try {
$certKeyStore = [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::MachineKeySet
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertificatePath, $CertificatePassword, $certKeyStore) -ErrorAction Stop
} catch {
Write-Output "Error loading certificate file - we won't sign files."
Write-Output $Error[0]
return
}
if ($CertificatePassword -eq "") {
Write-Output "No certificate password was provided - we won't sign files."
return
}
# Sign MSI if we are building a release version and the certificate is available
Write-Output "Signing Binaries"
Write-Output "Getting files from path: $TargetDir"
$signableFiles = Get-ChildItem -Path $TargetDir -Recurse | ?{$_.Extension -match "dll|exe|msi"} | ?{$Exclude -notcontains $_.Name}
try {
$certKeyStore = [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::MachineKeySet
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertificatePath, $CertificatePassword, $certKeyStore) -ErrorAction Stop
} catch {
Write-Output "Error loading certificate file - we won't sign files."
Write-Output $Error[0]
return
}
$excluded_files = Get-ChildItem -Path $TargetDir -Recurse | ?{$_.Extension -match "dll|exe|msi"} | ?{$Exclude -contains $_.Name}
$excluded_files | ForEach-Object `
-Begin { Write-Output "The following files were excluded from signing due to being on the exclusion list:" } `
-Process { Write-Output "-- $($_.FullName)" }
# Sign MSI if we are building a release version and the certificate is available
Write-Output "Signing Binaries"
Write-Output "Getting files from path: $TargetDir"
$signableFiles = Get-ChildItem -Path $TargetDir -Recurse | ?{$_.Extension -match "dll|exe|msi"} | ?{$Exclude -notcontains $_.Name}
Write-Output "Signable files count: $($signableFiles.Count)"
$excluded_files = Get-ChildItem -Path $TargetDir -Recurse | ?{$_.Extension -match "dll|exe|msi"} | ?{$Exclude -contains $_.Name}
$excluded_files | ForEach-Object `
-Begin { Write-Output "The following files were excluded from signing due to being on the exclusion list:" } `
-Process { Write-Output "-- $($_.FullName)" }
Write-Output "Signable files count: $($signableFiles.Count)"
foreach ($file in $signableFiles) {
Set-AuthenticodeSignature -Certificate $cert -TimestampServer $timeserver -IncludeChain all -FilePath $file.FullName
}
foreach ($file in $signableFiles) {
Set-AuthenticodeSignature -Certificate $cert -TimestampServer $timeserver -IncludeChain all -FilePath $file.FullName
}
# Release certificate
if ($cert -ne $null) {
$cert.Dispose()
# Release certificate
if ($cert -ne $null) {
$cert.Dispose()
}
} else {
Write-Output "This is not a release build or CertificatePath wasn't provided - we won't sign files."
Write-Output "Config: $($ConfigurationName)`tCertPath: $($CertificatePath)"
}
Write-Output ""

View File

@@ -13,16 +13,22 @@ Write-Output "===== Beginning $($PSCmdlet.MyInvocation.MyCommand) ====="
# Remove unnecessary files from Release versions
if ($ConfigurationName -match "Release") {
Write-Output "Removing unnecessary files from Release versions"
Remove-Item -Path (Join-Path -Path $TargetDir -ChildPath "app.publish") -Recurse -Force
$test = Join-Path -Path $TargetDir -ChildPath "app.publish"
if (Test-Path $test -PathType Container) {
Remove-Item -Path (Join-Path -Path $TargetDir -ChildPath "app.publish") -Recurse -Force
}
$filesToDelete = Get-ChildItem -Path $TargetDir -Recurse -Include @(
"*.pdb",
"*.publish",
"*.xml",
"*.backup",
"*.log",
"*vshost*",
"*.tmp"
)
) -Exclude @(
"mRemoteNG.VisualElementsManifest.xml"
)
Remove-Item -Path $filesToDelete.FullName
Write-Output $filesToDelete.FullName
}

View File

@@ -9,15 +9,25 @@ param (
[string]
[Parameter(Mandatory=$true)]
[AllowEmptyString()]
# The code signing certificate to use when signing the files.
$CertificatePath
$CertificatePath,
[string]
[Parameter(Mandatory=$true)]
$SolutionDir
)
Write-Output "===== Beginning $($PSCmdlet.MyInvocation.MyCommand) ====="
# validate release versions and if the certificate is available
if ($ConfigurationName -match "Release") {
# validate release versions and if the certificate value was passed
if ($ConfigurationName -match "Release" -And ($CertificatePath)) {
if(-Not ([string]::IsNullOrEmpty($Env:APPVEYOR_BUILD_FOLDER)) ) {
$CertificatePath = Join-Path -Path $SolutionDir -ChildPath $CertificatePath
}
# make sure the cert is actually available
if ($CertificatePath -eq "" -or !(Test-Path -Path $CertificatePath -PathType Leaf))
{
Write-Output "Certificate is not present - files likely not signed - we won't verify file signatures."
@@ -42,7 +52,8 @@ if ($ConfigurationName -match "Release") {
Write-Output "All files have valid signatures."
}
} else {
Write-Output "This is not a release build - we won't verify file signatures."
Write-Output "This is not a release build or CertificatePath wasn't provided - we won't verify file signatures."
Write-Output "Config: $($ConfigurationName)`tCertPath: $($CertificatePath)"
}
Write-Output ""

72
Tools/zip_files.ps1 Normal file
View File

@@ -0,0 +1,72 @@
param (
[string]
[Parameter(Mandatory=$true)]
$SolutionDir,
[string]
[Parameter(Mandatory=$true)]
$TargetDir,
[string]
[Parameter(Mandatory=$true)]
$ConfigurationName
)
Write-Output "===== Beginning $($PSCmdlet.MyInvocation.MyCommand) ====="
$ConfigurationName = $ConfigurationName.Trim()
Write-Output "Config Name (trimmed): '$($ConfigurationName)'"
$exe = Join-Path -Path $TargetDir -ChildPath $TargetFileName
$Version = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($exe).FileVersion
Write-Output "Version is $($version)"
# Fix for AppVeyor
if(!([string]::IsNullOrEmpty($Env:APPVEYOR_BUILD_FOLDER))) {
if(!(test-path "Release")) {
New-Item -ItemType Directory -Force -Path "Release" | Out-Null
}
}
# Package debug symbols zip file
if ($ConfigurationName -match "Release") {
Write-Output "Packaging debug symbols"
if ($ConfigurationName -match "Portable") {
$zipFilePrefix = "mRemoteNG-Portable-symbols"
} else {
$zipFilePrefix = "mRemoteNG-symbols"
}
$debugFile = Join-Path -Path $TargetDir -ChildPath "mRemoteNG.pdb"
# AppVeyor build
if(!([string]::IsNullOrEmpty($Env:APPVEYOR_BUILD_FOLDER))) {
$outputZipPath = Join-Path -Path $SolutionDir -ChildPath "Release\$zipFilePrefix-$($version).zip"
7z a $outputZipPath $debugFile
}
# Local build
else {
$outputZipPath = "$($SolutionDir)Release\$zipFilePrefix-$($version).zip"
Compress-Archive $debugFile $outputZipPath -Force
}
Remove-Item $debugFile
}
# Package portable release zip file
if ($ConfigurationName -eq "Release Portable") {
Write-Output "Packaging portable ZIP file"
# AppVeyor build
if(!([string]::IsNullOrEmpty($Env:APPVEYOR_BUILD_FOLDER))) {
$outputZipPath = Join-Path -Path $SolutionDir -ChildPath "Release\mRemoteNG-Portable-$($version).zip"
7z a -bt -bd -bb1 -mx=9 -tzip -y -r $outputZipPath $TargetDir\*
}
# Local build
else {
$outputZipPath="$($SolutionDir)\Release\mRemoteNG-Portable-$($version).zip"
Compress-Archive $Source $outputZipPath -Force
}
}
Write-Output ""

View File

@@ -1,28 +0,0 @@
param (
[string]
[Parameter(Mandatory=$true)]
$SolutionDir,
[string]
[Parameter(Mandatory=$true)]
$TargetDir,
[string]
[Parameter(Mandatory=$true)]
$ConfigurationName
)
Write-Output "===== Beginning $($PSCmdlet.MyInvocation.MyCommand) ====="
$path_packageZipScript = Join-Path -Path $SolutionDir -ChildPath "Tools\build-relport.cmd"
# Package Zip
if ($ConfigurationName -match "Release" -and $ConfigurationName -match "Portable") {
Write-Output "Packaging Release Portable ZIP"
& $path_packageZipScript
}
else {
Write-Output "We will not zip anything - this isnt a portable release build."
}
Write-Output ""

View File

@@ -1,20 +0,0 @@
version: 1.0.{build}
pull_requests:
do_not_increment_build_number: true
image: Visual Studio 2017
configuration:
- Release
- Release Portable
platform: x86
clone_depth: 1
install:
- ps: C:\projects\mremoteng\mRemoteV1\Resources\CitrixReceiver.exe DONOTSTARTCC=1 ENABLE_SSON="No" /silent | out-null
before_build:
- cmd: nuget restore
build:
project: mRemoteV1.sln
verbosity: normal
test:
assemblies:
only:
- mRemoteNGTests\bin\$(configuration)\mRemoteNGTests.dll

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow" />
</configSections>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="WeifenLuo.WinFormsUI.Docking" publicKeyToken="5cded1a1a0a7b481" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.16.0.0" newVersion="2.16.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
</startup>
<specFlow>
<!-- For additional details on SpecFlow configuration options see http://go.specflow.org/doc-config -->
<!-- For additional details on SpecFlow configuration options see http://go.specflow.org/doc-config -->
<unitTestProvider name="NUnit" />
</specFlow>
</configuration>

View File

@@ -1,99 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>mRemoteNG.Specs</RootNamespace>
<AssemblyName>mRemoteNG.Specs</AssemblyName>
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="nunit.framework, Version=3.9.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
<HintPath>..\packages\NUnit.3.9.0\lib\net45\nunit.framework.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="TechTalk.SpecFlow, Version=2.2.0.0, Culture=neutral, PublicKeyToken=0778194805d6db41, processorArchitecture=MSIL">
<HintPath>..\packages\SpecFlow.2.2.1\lib\net45\TechTalk.SpecFlow.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Features\CredentialRepository.feature.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>CredentialRepository.feature</DependentUpon>
</Compile>
<Compile Include="Features\CredentialRepositoryList.feature.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>CredentialRepositoryList.feature</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="StepDefinitions\CredentialRepositoryListSteps.cs" />
<Compile Include="StepDefinitions\CredentialRepositorySteps.cs" />
<Compile Include="Utilities\CredRepoXmlFileBuilder.cs" />
<Compile Include="Utilities\XmlCredentialRepoBuilder.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="Features\CredentialRepository.feature">
<Generator>SpecFlowSingleFileGenerator</Generator>
<LastGenOutput>CredentialRepository.feature.cs</LastGenOutput>
</None>
<None Include="Features\CredentialRepositoryList.feature">
<Generator>SpecFlowSingleFileGenerator</Generator>
<LastGenOutput>CredentialRepositoryList.feature.cs</LastGenOutput>
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\mRemoteV1\mRemoteV1.csproj">
<Project>{4934a491-40bc-4e5b-9166-ea1169a220f6}</Project>
<Name>mRemoteV1</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="10.0.3" targetFramework="net46" />
<package id="NUnit" version="3.9.0" targetFramework="net46" />
<package id="NUnit.Console" version="3.7.0" targetFramework="net46" />
<package id="NUnit.ConsoleRunner" version="3.7.0" targetFramework="net46" />
<package id="NUnit.Extension.NUnitProjectLoader" version="3.6.0" targetFramework="net46" />
<package id="NUnit.Extension.NUnitV2Driver" version="3.7.0" targetFramework="net46" />
<package id="NUnit.Extension.NUnitV2ResultWriter" version="3.6.0" targetFramework="net46" />
<package id="NUnit.Extension.TeamCityEventListener" version="1.0.3" targetFramework="net46" />
<package id="NUnit.Extension.VSProjectLoader" version="3.7.0" targetFramework="net46" />
<package id="NUnit.Runners" version="3.7.0" targetFramework="net46" />
<package id="SpecFlow" version="2.2.1" targetFramework="net46" />
<package id="SpecFlow.NUnit" version="2.2.1" targetFramework="net46" />
<package id="SpecFlow.NUnit.Runners" version="2.2.1" targetFramework="net46" />
</packages>

View File

@@ -1,22 +1,22 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27130.2010
# Visual Studio Version 16
VisualStudioVersion = 16.0.28803.352
MinimumVisualStudioVersion = 14.0.25420.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mRemoteV1", "mRemoteV1\mRemoteV1.csproj", "{4934A491-40BC-4E5B-9166-EA1169A220F6}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mRemoteNG", "mRemoteNG\mRemoteNG.csproj", "{4934A491-40BC-4E5B-9166-EA1169A220F6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mRemoteNGTests", "mRemoteNGTests\mRemoteNGTests.csproj", "{1453B37F-8621-499E-B0B2-6091F76DC0BB}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "InstallerProjects", "InstallerProjects", "{4FE795BE-646E-4F1B-BAD0-A68EA26394DD}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "mRemoteNGInstaller", "mRemoteNGInstaller", "{4FE795BE-646E-4F1B-BAD0-A68EA26394DD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomActions", "InstallerProjects\CustomActions\CustomActions.csproj", "{5423D985-CB48-4344-B47F-E8C6D60C8B04}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomActions", "mRemoteNGInstaller\CustomActions\CustomActions.csproj", "{5423D985-CB48-4344-B47F-E8C6D60C8B04}"
EndProject
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Installer", "InstallerProjects\Installer\Installer.wixproj", "{F0168B9F-6815-40DF-BA53-46CEE7683B68}"
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Installer", "mRemoteNGInstaller\Installer\Installer.wixproj", "{F0168B9F-6815-40DF-BA53-46CEE7683B68}"
ProjectSection(ProjectDependencies) = postProject
{5423D985-CB48-4344-B47F-E8C6D60C8B04} = {5423D985-CB48-4344-B47F-E8C6D60C8B04}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mRemoteNG.Specs", "mRemoteNG.Specs\mRemoteNG.Specs.csproj", "{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mRemoteNGSpecs", "mRemoteNGSpecs\mRemoteNGSpecs.csproj", "{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -33,16 +33,19 @@ Global
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug Portable|Any CPU.ActiveCfg = Debug Portable|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug Portable|Any CPU.Build.0 = Debug Portable|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug Portable|x86.ActiveCfg = Debug Portable|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug Portable|x86.Build.0 = Debug Portable|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug|Any CPU.ActiveCfg = Debug|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug|Any CPU.Build.0 = Debug|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug|x86.ActiveCfg = Debug|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug|x86.Build.0 = Debug|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Installer|Any CPU.ActiveCfg = Release Portable|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Installer|Any CPU.Build.0 = Release Portable|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Installer|Any CPU.ActiveCfg = Release|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Installer|Any CPU.Build.0 = Release|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Installer|x86.ActiveCfg = Release|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Installer|x86.Build.0 = Release|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Portable|Any CPU.ActiveCfg = Release Portable|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Portable|Any CPU.Build.0 = Release Portable|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Portable|x86.ActiveCfg = Release Portable|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Portable|x86.Build.0 = Release Portable|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release|Any CPU.ActiveCfg = Release|x86
@@ -50,24 +53,27 @@ Global
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release|x86.ActiveCfg = Release|x86
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release|x86.Build.0 = Release|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Debug Portable|Any CPU.ActiveCfg = Debug Portable|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Debug Portable|Any CPU.Build.0 = Debug Portable|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Debug Portable|x86.ActiveCfg = Debug Portable|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Debug Portable|x86.Build.0 = Debug Portable|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Debug|Any CPU.ActiveCfg = Debug|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Debug|Any CPU.Build.0 = Debug|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Debug|x86.ActiveCfg = Debug|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Debug|x86.Build.0 = Debug|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Installer|Any CPU.ActiveCfg = Release Portable|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Installer|Any CPU.Build.0 = Release Portable|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Installer|Any CPU.ActiveCfg = Release|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Installer|Any CPU.Build.0 = Release|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Installer|x86.ActiveCfg = Release|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Installer|x86.Build.0 = Release|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Portable|Any CPU.ActiveCfg = Release Portable|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Portable|Any CPU.Build.0 = Release Portable|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Portable|x86.ActiveCfg = Release Portable|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Portable|x86.Build.0 = Release Portable|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release|Any CPU.ActiveCfg = Release|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release|Any CPU.Build.0 = Release|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release|x86.ActiveCfg = Release|x86
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release|x86.Build.0 = Release|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Debug Portable|Any CPU.ActiveCfg = Release|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Debug Portable|Any CPU.Build.0 = Release|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Debug Portable|Any CPU.ActiveCfg = Debug|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Debug Portable|Any CPU.Build.0 = Debug|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Debug Portable|x86.ActiveCfg = Debug|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Debug|Any CPU.ActiveCfg = Debug|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Debug|x86.ActiveCfg = Debug|x86
@@ -77,42 +83,41 @@ Global
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release Installer|x86.ActiveCfg = Release|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release Installer|x86.Build.0 = Release|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release Portable|Any CPU.ActiveCfg = Release|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release Portable|Any CPU.Build.0 = Release|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release Portable|x86.ActiveCfg = Release|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release|Any CPU.ActiveCfg = Release|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release|Any CPU.Build.0 = Release|x86
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release|x86.ActiveCfg = Release|x86
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Debug Portable|Any CPU.ActiveCfg = Debug Portable|x86
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Debug Portable|Any CPU.Build.0 = Debug Portable|x86
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Debug Portable|x86.ActiveCfg = Debug Portable|x86
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Debug|Any CPU.ActiveCfg = Debug|x86
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Debug|x86.ActiveCfg = Debug|x86
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Release Installer|Any CPU.ActiveCfg = Release Portable|x86
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Release Installer|Any CPU.Build.0 = Release Portable|x86
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Release Installer|Any CPU.ActiveCfg = Release|x86
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Release Installer|Any CPU.Build.0 = Release|x86
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Release Installer|x86.ActiveCfg = Release|x86
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Release Installer|x86.Build.0 = Release|x86
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Release Portable|Any CPU.ActiveCfg = Release Portable|x86
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Release Portable|x86.ActiveCfg = Release Portable|x86
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Release|Any CPU.ActiveCfg = Release|x86
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Release|x86.ActiveCfg = Release|x86
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Debug Portable|Any CPU.ActiveCfg = Debug|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Debug Portable|Any CPU.Build.0 = Debug|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Debug Portable|x86.ActiveCfg = Debug|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Debug Portable|x86.Build.0 = Debug|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Debug|x86.ActiveCfg = Debug|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Installer|Any CPU.ActiveCfg = Release|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Installer|Any CPU.Build.0 = Release|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Installer|x86.ActiveCfg = Release|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Installer|x86.Build.0 = Release|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Portable|Any CPU.ActiveCfg = Release|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Portable|Any CPU.Build.0 = Release|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Portable|x86.ActiveCfg = Release|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Portable|x86.Build.0 = Release|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release|Any CPU.Build.0 = Release|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release|x86.ActiveCfg = Release|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release|x86.Build.0 = Release|Any CPU
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Debug Portable|Any CPU.ActiveCfg = Release|x86
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Debug Portable|Any CPU.Build.0 = Release|x86
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Debug Portable|x86.ActiveCfg = Debug|x86
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Debug Portable|x86.Build.0 = Debug|x86
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Debug|Any CPU.ActiveCfg = Debug|x86
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Debug|x86.ActiveCfg = Debug|x86
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Debug|x86.Build.0 = Debug|x86
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Installer|Any CPU.ActiveCfg = Release|x86
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Installer|Any CPU.Build.0 = Release|x86
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Installer|x86.ActiveCfg = Release|x86
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Installer|x86.Build.0 = Release|x86
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Portable|Any CPU.ActiveCfg = Release|x86
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Portable|Any CPU.Build.0 = Release|x86
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Portable|x86.ActiveCfg = Release|x86
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Portable|x86.Build.0 = Release|x86
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release|Any CPU.ActiveCfg = Release|x86
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release|x86.ActiveCfg = Release|x86
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

53
mRemoteNG/.editorconfig Normal file
View File

@@ -0,0 +1,53 @@
# top-most EditorConfig file
root = true
[*]
end_of_line = crlf
indent_style = space
[*.xml]
indent_size = 4
[*.cs]
indent_size = 4
trim_trailing_whitespace = true
charset = utf-8-bom
# reStructuredText
[*.rst]
charset = utf-8
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
indent_size = 3
max_line_length = 120
# Organize usings
dotnet_sort_system_directives_first = true
# this. preferences
dotnet_style_qualification_for_field = false:none
dotnet_style_qualification_for_property = false:none
dotnet_style_qualification_for_method = false:none
dotnet_style_qualification_for_event = false:none
# New line preferences
csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_between_query_expression_clauses = true
# Space preferences
csharp_space_after_cast = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_around_binary_operators = before_and_after
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false

View File

@@ -0,0 +1,110 @@
using System;
using System.Diagnostics;
using System.Windows.Forms;
using Microsoft.Win32;
using mRemoteNG.App.Info;
using mRemoteNG.Messages;
using mRemoteNG.Properties;
using mRemoteNG.UI.Forms;
using mRemoteNG.UI.TaskDialog;
namespace mRemoteNG.App
{
public static class CompatibilityChecker
{
public static void CheckCompatibility(MessageCollector messageCollector)
{
CheckFipsPolicy(messageCollector);
CheckLenovoAutoScrollUtility(messageCollector);
}
private static void CheckFipsPolicy(MessageCollector messageCollector)
{
if (Settings.Default.OverrideFIPSCheck)
{
messageCollector.AddMessage(MessageClass.InformationMsg, "OverrideFIPSCheck is set. Will skip check", true);
return;
}
messageCollector.AddMessage(MessageClass.InformationMsg, "Checking FIPS policy...", true);
messageCollector.AddMessage(MessageClass.InformationMsg, $"FIPS2003: {FipsPolicyEnabledForServer2003()}", true);
messageCollector.AddMessage(MessageClass.InformationMsg, $"FIPS2008+: {FipsPolicyEnabledForServer2008AndNewer()}", true);
if (!FipsPolicyEnabledForServer2003() && !FipsPolicyEnabledForServer2008AndNewer()) return;
var errorText = string.Format(Language.ErrorFipsPolicyIncompatible, GeneralAppInfo.ProductName);
messageCollector.AddMessage(MessageClass.ErrorMsg, errorText, true);
//About to pop up a message, let's not block it...
FrmSplashScreen.getInstance().Close();
var ShouldIStayOrShouldIGo = CTaskDialog.MessageBox(Application.ProductName,
Language.CompatibilityProblemDetected, errorText, "",
"",
Language.CheckboxDoNotShowThisMessageAgain,
ETaskDialogButtons.OkCancel, ESysIcons.Warning,
ESysIcons.Warning);
if (CTaskDialog.VerificationChecked && ShouldIStayOrShouldIGo == DialogResult.OK)
{
messageCollector.AddMessage(MessageClass.ErrorMsg, "User requests that FIPS check be overridden", true);
Settings.Default.OverrideFIPSCheck = true;
Settings.Default.Save();
return;
}
if (ShouldIStayOrShouldIGo == DialogResult.Cancel)
Environment.Exit(1);
}
private static bool FipsPolicyEnabledForServer2003()
{
var regKey = Registry.LocalMachine.OpenSubKey(@"System\CurrentControlSet\Control\Lsa");
if (!(regKey?.GetValue("FIPSAlgorithmPolicy") is int fipsPolicy))
return false;
return fipsPolicy != 0;
}
private static bool FipsPolicyEnabledForServer2008AndNewer()
{
var regKey = Registry.LocalMachine.OpenSubKey(@"System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy");
if (!(regKey?.GetValue("Enabled") is int fipsPolicy))
return false;
return fipsPolicy != 0;
}
private static void CheckLenovoAutoScrollUtility(MessageCollector messageCollector)
{
messageCollector.AddMessage(MessageClass.InformationMsg, "Checking Lenovo AutoScroll Utility...", true);
if (!Settings.Default.CompatibilityWarnLenovoAutoScrollUtility)
return;
var proccesses = new Process[] { };
try
{
proccesses = Process.GetProcessesByName("virtscrl");
}
catch (InvalidOperationException ex)
{
messageCollector.AddExceptionMessage("Error in CheckLenovoAutoScrollUtility", ex);
}
if (proccesses.Length <= 0)
{
messageCollector.AddMessage(MessageClass.InformationMsg, "Lenovo AutoScroll Utility not found", true);
return;
}
messageCollector.AddMessage(MessageClass.WarningMsg, "Lenovo AutoScroll Utility found", true);
CTaskDialog.MessageBox(Application.ProductName, Language.CompatibilityProblemDetected,
string.Format(Language.CompatibilityLenovoAutoScrollUtilityDetected,
Application.ProductName), "",
"", Language.CheckboxDoNotShowThisMessageAgain, ETaskDialogButtons.Ok,
ESysIcons.Warning,
ESysIcons.Warning);
if (CTaskDialog.VerificationChecked)
Settings.Default.CompatibilityWarnLenovoAutoScrollUtility = false;
}
}
}

116
mRemoteNG/App/Export.cs Normal file
View File

@@ -0,0 +1,116 @@
using System;
using System.Linq;
using System.Windows.Forms;
using mRemoteNG.Config.Connections;
using mRemoteNG.Config.DataProviders;
using mRemoteNG.Config.Serializers;
using mRemoteNG.Config.Serializers.ConnectionSerializers.Csv;
using mRemoteNG.Config.Serializers.ConnectionSerializers.Xml;
using mRemoteNG.Connection;
using mRemoteNG.Container;
using mRemoteNG.Security;
using mRemoteNG.Security.Factories;
using mRemoteNG.Tree;
using mRemoteNG.Tree.Root;
using mRemoteNG.UI.Forms;
namespace mRemoteNG.App
{
public static class Export
{
public static void ExportToFile(ConnectionInfo selectedNode, IConnectionTreeModel connectionTreeModel)
{
try
{
var saveFilter = new SaveFilter();
using (var exportForm = new FrmExport())
{
if (selectedNode?.GetTreeNodeType() == TreeNodeType.Container)
exportForm.SelectedFolder = selectedNode as ContainerInfo;
else if (selectedNode?.GetTreeNodeType() == TreeNodeType.Connection)
{
if (selectedNode.Parent.GetTreeNodeType() == TreeNodeType.Container)
exportForm.SelectedFolder = selectedNode.Parent;
exportForm.SelectedConnection = selectedNode;
}
if (exportForm.ShowDialog(FrmMain.Default) != DialogResult.OK)
return;
ConnectionInfo exportTarget;
switch (exportForm.Scope)
{
case FrmExport.ExportScope.SelectedFolder:
exportTarget = exportForm.SelectedFolder;
break;
case FrmExport.ExportScope.SelectedConnection:
exportTarget = exportForm.SelectedConnection;
break;
default:
exportTarget = connectionTreeModel.RootNodes.First(node => node is RootNodeInfo);
break;
}
saveFilter.SaveUsername = exportForm.IncludeUsername;
saveFilter.SavePassword = exportForm.IncludePassword;
saveFilter.SaveDomain = exportForm.IncludeDomain;
saveFilter.SaveInheritance = exportForm.IncludeInheritance;
saveFilter.SaveCredentialId = exportForm.IncludeAssignedCredential;
SaveExportFile(exportForm.FileName, exportForm.SaveFormat, saveFilter, exportTarget);
}
}
catch (Exception ex)
{
Runtime.MessageCollector.AddExceptionMessage("App.Export.ExportToFile() failed.", ex);
}
}
private static void SaveExportFile(string fileName,
SaveFormat saveFormat,
SaveFilter saveFilter,
ConnectionInfo exportTarget)
{
try
{
ISerializer<ConnectionInfo, string> serializer;
switch (saveFormat)
{
case SaveFormat.mRXML:
var cryptographyProvider = new CryptoProviderFactoryFromSettings().Build();
var rootNode = exportTarget.GetRootParent() as RootNodeInfo;
var connectionNodeSerializer = new XmlConnectionNodeSerializer27(
cryptographyProvider,
rootNode?.PasswordString
.ConvertToSecureString() ??
new RootNodeInfo(RootNodeType
.Connection)
.PasswordString
.ConvertToSecureString(),
saveFilter);
serializer = new XmlConnectionsSerializer(cryptographyProvider, connectionNodeSerializer);
break;
case SaveFormat.mRCSV:
serializer = new CsvConnectionsSerializerMremotengFormat(saveFilter, Runtime.CredentialService.RepositoryList);
break;
default:
throw new ArgumentOutOfRangeException(nameof(saveFormat), saveFormat, null);
}
var serializedData = serializer.Serialize(exportTarget);
var fileDataProvider = new FileDataProvider(fileName);
fileDataProvider.Save(serializedData);
}
catch (Exception ex)
{
Runtime.MessageCollector.AddExceptionStackTrace($"Export.SaveExportFile(\"{fileName}\") failed.", ex);
}
finally
{
Runtime.ConnectionsService.RemoteConnectionsSyncronizer?.Enable();
}
}
}
}

View File

@@ -1,8 +1,9 @@
using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using mRemoteNG.Config.Import;
using mRemoteNG.Connection;
using mRemoteNG.Connection.Protocol;
using mRemoteNG.Container;
using mRemoteNG.Tools;
@@ -22,35 +23,25 @@ namespace mRemoteNG.App
openFileDialog.Multiselect = true;
var fileTypes = new List<string>();
fileTypes.AddRange(new[] {Language.strFilterAllImportable, "*.xml;*.rdp;*.rdg;*.dat;*.csv"});
fileTypes.AddRange(new[] {Language.strFiltermRemoteXML, "*.xml"});
fileTypes.AddRange(new[] {Language.strFiltermRemoteCSV, "*.csv"});
fileTypes.AddRange(new[] {Language.strFilterRDP, "*.rdp"});
fileTypes.AddRange(new[] {Language.strFilterRdgFiles, "*.rdg"});
fileTypes.AddRange(new[] {Language.strFilterPuttyConnectionManager, "*.dat"});
fileTypes.AddRange(new[] {Language.strFilterAll, "*.*"});
fileTypes.AddRange(new[] {Language.FilterAllImportable, "*.xml;*.rdp;*.rdg;*.dat;*.csv"});
fileTypes.AddRange(new[] {Language.FiltermRemoteXML, "*.xml"});
fileTypes.AddRange(new[] {Language.FiltermRemoteCSV, "*.csv"});
fileTypes.AddRange(new[] {Language.FilterRDP, "*.rdp"});
fileTypes.AddRange(new[] {Language.FilterRdgFiles, "*.rdg"});
fileTypes.AddRange(new[] {Language.FilterPuttyConnectionManager, "*.dat"});
fileTypes.AddRange(new[] {Language.FilterAll, "*.*"});
openFileDialog.Filter = string.Join("|", fileTypes.ToArray());
if (openFileDialog.ShowDialog() != DialogResult.OK)
return;
foreach (var fileName in openFileDialog.FileNames)
{
try
{
var importer = BuildConnectionImporterFromFileExtension(fileName);
importer.Import(fileName, importDestinationContainer);
}
catch (Exception ex)
{
MessageBox.Show(string.Format(Language.strImportFileFailedContent, fileName), Language.strImportFileFailedMainInstruction,
MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
Runtime.MessageCollector.AddExceptionMessage("Unable to import file.", ex);
}
}
Runtime.ConnectionsService.SaveConnectionsAsync();
HeadlessFileImport(
openFileDialog.FileNames,
importDestinationContainer,
Runtime.ConnectionsService,
fileName => MessageBox.Show(string.Format(Language.ImportFileFailedContent, fileName), Language.AskUpdatesMainInstruction,
MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1));
}
}
catch (Exception ex)
@@ -59,12 +50,40 @@ namespace mRemoteNG.App
}
}
public static void ImportFromActiveDirectory(string ldapPath, ContainerInfo importDestinationContainer, bool importSubOu)
public static void HeadlessFileImport(
IEnumerable<string> filePaths,
ContainerInfo importDestinationContainer,
ConnectionsService connectionsService,
Action<string> exceptionAction = null)
{
using (connectionsService.BatchedSavingContext())
{
foreach (var fileName in filePaths)
{
try
{
var importer = BuildConnectionImporterFromFileExtension(fileName);
importer.Import(fileName, importDestinationContainer);
}
catch (Exception ex)
{
exceptionAction?.Invoke(fileName);
Runtime.MessageCollector.AddExceptionMessage($"Error occurred while importing file '{fileName}'.", ex);
}
}
}
}
public static void ImportFromActiveDirectory(string ldapPath,
ContainerInfo importDestinationContainer,
bool importSubOu)
{
try
{
ActiveDirectoryImporter.Import(ldapPath, importDestinationContainer, importSubOu);
Runtime.ConnectionsService.SaveConnectionsAsync();
using (Runtime.ConnectionsService.BatchedSavingContext())
{
ActiveDirectoryImporter.Import(ldapPath, importDestinationContainer, importSubOu);
}
}
catch (Exception ex)
{
@@ -72,13 +91,17 @@ namespace mRemoteNG.App
}
}
public static void ImportFromPortScan(IEnumerable<ScanHost> hosts, ProtocolType protocol, ContainerInfo importDestinationContainer)
public static void ImportFromPortScan(IEnumerable<ScanHost> hosts,
ProtocolType protocol,
ContainerInfo importDestinationContainer)
{
try
{
var importer = new PortScanImporter(protocol);
importer.Import(hosts, importDestinationContainer);
Runtime.ConnectionsService.SaveConnectionsAsync();
using (Runtime.ConnectionsService.BatchedSavingContext())
{
var importer = new PortScanImporter(protocol);
importer.Import(hosts, importDestinationContainer);
}
}
catch (Exception ex)
{

View File

@@ -1,10 +1,10 @@
namespace mRemoteNG.App.Info
{
public static class ConnectionsFileInfo
public static class ConnectionsFileInfo
{
public static readonly string DefaultConnectionsPath = SettingsFileInfo.SettingsPath;
public static readonly string DefaultConnectionsFile = "confCons.xml";
public static readonly string DefaultConnectionsFileNew = "confConsNew.xml";
public static readonly double ConnectionFileVersion = 2.6;
public static readonly double ConnectionFileVersion = 2.8;
}
}

View File

@@ -0,0 +1,62 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Threading;
using System.Windows.Forms;
using static System.Environment;
namespace mRemoteNG.App.Info
{
public static class GeneralAppInfo
{
public const string UrlHome = "https://www.mremoteng.org";
public const string UrlDonate = "https://mremoteng.org/contribute";
public const string UrlForum = "https://www.reddit.com/r/mRemoteNG";
public const string UrlBugs = "https://bugs.mremoteng.org";
public const string UrlDocumentation = "https://mremoteng.readthedocs.io/en/latest/";
public static string ApplicationVersion = Application.ProductVersion;
public static readonly string ProductName = Application.ProductName;
public static readonly string Copyright =
((AssemblyCopyrightAttribute)Attribute.GetCustomAttribute(Assembly.GetExecutingAssembly(),
typeof(AssemblyCopyrightAttribute), false))
.Copyright;
public static readonly string HomePath = Path.GetDirectoryName(Assembly.GetEntryAssembly()?.Location);
//public static string ReportingFilePath = "";
public static readonly string PuttyPath = HomePath + "\\PuTTYNG.exe";
public static string UserAgent
{
get
{
var details = new List<string>
{
"compatible",
OSVersion.Platform == PlatformID.Win32NT
? $"Windows NT {OSVersion.Version.Major}.{OSVersion.Version.Minor}"
: OSVersion.VersionString
};
if (Is64BitProcess)
{
details.Add("WOW64");
}
details.Add(Thread.CurrentThread.CurrentUICulture.Name);
details.Add($".NET CLR {Environment.Version}");
var detailsString = string.Join("; ", details.ToArray());
return $"Mozilla/5.0 ({detailsString}) {ProductName}/{ApplicationVersion}";
}
}
public static Version GetApplicationVersion()
{
System.Version.TryParse(ApplicationVersion, out var v);
return v;
}
}
}

View File

@@ -0,0 +1,29 @@
using System;
using System.IO;
using System.Reflection;
using System.Windows.Forms;
using mRemoteNG.Connection;
namespace mRemoteNG.App.Info
{
public static class SettingsFileInfo
{
private static readonly string ExePath =
Path.GetDirectoryName(Assembly.GetAssembly(typeof(ConnectionInfo))?.Location);
public static string SettingsPath =>
Runtime.IsPortableEdition
? ExePath
: Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\" + Application.ProductName;
public static string LayoutFileName { get; } = "pnlLayout.xml";
public static string ExtAppsFilesName { get; } = "extApps.xml";
public static string ThemesFileName { get; } = "Themes.xml";
public static string ThemeFolder { get; } =
SettingsPath != null ? Path.Combine(SettingsPath, "Themes") : String.Empty;
public static string InstalledThemeFolder { get; } =
ExePath != null ? Path.Combine(ExePath, "Themes") : String.Empty;
}
}

View File

@@ -1,4 +1,6 @@
using System;
using mRemoteNG.Properties;
// ReSharper disable InconsistentNaming
namespace mRemoteNG.App.Info
@@ -6,17 +8,16 @@ namespace mRemoteNG.App.Info
public static class UpdateChannelInfo
{
public const string STABLE = "Stable";
public const string BETA = "Beta";
public const string DEV = "Development";
public const string PREVIEW = "Preview";
public const string NIGHTLY = "Nightly";
/* no #if here since they are used for unit tests as well */
public const string STABLE_PORTABLE = "update-portable.txt";
public const string BETA_PORTABLE = "beta-update-portable.txt";
public const string DEV_PORTABLE = "dev-update-portable.txt";
public const string PREVIEW_PORTABLE = "preview-update-portable.txt";
public const string NIGHTLY_PORTABLE = "nightly-update-portable.txt";
public const string STABLE_MSI = "update.txt";
public const string BETA_MSI = "beta-update.txt";
public const string DEV_MSI = "dev-update.txt";
public const string PREVIEW_MSI = "preview-update.txt";
public const string NIGHTLY_MSI = "nightly-update.txt";
public static Uri GetUpdateChannelInfo()
@@ -27,7 +28,9 @@ namespace mRemoteNG.App.Info
private static string GetChannelFileName(string channel)
{
return Runtime.IsPortableEdition ? GetChannelFileNamePortableEdition(channel) : GetChannelFileNameNormalEdition(channel);
return Runtime.IsPortableEdition
? GetChannelFileNamePortableEdition(channel)
: GetChannelFileNameNormalEdition(channel);
}
private static string GetChannelFileNameNormalEdition(string channel)
@@ -36,10 +39,10 @@ namespace mRemoteNG.App.Info
{
case STABLE:
return STABLE_MSI;
case BETA:
return BETA_MSI;
case DEV:
return DEV_MSI;
case PREVIEW:
return PREVIEW_MSI;
case NIGHTLY:
return NIGHTLY_MSI;
default:
return STABLE_MSI;
}
@@ -51,10 +54,10 @@ namespace mRemoteNG.App.Info
{
case STABLE:
return STABLE_PORTABLE;
case BETA:
return BETA_PORTABLE;
case DEV:
return DEV_PORTABLE;
case PREVIEW:
return PREVIEW_PORTABLE;
case NIGHTLY:
return NIGHTLY_PORTABLE;
default:
return STABLE_PORTABLE;
}
@@ -62,12 +65,13 @@ namespace mRemoteNG.App.Info
private static Uri GetUpdateTxtUri(string channel)
{
return new Uri(new Uri(Settings.Default.UpdateAddress), new Uri(GetChannelFileName(channel), UriKind.Relative));
return new Uri(new Uri(Settings.Default.UpdateAddress),
new Uri(GetChannelFileName(channel), UriKind.Relative));
}
private static bool IsValidChannel(string s)
{
return s.Equals(STABLE) || s.Equals(BETA) || s.Equals(DEV);
return s.Equals(STABLE) || s.Equals(PREVIEW) || s.Equals(NIGHTLY);
}
}
}

View File

@@ -11,7 +11,7 @@ namespace mRemoteNG.App.Initialization
public ConnectionIconLoader(string folderPath)
{
if(string.IsNullOrEmpty(folderPath))
if (string.IsNullOrEmpty(folderPath))
throw new ArgumentException($"{nameof(folderPath)} must be a valid folder path.");
_path = folderPath;

View File

@@ -0,0 +1,38 @@
using System;
using System.IO;
using System.Linq;
using mRemoteNG.Config.Connections;
using mRemoteNG.Connection;
using mRemoteNG.Credential;
using mRemoteNG.Tools;
using mRemoteNG.Properties;
namespace mRemoteNG.App.Initialization
{
public class CredsAndConsSetup
{
public void LoadCredsAndCons(ConnectionsService connectionsService, CredentialService credentialService, SaveConnectionsOnEdit connectionsOnEdit)
{
connectionsOnEdit.Subscribe(connectionsService);
if (Settings.Default.FirstStart && !Settings.Default.LoadConsFromCustomLocation &&
!File.Exists(connectionsService.GetStartupConnectionFileName()))
connectionsService.NewConnectionsFile(connectionsService.GetStartupConnectionFileName());
credentialService.LoadRepositoryList();
LoadDefaultConnectionCredentials(credentialService);
Runtime.LoadConnections();
}
private void LoadDefaultConnectionCredentials(CredentialService credentialService)
{
var defaultCredId = Settings.Default.ConDefaultCredentialRecord;
var matchedCredentials = credentialService
.GetCredentialRecords()
.Where(record => record.Id.Equals(defaultCredId))
.ToArray();
DefaultConnectionInfo.Instance.CredentialRecordId = Optional<Guid>.FromNullable(matchedCredentials.FirstOrDefault()?.Id);
}
}
}

View File

@@ -0,0 +1,75 @@
using System.Collections.Generic;
using System.Linq;
using mRemoteNG.Messages;
using mRemoteNG.Messages.MessageFilteringOptions;
using mRemoteNG.Messages.MessageWriters;
using mRemoteNG.Messages.WriterDecorators;
namespace mRemoteNG.App.Initialization
{
public class MessageCollectorSetup
{
public static void SetupMessageCollector(MessageCollector messageCollector,
IList<IMessageWriter> messageWriterList)
{
messageCollector.CollectionChanged += (o, args) =>
{
var messages = args.NewItems.Cast<IMessage>().ToArray();
foreach (var printer in messageWriterList)
foreach (var message in messages)
printer.Write(message);
};
}
public static void BuildMessageWritersFromSettings(IList<IMessageWriter> messageWriterList)
{
#if DEBUG
messageWriterList.Add(BuildDebugConsoleWriter());
#endif
messageWriterList.Add(BuildTextLogMessageWriter());
messageWriterList.Add(BuildNotificationPanelMessageWriter());
messageWriterList.Add(BuildPopupMessageWriter());
}
private static IMessageWriter BuildDebugConsoleWriter()
{
return new DebugConsoleMessageWriter();
}
private static IMessageWriter BuildTextLogMessageWriter()
{
return new MessageTypeFilterDecorator(
new LogMessageTypeFilteringOptions(),
new TextLogMessageWriter(Logger.Instance)
);
}
private static IMessageWriter BuildNotificationPanelMessageWriter()
{
return new OnlyLogMessageFilter(
new MessageTypeFilterDecorator(
new
NotificationPanelMessageFilteringOptions(),
new MessageFocusDecorator(
Windows.ErrorsForm,
new
NotificationPanelSwitchOnMessageFilteringOptions(),
new
NotificationPanelMessageWriter(Windows
.ErrorsForm)
)
)
);
}
private static IMessageWriter BuildPopupMessageWriter()
{
return new OnlyLogMessageFilter(
new MessageTypeFilterDecorator(
new PopupMessageFilteringOptions(),
new PopupMessageWriter()
)
);
}
}
}

View File

@@ -43,7 +43,8 @@ namespace mRemoteNG.App.Initialization
try
{
foreach (var o in new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem WHERE Primary=True").Get())
foreach (var o in new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem WHERE Primary=True")
.Get())
{
var managementObject = (ManagementObject)o;
osVersion = Convert.ToString(managementObject.GetPropertyValue("Caption")).Trim();
@@ -54,6 +55,7 @@ namespace mRemoteNG.App.Initialization
{
_messageCollector.AddExceptionMessage("Error retrieving operating system information from WMI.", ex);
}
var osData = string.Join(" ", osVersion, servicePack);
return osData;
}
@@ -65,6 +67,7 @@ namespace mRemoteNG.App.Initialization
{
servicePack = $"Service Pack {servicePackNumber}";
}
return servicePack;
}
@@ -73,7 +76,8 @@ namespace mRemoteNG.App.Initialization
var architecture = string.Empty;
try
{
foreach (var o in new ManagementObjectSearcher("SELECT * FROM Win32_Processor WHERE DeviceID=\'CPU0\'").Get())
foreach (var o in new ManagementObjectSearcher("SELECT AddressWidth FROM Win32_Processor WHERE DeviceID=\'CPU0\'")
.Get())
{
var managementObject = (ManagementObject)o;
var addressWidth = Convert.ToInt32(managementObject.GetPropertyValue("AddressWidth"));
@@ -84,6 +88,7 @@ namespace mRemoteNG.App.Initialization
{
_messageCollector.AddExceptionMessage("Error retrieving operating system address width from WMI.", ex);
}
return architecture;
}
@@ -91,7 +96,7 @@ namespace mRemoteNG.App.Initialization
{
var data = $"{Application.ProductName} {Application.ProductVersion}";
if (Runtime.IsPortableEdition)
data += $" {Language.strLabelPortableEdition}";
data += $" {Language.PortableEdition}";
data += " starting.";
_messageCollector.AddMessage(MessageClass.InformationMsg, data, true);
}
@@ -110,7 +115,8 @@ namespace mRemoteNG.App.Initialization
private void LogCultureData()
{
var data = $"System Culture: {Thread.CurrentThread.CurrentUICulture.Name}/{Thread.CurrentThread.CurrentUICulture.NativeName}";
var data =
$"System Culture: {Thread.CurrentThread.CurrentUICulture.Name}/{Thread.CurrentThread.CurrentUICulture.NativeName}";
_messageCollector.AddMessage(MessageClass.InformationMsg, data, true);
}
}

View File

@@ -4,11 +4,13 @@ using System.Windows.Forms;
using log4net;
using log4net.Appender;
using log4net.Config;
using mRemoteNG.Properties;
// ReSharper disable ArrangeAccessorOwnerBody
namespace mRemoteNG.App
{
public class Logger
public class Logger
{
public static readonly Logger Instance = new Logger();
@@ -23,7 +25,7 @@ namespace mRemoteNG.App
private void Initialize()
{
XmlConfigurator.Configure();
XmlConfigurator.Configure(LogManager.CreateRepository("mRemoteNG"));
if (string.IsNullOrEmpty(Settings.Default.LogFilePath))
Settings.Default.LogFilePath = BuildLogFilePath();
@@ -32,7 +34,7 @@ namespace mRemoteNG.App
public void SetLogPath(string path)
{
var repository = LogManager.GetRepository();
var repository = LogManager.GetRepository("mRemoteNG");
var appenders = repository.GetAppenders();
foreach (var appender in appenders)
@@ -42,7 +44,8 @@ namespace mRemoteNG.App
fileAppender.File = path;
fileAppender.ActivateOptions();
}
Log = LogManager.GetLogger("Logger");
Log = LogManager.GetLogger("mRemoteNG", "Logger");
}
private static string BuildLogFilePath()
@@ -56,7 +59,8 @@ namespace mRemoteNG.App
private static string GetLogPathNormalEdition()
{
return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), Application.ProductName);
return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
Application.ProductName);
}
private static string GetLogPathPortableEdition()

View File

@@ -4,6 +4,7 @@ using System.Runtime.ConstrainedExecution;
using System.Runtime.InteropServices;
using System.Text;
#pragma warning disable 649
#pragma warning disable 169
namespace mRemoteNG.App
@@ -11,33 +12,41 @@ namespace mRemoteNG.App
public static class NativeMethods
{
#region Functions
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern bool AppendMenu(IntPtr hMenu, int uFlags, IntPtr uIDNewItem, string lpNewItem);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern IntPtr CreatePopupMenu();
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string lclassName, string windowTitle);
internal static extern IntPtr FindWindowEx(IntPtr parentHandle,
IntPtr childAfter,
string lclassName,
string windowTitle);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern bool InsertMenu(IntPtr hMenu, int uPosition, int uFlags, IntPtr uIDNewItem, string lpNewItem);
internal static extern bool InsertMenu(IntPtr hMenu,
int uPosition,
int uFlags,
IntPtr uIDNewItem,
string lpNewItem);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern int IsIconic(IntPtr hWnd);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern bool MoveWindow(IntPtr hWnd, int x, int y, int cx, int cy, bool repaint);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern bool PostMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam);
@@ -54,31 +63,38 @@ namespace mRemoteNG.App
internal static extern IntPtr SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, string lParam);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
internal static extern IntPtr SendMessage([In] IntPtr hWnd, [In] uint msg, [Out] StringBuilder wParam, [In] IntPtr lParam);
internal static extern IntPtr SendMessage([In] IntPtr hWnd,
[In] uint msg,
[Out] StringBuilder wParam,
[In] IntPtr lParam);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern IntPtr SetClipboardViewer(IntPtr hWndNewViewer);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern bool SetMenuItemBitmaps(IntPtr hMenu, int uPosition, int uFlags, IntPtr hBitmapUnchecked, IntPtr hBitmapChecked);
internal static extern bool SetMenuItemBitmaps(IntPtr hMenu,
int uPosition,
int uFlags,
IntPtr hBitmapUnchecked,
IntPtr hBitmapChecked);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern long SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern int ShowWindow(IntPtr hWnd, int nCmdShow);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern IntPtr WindowFromPoint(Point point);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern int GetClassName(IntPtr hWnd, System.Text.StringBuilder lpClassName, int nMaxCount);
internal static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern int GetDlgCtrlID(IntPtr hwndCtl);
@@ -92,9 +108,11 @@ namespace mRemoteNG.App
[DllImport("kernel32", SetLastError = true)]
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
internal static extern bool CloseHandle(IntPtr handle);
#endregion
#region Structures
[StructLayout(LayoutKind.Sequential)]
internal struct WINDOWPOS
{
@@ -130,60 +148,71 @@ namespace mRemoteNG.App
public long right;
public long bottom;
}
#endregion
#region Helpers
public static int MAKELONG(int wLow, int wHigh)
{
return wLow | wHigh << 16;
}
public static int MAKELPARAM(ref int wLow, ref int wHigh)
{
return MAKELONG(wLow, wHigh);
}
public static int LOWORD(int value)
{
return value & 0xFFFF;
}
public static int LOWORD(IntPtr value)
{
return LOWORD(value.ToInt32());
}
public static int HIWORD(int value)
{
return value >> 16;
}
public static int HIWORD(IntPtr value)
{
return HIWORD(value.ToInt32());
}
#endregion
#region Constants
public const int TRUE = 1;
#region GetWindowLong
public const int GWL_STYLE = (-16);
#endregion
#region AppendMenu / ModifyMenu / DeleteMenu / RemoveMenu
public const int MF_BYCOMMAND = 0x0;
public const int MF_BYPOSITION = 0x400;
public const int MF_STRING = 0x0;
public const int MF_POPUP = 0x10;
public const int MF_SEPARATOR = 0x800;
#endregion
#region WM_LBUTTONDOWN / WM_LBUTTONUP
public const int MK_LBUTTON = 0x1;
#endregion
#region ShowWindow
public const uint SW_HIDE = 0;
public const uint SW_SHOWNORMAL = 1;
public const uint SW_SHOWMINIMIZED = 2;
@@ -195,9 +224,11 @@ namespace mRemoteNG.App
public const uint SW_SHOWMINNOACTIVE = 7;
public const uint SW_SHOWNA = 8;
public const uint SW_RESTORE = 9;
#endregion
#region SetWindowPos / WM_WINDOWPOSCHANGING / WM_WINDOWPOSCHANGED
/// <summary>
/// Retains the current size (ignores the cx and cy parameters).
/// </summary>
@@ -269,12 +300,12 @@ namespace mRemoteNG.App
public const int SWP_NOCLIENTMOVE = 0x1000;
/// <summary>
/// Prevents generation of the WM_SYNCPAINT message.
/// Prevents generation of the WM_SYNCPAINT message.
/// </summary>
public const int SWP_DEFERERASE = 0x2000;
/// <summary>
/// If the calling thread and the thread that owns the window are attached to different input queues, the system posts the request to the thread that owns the window. This prevents the calling thread from blocking its execution while other threads process the request.
/// If the calling thread and the thread that owns the window are attached to different input queues, the system posts the request to the thread that owns the window. This prevents the calling thread from blocking its execution while other threads process the request.
/// </summary>
public const int SWP_ASYNCWINDOWPOS = 0x4000;
@@ -282,15 +313,19 @@ namespace mRemoteNG.App
///
/// </summary>
public const int SWP_STATECHANGED = 0x8000;
#endregion
#region Window Placement Flags (WPF)
public const uint WPF_SETMINPOSITION = 0x1;
public const uint WPF_RESTORETOMAXIMIZED = 0x2;
public const uint WPF_ASYNCWINDOWPLACEMENT = 0x4;
#endregion
#region WM_ACTIVATE
/// <summary>
///
/// </summary>
@@ -303,14 +338,16 @@ namespace mRemoteNG.App
/// <summary>
/// Sent to both the window being activated and the window being deactivated.
/// If the windows use the same input queue, the message is sent synchronously, first to the window procedure of the
/// top-level window being deactivated, then to the window procedure of the top-level window being activated. If the
/// If the windows use the same input queue, the message is sent synchronously, first to the window procedure of the
/// top-level window being deactivated, then to the window procedure of the top-level window being activated. If the
/// windows use different input queues, the message is sent asynchronously, so the window is activated immediately.
/// </summary>
public const int WA_CLICKACTIVE = 0x2;
#endregion
#region Window Messages
/// <summary>
/// Sent when an application requests that a window be created by calling the CreateWindowEx or CreateWindow function. (The message is sent before the function returns.) The window procedure of the new window receives this message after the window is created, but before the window becomes visible.
/// </summary>
@@ -332,7 +369,7 @@ namespace mRemoteNG.App
public const int WM_SETTEXT = 0xC;
/// <summary>
/// Copies the text that corresponds to a window into a buffer provided by the caller.
/// Copies the text that corresponds to a window into a buffer provided by the caller.
/// </summary>
public const int WM_GETTEXT = 0xD;
@@ -347,7 +384,7 @@ namespace mRemoteNG.App
public const int WM_ACTIVATEAPP = 0x1C;
/// <summary>
/// Sent to a window if the mouse causes the cursor to move within a window and mouse input is not captured.
/// Sent to a window if the mouse causes the cursor to move within a window and mouse input is not captured.
/// </summary>
public const int WM_SETCURSOR = 0x20;
@@ -372,12 +409,12 @@ namespace mRemoteNG.App
public const int WM_WINDOWPOSCHANGED = 0x47;
/// <summary>
/// Posted to the window with the keyboard focus when a nonsystem key is pressed. A nonsystem key is a key that is pressed when the ALT key is not pressed.
/// Posted to the window with the keyboard focus when a nonsystem key is pressed. A nonsystem key is a key that is pressed when the ALT key is not pressed.
/// </summary>
public const int WM_KEYDOWN = 0x100;
/// <summary>
/// Posted to the window with the keyboard focus when a nonsystem key is released. A nonsystem key is a key that is pressed when the ALT key is not pressed, or a keyboard key that is pressed when a window has the keyboard focus.
/// Posted to the window with the keyboard focus when a nonsystem key is released. A nonsystem key is a key that is pressed when the ALT key is not pressed, or a keyboard key that is pressed when a window has the keyboard focus.
/// </summary>
public const int WM_KEYUP = 0x101;
@@ -432,7 +469,7 @@ namespace mRemoteNG.App
public const int WM_MBUTTONUP = 0x208;
/// <summary>
/// Posted when the user presses the first or second X button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.
/// Posted when the user presses the first or second X button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.
/// </summary>
public const int WM_XBUTTONDOWN = 0x20B;
@@ -447,47 +484,56 @@ namespace mRemoteNG.App
public const int WM_PARENTNOTIFY = 0x210;
/// <summary>
/// Sent one time to a window after it enters the moving or sizing modal loop. The window enters the moving or sizing modal loop when the user clicks the window's title bar or sizing border, or when the window passes the WM_SYSCOMMAND message to the DefWindowProc function and the wParam parameter of the message specifies the SC_MOVE or SC_SIZE value. The operation is complete when DefWindowProc returns.
/// Sent one time to a window after it enters the moving or sizing modal loop. The window enters the moving or sizing modal loop when the user clicks the window's title bar or sizing border, or when the window passes the WM_SYSCOMMAND message to the DefWindowProc function and the wParam parameter of the message specifies the SC_MOVE or SC_SIZE value. The operation is complete when DefWindowProc returns.
/// </summary>
public const int WM_ENTERSIZEMOVE = 0x231;
/// <summary>
/// Sent one time to a window, after it has exited the moving or sizing modal loop. The window enters the moving or sizing modal loop when the user clicks the window's title bar or sizing border, or when the window passes the WM_SYSCOMMAND message to the DefWindowProc function and the wParam parameter of the message specifies the SC_MOVE or SC_SIZE value. The operation is complete when DefWindowProc returns.
/// Sent one time to a window, after it has exited the moving or sizing modal loop. The window enters the moving or sizing modal loop when the user clicks the window's title bar or sizing border, or when the window passes the WM_SYSCOMMAND message to the DefWindowProc function and the wParam parameter of the message specifies the SC_MOVE or SC_SIZE value. The operation is complete when DefWindowProc returns.
/// </summary>
public const int WM_EXITSIZEMOVE = 0x232;
/// <summary>
/// Sent to the first window in the clipboard viewer chain when the content of the clipboard changes. This enables a clipboard viewer window to display the new content of the clipboard.
/// Sent to the first window in the clipboard viewer chain when the content of the clipboard changes. This enables a clipboard viewer window to display the new content of the clipboard.
/// </summary>
public const int WM_DRAWCLIPBOARD = 0x308;
/// <summary>
/// Sent to the first window in the clipboard viewer chain when a window is being removed from the chain.
/// Sent to the first window in the clipboard viewer chain when a window is being removed from the chain.
/// </summary>
public const int WM_CHANGECBCHAIN = 0x30D;
#endregion
#region Window Styles
public const int WS_MAXIMIZE = 0x1000000;
public const int WS_VISIBLE = 0x10000000;
public const int WS_CHILD = 0x40000000;
public const int WS_EX_MDICHILD = 0x40;
#endregion
#region Virtual Key Codes
public const int VK_CONTROL = 0x11;
public const int VK_C = 0x67;
#endregion
#region EM
public const uint ECM_FIRST = 0x1500;
public const uint EM_SETCUEBANNER = ECM_FIRST + 1;
public const uint EM_GETCUEBANNER = ECM_FIRST + 2;
#endregion
#region LB
public const int LB_ERR = -1;
public const int LB_SELECTSTRING = 0x18C;
#endregion
#region TCM

View File

@@ -1,14 +1,15 @@
using mRemoteNG.UI.Forms;
using System;
using System;
using System.Diagnostics;
using System.Threading;
using System.Windows.Forms;
using mRemoteNG.Properties;
using mRemoteNG.UI.Forms;
namespace mRemoteNG.App
{
public static class ProgramRoot
{
private static Mutex mutex;
private static Mutex _mutex;
/// <summary>
/// The main entry point for the application.
@@ -24,21 +25,23 @@ namespace mRemoteNG.App
private static void StartApplication()
{
CatchAllUnhandledExceptions();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var frmSplashScreen = FrmSplashScreen.getInstance();
frmSplashScreen.Show();
Application.Run(FrmMain.Default);
}
public static void CloseSingletonInstanceMutex()
{
mutex?.Close();
_mutex?.Close();
}
private static void StartApplicationAsSingleInstance()
{
const string mutexID = "mRemoteNG_SingleInstanceMutex";
bool newInstanceCreated;
mutex = new Mutex(false, mutexID, out newInstanceCreated);
_mutex = new Mutex(false, mutexID, out var newInstanceCreated);
if (!newInstanceCreated)
{
SwitchToCurrentInstance();
@@ -46,7 +49,7 @@ namespace mRemoteNG.App
}
StartApplication();
GC.KeepAlive(mutex);
GC.KeepAlive(_mutex);
}
private static void SwitchToCurrentInstance()
@@ -64,10 +67,41 @@ namespace mRemoteNG.App
var currentProcess = Process.GetCurrentProcess();
foreach (var enumeratedProcess in Process.GetProcessesByName(currentProcess.ProcessName))
{
if (enumeratedProcess.Id != currentProcess.Id && enumeratedProcess.MainModule.FileName == currentProcess.MainModule.FileName && enumeratedProcess.MainWindowHandle != IntPtr.Zero)
if (enumeratedProcess.Id != currentProcess.Id &&
enumeratedProcess.MainModule.FileName == currentProcess.MainModule.FileName &&
enumeratedProcess.MainWindowHandle != IntPtr.Zero)
windowHandle = enumeratedProcess.MainWindowHandle;
}
return windowHandle;
}
private static void CatchAllUnhandledExceptions()
{
Application.ThreadException += ApplicationOnThreadException;
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException;
}
private static void ApplicationOnThreadException(object sender, ThreadExceptionEventArgs e)
{
if (!FrmSplashScreen.getInstance().IsDisposed)
FrmSplashScreen.getInstance().Close();
if (FrmMain.Default.IsDisposed) return;
var window = new FrmUnhandledException(e.Exception, false);
window.ShowDialog(FrmMain.Default);
}
private static void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
if (!FrmSplashScreen.getInstance().IsDisposed)
FrmSplashScreen.getInstance().Close();
var window = new FrmUnhandledException(e.ExceptionObject as Exception, e.IsTerminating);
window.ShowDialog(FrmMain.Default);
}
}
}

View File

@@ -1,15 +1,7 @@
using System;
using System.IO;
using System.Security;
using System.Threading;
using System.Windows.Forms;
using mRemoteNG.App.Info;
using mRemoteNG.Config.Connections.Multiuser;
using mRemoteNG.Config.DataProviders;
using mRemoteNG.App.Info;
using mRemoteNG.Config.Putty;
using mRemoteNG.Connection;
using mRemoteNG.Credential;
using mRemoteNG.Credential.Repositories;
using mRemoteNG.Messages;
using mRemoteNG.Security;
using mRemoteNG.Tools;
@@ -17,10 +9,16 @@ using mRemoteNG.Tree.Root;
using mRemoteNG.UI;
using mRemoteNG.UI.Forms;
using mRemoteNG.UI.TaskDialog;
using System;
using System.IO;
using System.Security;
using System.Threading;
using System.Windows.Forms;
using mRemoteNG.Properties;
namespace mRemoteNG.App
{
public static class Runtime
public static class Runtime
{
public static bool IsPortableEdition
{
@@ -34,30 +32,44 @@ namespace mRemoteNG.App
}
}
/// <summary>
/// Feature flag to enable the credential manager feature
/// </summary>
public static bool UseCredentialManager => true;
public static WindowList WindowList { get; set; }
public static MessageCollector MessageCollector { get; } = new MessageCollector();
public static NotificationAreaIcon NotificationAreaIcon { get; set; }
public static ExternalToolsService ExternalToolsService { get; } = new ExternalToolsService();
public static SecureString EncryptionKey { get; set; } = new RootNodeInfo(RootNodeType.Connection).PasswordString.ConvertToSecureString();
public static ICredentialRepositoryList CredentialProviderCatalog { get; } = new CredentialRepositoryList();
public static ConnectionsService ConnectionsService { get; } = new ConnectionsService(PuttySessionsManager.Instance);
public static SecureString EncryptionKey { get; set; } =
new RootNodeInfo(RootNodeType.Connection).PasswordString.ConvertToSecureString();
public static CredentialService CredentialService { get; } = new CredentialServiceFactory().Build();
public static ConnectionsService ConnectionsService { get; } = new ConnectionsService(PuttySessionsManager.Instance, CredentialService);
#region Connections Loading/Saving
public static void LoadConnectionsAsync()
{
_withDialog = false;
var t = new Thread(LoadConnectionsBGd);
t.SetApartmentState(ApartmentState.STA);
t.Start();
}
private static bool _withDialog;
private static void LoadConnectionsBGd()
{
LoadConnections(_withDialog);
LoadConnections();
}
/// <summary>
///
/// </summary>
/// <param name="withDialog">
/// Should we show the file selection dialog to allow the user to select
/// a connection file
/// </param>
public static void LoadConnections(bool withDialog = false)
{
var connectionFileName = "";
@@ -67,55 +79,46 @@ namespace mRemoteNG.App
// disable sql update checking while we are loading updates
ConnectionsService.RemoteConnectionsSyncronizer?.Disable();
if (!Settings.Default.UseSQLServer)
if (withDialog)
{
if (withDialog)
{
var loadDialog = DialogFactory.BuildLoadConnectionsDialog();
if (loadDialog.ShowDialog() != DialogResult.OK) return;
connectionFileName = loadDialog.FileName;
}
else
{
connectionFileName = ConnectionsService.GetStartupConnectionFileName();
}
var loadDialog = DialogFactory.BuildLoadConnectionsDialog();
if (loadDialog.ShowDialog() != DialogResult.OK)
return;
var backupFileCreator = new FileBackupCreator();
backupFileCreator.CreateBackupFile(connectionFileName);
var backupPruner = new FileBackupPruner();
backupPruner.PruneBackupFiles(connectionFileName);
connectionFileName = loadDialog.FileName;
Settings.Default.UseSQLServer = false;
Settings.Default.Save();
}
else if (!Settings.Default.UseSQLServer)
{
connectionFileName = ConnectionsService.GetStartupConnectionFileName();
}
ConnectionsService.LoadConnections(Settings.Default.UseSQLServer, false, connectionFileName);
ConnectionsService.LoadConnections(Settings.Default.UseSQLServer, connectionFileName);
if (Settings.Default.UseSQLServer)
{
ConnectionsService.LastSqlUpdate = DateTime.Now;
}
else
{
if (connectionFileName == ConnectionsService.GetDefaultStartupConnectionFileName())
{
Settings.Default.LoadConsFromCustomLocation = false;
}
else
{
Settings.Default.LoadConsFromCustomLocation = true;
Settings.Default.CustomConsPath = connectionFileName;
}
}
// re-enable sql update checking after updates are loaded
ConnectionsService.RemoteConnectionsSyncronizer?.Enable();
}
catch (Exception ex)
{
FrmSplashScreen.getInstance().Close();
if (Settings.Default.UseSQLServer)
{
MessageCollector.AddExceptionMessage(Language.strLoadFromSqlFailed, ex);
var commandButtons = string.Join("|", Language.strCommandTryAgain, Language.strCommandOpenConnectionFile, string.Format(Language.strCommandExitProgram, Application.ProductName));
CTaskDialog.ShowCommandBox(Application.ProductName, Language.strLoadFromSqlFailed, Language.strLoadFromSqlFailedContent, MiscTools.GetExceptionMessageRecursive(ex), "", "", commandButtons, false, ESysIcons.Error, ESysIcons.Error);
MessageCollector.AddExceptionMessage(Language.LoadFromSqlFailed, ex);
var commandButtons = string.Join("|", Language._TryAgain,
Language.CommandOpenConnectionFile,
string.Format(Language.CommandExitProgram,
Application.ProductName));
CTaskDialog.ShowCommandBox(Application.ProductName, Language.LoadFromSqlFailed,
Language.LoadFromSqlFailedContent,
MiscTools.GetExceptionMessageRecursive(ex), "", "",
commandButtons, false, ESysIcons.Error, ESysIcons.Error);
switch (CTaskDialog.CommandButtonResult)
{
case 0:
@@ -130,16 +133,20 @@ namespace mRemoteNG.App
return;
}
}
if (ex is FileNotFoundException && !withDialog)
{
MessageCollector.AddExceptionMessage(string.Format(Language.strConnectionsFileCouldNotBeLoadedNew, connectionFileName), ex, MessageClass.InformationMsg);
MessageCollector.AddExceptionMessage(
string.Format(Language.ConnectionsFileCouldNotBeLoadedNew,
connectionFileName), ex,
MessageClass.InformationMsg);
string[] commandButtons =
{
Language.ConfigurationCreateNew,
Language.ConfigurationCustomPath,
Language.ConfigurationImportFile,
Language.strMenuExit
Language.Exit
};
var answered = false;
@@ -148,13 +155,13 @@ namespace mRemoteNG.App
try
{
CTaskDialog.ShowTaskDialogBox(
GeneralAppInfo.ProductName,
Language.ConnectionFileNotFound,
"", "", "", "", "",
string.Join(" | ", commandButtons),
ETaskDialogButtons.None,
ESysIcons.Question,
ESysIcons.Question);
GeneralAppInfo.ProductName,
Language.ConnectionFileNotFound,
"", "", "", "", "",
string.Join(" | ", commandButtons),
ETaskDialogButtons.None,
ESysIcons.Question,
ESysIcons.Question);
switch (CTaskDialog.CommandButtonResult)
{
@@ -175,17 +182,24 @@ namespace mRemoteNG.App
Application.Exit();
answered = true;
break;
}
}
}
catch (Exception exc)
{
MessageCollector.AddExceptionMessage(string.Format(Language.strConnectionsFileCouldNotBeLoadedNew, connectionFileName), exc, MessageClass.InformationMsg);
MessageCollector.AddExceptionMessage(
string
.Format(Language.ConnectionsFileCouldNotBeLoadedNew,
connectionFileName), exc,
MessageClass.InformationMsg);
}
}
return;
}
MessageCollector.AddExceptionStackTrace(string.Format(Language.strConnectionsFileCouldNotBeLoaded, connectionFileName), ex);
MessageCollector.AddExceptionStackTrace(
string.Format(Language.ConnectionsFileCouldNotBeLoaded,
connectionFileName), ex);
if (connectionFileName != ConnectionsService.GetStartupConnectionFileName())
{
LoadConnections(withDialog);
@@ -193,12 +207,16 @@ namespace mRemoteNG.App
else
{
MessageBox.Show(FrmMain.Default,
string.Format(Language.strErrorStartupConnectionFileLoad, Environment.NewLine, Application.ProductName, ConnectionsService.GetStartupConnectionFileName(), MiscTools.GetExceptionMessageRecursive(ex)),
@"Could not load startup file.", MessageBoxButtons.OK, MessageBoxIcon.Error);
string.Format(Language.ErrorStartupConnectionFileLoad, Environment.NewLine,
Application.ProductName,
ConnectionsService.GetStartupConnectionFileName(),
MiscTools.GetExceptionMessageRecursive(ex)),
@"Could not load startup file.", MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
}
}
#endregion
}
}

View File

@@ -3,8 +3,10 @@ using System;
using System.Diagnostics;
using System.Windows.Forms;
using mRemoteNG.Config.Putty;
using mRemoteNG.Properties;
using mRemoteNG.UI.Controls;
using mRemoteNG.UI.Forms;
// ReSharper disable ArrangeAccessorOwnerBody
namespace mRemoteNG.App
@@ -25,7 +27,10 @@ namespace mRemoteNG.App
ProgramRoot.CloseSingletonInstanceMutex();
}
public static void Cleanup(Control quickConnectToolStrip, ExternalToolsToolStrip externalToolsToolStrip, MultiSshToolStrip multiSshToolStrip, FrmMain frmMain)
public static void Cleanup(Control quickConnectToolStrip,
ExternalToolsToolStrip externalToolsToolStrip,
MultiSshToolStrip multiSshToolStrip,
FrmMain frmMain)
{
try
{
@@ -37,7 +42,7 @@ namespace mRemoteNG.App
}
catch (Exception ex)
{
Runtime.MessageCollector.AddExceptionStackTrace(Language.strSettingsCouldNotBeSavedOrTrayDispose, ex);
Runtime.MessageCollector.AddExceptionStackTrace(Language.SettingsCouldNotBeSavedOrTrayDispose, ex);
}
}
@@ -58,9 +63,13 @@ namespace mRemoteNG.App
Runtime.ConnectionsService.SaveConnections();
}
private static void SaveSettings(Control quickConnectToolStrip, ExternalToolsToolStrip externalToolsToolStrip, MultiSshToolStrip multiSshToolStrip, FrmMain frmMain)
private static void SaveSettings(Control quickConnectToolStrip,
ExternalToolsToolStrip externalToolsToolStrip,
MultiSshToolStrip multiSshToolStrip,
FrmMain frmMain)
{
Config.Settings.SettingsSaver.SaveSettings(quickConnectToolStrip, externalToolsToolStrip, multiSshToolStrip, frmMain);
Config.Settings.SettingsSaver.SaveSettings(quickConnectToolStrip, externalToolsToolStrip, multiSshToolStrip,
frmMain);
}
private static void UnregisterBrowsers()

View File

@@ -5,10 +5,10 @@ using System.Globalization;
using mRemoteNG.App.Info;
using mRemoteNG.App.Initialization;
using mRemoteNG.App.Update;
using mRemoteNG.Config.Connections;
using mRemoteNG.Config.Connections.Multiuser;
using mRemoteNG.Connection;
using mRemoteNG.Messages;
using mRemoteNG.Properties;
using mRemoteNG.Tools;
using mRemoteNG.Tools.Cmdline;
using mRemoteNG.UI;
@@ -37,15 +37,16 @@ namespace mRemoteNG.App
public void InitializeProgram(MessageCollector messageCollector)
{
Debug.Print("---------------------------" + Environment.NewLine + "[START] - " + Convert.ToString(DateTime.Now, CultureInfo.InvariantCulture));
Debug.Print("---------------------------" + Environment.NewLine + "[START] - " +
Convert.ToString(DateTime.Now, CultureInfo.InvariantCulture));
var startupLogger = new StartupDataLogger(messageCollector);
startupLogger.LogStartupData();
CompatibilityChecker.CheckCompatibility(messageCollector);
ParseCommandLineArgs(messageCollector);
IeBrowserEmulation.Register();
_connectionIconLoader.GetConnectionIcons();
DefaultConnectionInfo.Instance.LoadFrom(Settings.Default, a=>"ConDefault"+a);
DefaultConnectionInheritance.Instance.LoadFrom(Settings.Default, a=>"InhDefault"+a);
DefaultConnectionInfo.Instance.LoadFrom(Settings.Default, a => "ConDefault" + a);
DefaultConnectionInheritance.Instance.LoadFrom(Settings.Default, a => "InhDefault" + a);
}
private static void ParseCommandLineArgs(MessageCollector messageCollector)
@@ -59,7 +60,8 @@ namespace mRemoteNG.App
messageCollector.AddMessage(MessageClass.DebugMsg, "Determining if we need a database syncronizer");
if (!Settings.Default.UseSQLServer) return;
messageCollector.AddMessage(MessageClass.DebugMsg, "Creating database syncronizer");
Runtime.ConnectionsService.RemoteConnectionsSyncronizer = new RemoteConnectionsSyncronizer(new SqlConnectionsUpdateChecker());
Runtime.ConnectionsService.RemoteConnectionsSyncronizer =
new RemoteConnectionsSyncronizer(new SqlConnectionsUpdateChecker());
Runtime.ConnectionsService.RemoteConnectionsSyncronizer.Enable();
}
@@ -74,7 +76,12 @@ namespace mRemoteNG.App
return;
}
var nextUpdateCheck = Convert.ToDateTime(Settings.Default.CheckForUpdatesLastCheck.Add(TimeSpan.FromDays(Convert.ToDouble(Settings.Default.CheckForUpdatesFrequencyDays))));
var nextUpdateCheck =
Convert.ToDateTime(Settings.Default.CheckForUpdatesLastCheck.Add(
TimeSpan
.FromDays(Convert.ToDouble(Settings
.Default
.CheckForUpdatesFrequencyDays))));
if (!Settings.Default.UpdatePending && DateTime.UtcNow < nextUpdateCheck)
{
return;
@@ -100,6 +107,7 @@ namespace mRemoteNG.App
{
return;
}
if (e.Error != null)
{
throw e.Error;

View File

@@ -0,0 +1,94 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.Runtime.Serialization;
using mRemoteNG.Properties;
// ReSharper disable ArrangeAccessorOwnerBody
namespace mRemoteNG.App
{
[Serializable]
public sealed class SupportedCultures : Dictionary<string, string>
{
private static SupportedCultures _Instance;
private static SupportedCultures SingletonInstance
{
get { return _Instance ?? (_Instance = new SupportedCultures()); }
}
private SupportedCultures()
{
foreach (var CultureName in Settings.Default.SupportedUICultures.Split(','))
{
try
{
var CultureInfo = new CultureInfo(CultureName.Trim());
Add(CultureInfo.Name, CultureInfo.TextInfo.ToTitleCase(CultureInfo.NativeName));
}
catch (Exception ex)
{
Debug.Print(
$"An exception occurred while adding the culture {CultureName} to the list of supported cultures. {ex.StackTrace}");
}
}
}
// fix CA2229 - https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2229-implement-serialization-constructors?view=vs-2017
private SupportedCultures(SerializationInfo info, StreamingContext context)
{
throw new NotImplementedException();
}
public static bool IsNameSupported(string CultureName)
{
return SingletonInstance.ContainsKey(CultureName);
}
public static bool IsNativeNameSupported(string CultureNativeName)
{
return SingletonInstance.ContainsValue(CultureNativeName);
}
public static string get_CultureName(string CultureNativeName)
{
var Names = new string[SingletonInstance.Count + 1];
var NativeNames = new string[SingletonInstance.Count + 1];
SingletonInstance.Keys.CopyTo(Names, 0);
SingletonInstance.Values.CopyTo(NativeNames, 0);
for (var Index = 0; Index <= SingletonInstance.Count; Index++)
{
if (NativeNames[Index] == CultureNativeName)
{
return Names[Index];
}
}
throw (new KeyNotFoundException());
}
public static string get_CultureNativeName(string CultureName)
{
return SingletonInstance[CultureName];
}
public static List<string> CultureNativeNames
{
get
{
var ValueList = new List<string>();
foreach (var Value in SingletonInstance.Values)
{
ValueList.Add(Value);
}
return ValueList;
}
}
}
}

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.IO;
using System.Net;
using System.ComponentModel;
@@ -7,11 +7,13 @@ using System.Reflection;
using mRemoteNG.App.Info;
using mRemoteNG.Security.SymmetricEncryption;
using System.Security.Cryptography;
using mRemoteNG.Properties;
#if !PORTABLE
using mRemoteNG.Tools;
#else
#else
using System.Windows.Forms;
#endif
// ReSharper disable ArrangeAccessorOwnerBody
@@ -66,7 +68,12 @@ namespace mRemoteNG.App.Update
SetProxySettings(shouldWeUseProxy, proxyAddress, port, useAuthentication, username, password);
}
public void SetProxySettings(bool useProxy, string address, int port, bool useAuthentication, string username, string password)
public void SetProxySettings(bool useProxy,
string address,
int port,
bool useAuthentication,
string username,
string password)
{
if (useProxy && !string.IsNullOrEmpty(address))
{
@@ -107,7 +114,8 @@ namespace mRemoteNG.App.Update
{
if (CurrentUpdateInfo == null || !CurrentUpdateInfo.IsValid)
{
throw new InvalidOperationException("CurrentUpdateInfo is not valid. GetUpdateInfoAsync() must be called before calling GetChangeLogAsync().");
throw new InvalidOperationException(
"CurrentUpdateInfo is not valid. GetUpdateInfoAsync() must be called before calling GetChangeLogAsync().");
}
if (IsGetChangeLogRunning)
@@ -131,27 +139,29 @@ namespace mRemoteNG.App.Update
if (CurrentUpdateInfo == null || !CurrentUpdateInfo.IsValid)
{
throw new InvalidOperationException(
"CurrentUpdateInfo is not valid. GetUpdateInfoAsync() must be called before calling DownloadUpdateAsync().");
"CurrentUpdateInfo is not valid. GetUpdateInfoAsync() must be called before calling DownloadUpdateAsync().");
}
#if !PORTABLE
CurrentUpdateInfo.UpdateFilePath = Path.Combine(Path.GetTempPath(), Path.ChangeExtension(Path.GetRandomFileName(), "msi"));
CurrentUpdateInfo.UpdateFilePath =
Path.Combine(Path.GetTempPath(), Path.ChangeExtension(Path.GetRandomFileName(), "msi"));
#else
var sfd = new SaveFileDialog
{
InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory),
var sfd = new SaveFileDialog
{
InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory),
FileName = CurrentUpdateInfo.FileName,
RestoreDirectory = true
};
if (sfd.ShowDialog() == DialogResult.OK)
{
RestoreDirectory = true
};
if (sfd.ShowDialog() == DialogResult.OK)
{
CurrentUpdateInfo.UpdateFilePath = sfd.FileName;
}
else
{
return;
}
else
{
return;
}
#endif
DownloadUpdateWebClient.DownloadFileAsync(CurrentUpdateInfo.DownloadAddress, CurrentUpdateInfo.UpdateFilePath);
DownloadUpdateWebClient.DownloadFileAsync(CurrentUpdateInfo.DownloadAddress,
CurrentUpdateInfo.UpdateFilePath);
}
#endregion
@@ -191,7 +201,9 @@ namespace mRemoteNG.App.Update
}
private static DownloadStringCompletedEventArgs NewDownloadStringCompletedEventArgs(string result,
Exception exception, bool cancelled, object userToken)
Exception exception,
bool cancelled,
object userToken)
{
var type = typeof(DownloadStringCompletedEventArgs);
const BindingFlags bindingFlags = BindingFlags.NonPublic | BindingFlags.Instance;
@@ -201,7 +213,7 @@ namespace mRemoteNG.App.Update
if (constructor == null)
return null;
return (DownloadStringCompletedEventArgs) constructor.Invoke(arguments);
return (DownloadStringCompletedEventArgs)constructor.Invoke(arguments);
}
private DownloadStringCompletedEventArgs DownloadString(Uri address)
@@ -233,12 +245,19 @@ namespace mRemoteNG.App.Update
if (!e.Cancelled && e.Error == null)
{
CurrentUpdateInfo = UpdateInfo.FromString(e.Result);
Settings.Default.CheckForUpdatesLastCheck = DateTime.UtcNow;
if (!Settings.Default.UpdatePending)
try
{
Settings.Default.UpdatePending = IsUpdateAvailable();
CurrentUpdateInfo = UpdateInfo.FromString(e.Result);
Settings.Default.CheckForUpdatesLastCheck = DateTime.UtcNow;
if (!Settings.Default.UpdatePending)
{
Settings.Default.UpdatePending = IsUpdateAvailable();
}
}
catch (Exception ex)
{
e = NewDownloadStringCompletedEventArgs(e.Result, ex, e.Cancelled, null);
}
}
@@ -326,11 +345,13 @@ namespace mRemoteNG.App.Update
{
add
{
GetUpdateInfoCompletedEventEvent = (AsyncCompletedEventHandler)Delegate.Combine(GetUpdateInfoCompletedEventEvent, value);
GetUpdateInfoCompletedEventEvent =
(AsyncCompletedEventHandler)Delegate.Combine(GetUpdateInfoCompletedEventEvent, value);
}
remove
{
GetUpdateInfoCompletedEventEvent = (AsyncCompletedEventHandler)Delegate.Remove(GetUpdateInfoCompletedEventEvent, value);
GetUpdateInfoCompletedEventEvent =
(AsyncCompletedEventHandler)Delegate.Remove(GetUpdateInfoCompletedEventEvent, value);
}
}
@@ -340,11 +361,13 @@ namespace mRemoteNG.App.Update
{
add
{
GetChangeLogCompletedEventEvent = (AsyncCompletedEventHandler)Delegate.Combine(GetChangeLogCompletedEventEvent, value);
GetChangeLogCompletedEventEvent =
(AsyncCompletedEventHandler)Delegate.Combine(GetChangeLogCompletedEventEvent, value);
}
remove
{
GetChangeLogCompletedEventEvent = (AsyncCompletedEventHandler)Delegate.Remove(GetChangeLogCompletedEventEvent, value);
GetChangeLogCompletedEventEvent =
(AsyncCompletedEventHandler)Delegate.Remove(GetChangeLogCompletedEventEvent, value);
}
}
@@ -354,11 +377,15 @@ namespace mRemoteNG.App.Update
{
add
{
DownloadUpdateProgressChangedEventEvent = (DownloadProgressChangedEventHandler)Delegate.Combine(DownloadUpdateProgressChangedEventEvent, value);
DownloadUpdateProgressChangedEventEvent =
(DownloadProgressChangedEventHandler)Delegate.Combine(DownloadUpdateProgressChangedEventEvent,
value);
}
remove
{
DownloadUpdateProgressChangedEventEvent = (DownloadProgressChangedEventHandler)Delegate.Remove(DownloadUpdateProgressChangedEventEvent, value);
DownloadUpdateProgressChangedEventEvent =
(DownloadProgressChangedEventHandler)Delegate.Remove(DownloadUpdateProgressChangedEventEvent,
value);
}
}
@@ -368,11 +395,13 @@ namespace mRemoteNG.App.Update
{
add
{
DownloadUpdateCompletedEventEvent = (AsyncCompletedEventHandler)Delegate.Combine(DownloadUpdateCompletedEventEvent, value);
DownloadUpdateCompletedEventEvent =
(AsyncCompletedEventHandler)Delegate.Combine(DownloadUpdateCompletedEventEvent, value);
}
remove
{
DownloadUpdateCompletedEventEvent = (AsyncCompletedEventHandler)Delegate.Remove(DownloadUpdateCompletedEventEvent, value);
DownloadUpdateCompletedEventEvent =
(AsyncCompletedEventHandler)Delegate.Remove(DownloadUpdateCompletedEventEvent, value);
}
}

View File

@@ -7,12 +7,16 @@ namespace mRemoteNG.App.Update
public class UpdateFile
{
#region Public Properties
// ReSharper disable MemberCanBePrivate.Local
// ReSharper disable once MemberCanBePrivate.Global
public Dictionary<string, string> Items { get; } = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
public Dictionary<string, string> Items { get; } =
new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
#endregion
#region Public Methods
public UpdateFile(string content)
{
FromString(content);
@@ -24,8 +28,8 @@ namespace mRemoteNG.App.Update
{
if (string.IsNullOrEmpty(content)) return;
char[] keyValueSeparators = { ':', '=' };
char[] commentCharacters = { '#', ';', '\'' };
char[] keyValueSeparators = {':', '='};
char[] commentCharacters = {'#', ';', '\''};
// no separators means no valid update data...
if (content.Trim().IndexOfAny(keyValueSeparators) == -1) return;
@@ -47,7 +51,7 @@ namespace mRemoteNG.App.Update
continue;
// make sure we have valid data in both parts before adding to the collection. If either part is empty, then it's not valid data.
if(string.IsNullOrEmpty(parts[0].Trim()) || string.IsNullOrEmpty(parts[1].Trim()))
if (string.IsNullOrEmpty(parts[0].Trim()) || string.IsNullOrEmpty(parts[1].Trim()))
continue;
Items.Add(parts[0].Trim(), parts[1].Trim());
@@ -83,13 +87,14 @@ namespace mRemoteNG.App.Update
{
var value = GetString("dURL");
var sv = value.Split('/');
return sv[sv.Length-1];
return sv[sv.Length - 1];
}
public string GetChecksum(string key = "Checksum")
{
return GetString(key).Replace(" ", "").ToUpperInvariant();
}
#endregion
}
}

View File

@@ -1,4 +1,5 @@
using System;
// ReSharper disable UnusedAutoPropertyAccessor.Local
namespace mRemoteNG.App.Update
@@ -43,6 +44,7 @@ namespace mRemoteNG.App.Update
newInfo.Checksum = updateFile.GetChecksum();
newInfo.IsValid = newInfo.CheckIfValid();
}
return newInfo;
}
@@ -50,11 +52,11 @@ namespace mRemoteNG.App.Update
{
if (string.IsNullOrEmpty(Version.ToString()))
return false;
if(string.IsNullOrEmpty(DownloadAddress.AbsoluteUri))
if (string.IsNullOrEmpty(DownloadAddress.AbsoluteUri))
return false;
if (string.IsNullOrEmpty(ChangeLogAddress.AbsoluteUri))
return false;
#if false
#if false
if (string.IsNullOrEmpty(ImageAddress.AbsoluteUri))
return false;
if (string.IsNullOrEmpty(ImageLinkAddress.AbsoluteUri))

View File

@@ -1,30 +1,30 @@
using mRemoteNG.UI.Forms;
using mRemoteNG.UI.Window;
using System;
using mRemoteNG.Messages;
using System;
using mRemoteNG.UI;
using mRemoteNG.UI.Forms;
using mRemoteNG.UI.Window;
namespace mRemoteNG.App
{
public static class Windows
{
private static AboutWindow _aboutForm;
private static ActiveDirectoryImportWindow _adimportForm;
private static HelpWindow _helpForm;
private static ExternalToolsWindow _externalappsForm;
private static PortScanWindow _portscanForm;
private static UltraVNCWindow _ultravncscForm;
private static ComponentsCheckWindow _componentscheckForm;
private static ConnectionTreeWindow _treeForm;
internal static ConnectionTreeWindow TreeForm
{
get => _treeForm ?? (_treeForm = new ConnectionTreeWindow());
set => _treeForm = value;
}
internal static ConnectionTreeWindow TreeForm { get; set; } = new ConnectionTreeWindow();
internal static ConfigWindow ConfigForm { get; set; } = new ConfigWindow();
internal static ErrorAndInfoWindow ErrorsForm { get; set; } = new ErrorAndInfoWindow();
internal static ScreenshotManagerWindow ScreenshotForm { get; set; } = new ScreenshotManagerWindow();
private static UpdateWindow UpdateForm { get; set; } = new UpdateWindow();
internal static SSHTransferWindow SshtransferForm { get; private set; } = new SSHTransferWindow();
public static void Show(WindowType windowType)
{
try
@@ -33,21 +33,17 @@ namespace mRemoteNG.App
// ReSharper disable once SwitchStatementMissingSomeCases
switch (windowType)
{
case WindowType.About:
if (_aboutForm == null || _aboutForm.IsDisposed)
_aboutForm = new AboutWindow();
_aboutForm.Show(dockPanel);
break;
case WindowType.ActiveDirectoryImport:
if (_adimportForm == null || _adimportForm.IsDisposed)
_adimportForm = new ActiveDirectoryImportWindow();
_adimportForm.Show(dockPanel);
break;
case WindowType.Options:
using (var optionsForm = new frmOptions())
using (var optionsForm = new FrmOptions())
{
optionsForm.ShowDialog(dockPanel);
}
break;
case WindowType.SSHTransfer:
if (SshtransferForm == null || SshtransferForm.IsDisposed)
@@ -59,11 +55,6 @@ namespace mRemoteNG.App
UpdateForm = new UpdateWindow();
UpdateForm.Show(dockPanel);
break;
case WindowType.Help:
if (_helpForm == null || _helpForm.IsDisposed)
_helpForm = new HelpWindow();
_helpForm.Show(dockPanel);
break;
case WindowType.ExternalApps:
if (_externalappsForm == null || _externalappsForm.IsDisposed)
_externalappsForm = new ExternalToolsWindow();
@@ -78,12 +69,6 @@ namespace mRemoteNG.App
_ultravncscForm = new UltraVNCWindow();
_ultravncscForm.Show(dockPanel);
break;
case WindowType.ComponentsCheck:
Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, "Showing ComponentsCheck window", true);
if (_componentscheckForm == null || _componentscheckForm.IsDisposed)
_componentscheckForm = new ComponentsCheckWindow();
_componentscheckForm.Show(dockPanel);
break;
}
}
catch (Exception ex)

View File

@@ -0,0 +1,11 @@
namespace mRemoteNG.Config
{
public enum ConfirmCloseEnum
{
Unspecified = 0,
Never = 1,
Exit = 2,
Multiple = 3,
All = 4
}
}

View File

@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using mRemoteNG.Credential;
namespace mRemoteNG.Config
{
public class ConnectionToCredentialMap : Dictionary<Guid, ICredentialRecord>
{
private readonly IEqualityComparer<ICredentialRecord> _credentialComparer = new CredentialDomainUserPasswordComparer();
public IEnumerable<ICredentialRecord> DistinctCredentialRecords => Values.Distinct(_credentialComparer);
}
}

View File

@@ -1,4 +1,6 @@
using System;
using System.Collections.Generic;
using mRemoteNG.Connection;
using mRemoteNG.Tools;
using mRemoteNG.Tree;
@@ -10,7 +12,7 @@ namespace mRemoteNG.Config.Connections
/// The previous <see cref="ConnectionTreeModel"/> that is being
/// unloaded.
/// </summary>
public Optional<ConnectionTreeModel> PreviousConnectionTreeModel { get; }
public List<ConnectionInfo> RemovedConnections { get; }
/// <summary>
/// True if the previous <see cref="ConnectionTreeModel"/> was loaded from
@@ -21,7 +23,7 @@ namespace mRemoteNG.Config.Connections
/// <summary>
/// The new <see cref="ConnectionTreeModel"/> that is being loaded.
/// </summary>
public ConnectionTreeModel NewConnectionTreeModel { get; }
public List<ConnectionInfo> AddedConnections { get; }
/// <summary>
/// True if the new <see cref="ConnectionTreeModel"/> was loaded from
@@ -36,23 +38,18 @@ namespace mRemoteNG.Config.Connections
/// </summary>
public string NewSourcePath { get; }
public IConnectionTreeModel NewConnectionTreeModel { get; set; } = new ConnectionTreeModel();
public ConnectionsLoadedEventArgs(
Optional<ConnectionTreeModel> previousTreeModelModel, ConnectionTreeModel newTreeModelModel,
List<ConnectionInfo> removedConnections, List<ConnectionInfo> addedConnections,
bool previousSourceWasDatabase, bool newSourceIsDatabase,
string newSourcePath)
{
if (previousTreeModelModel == null)
throw new ArgumentNullException(nameof(previousTreeModelModel));
if (newTreeModelModel == null)
throw new ArgumentNullException(nameof(newTreeModelModel));
if (newSourcePath == null)
throw new ArgumentNullException(nameof(newSourcePath));
PreviousConnectionTreeModel = previousTreeModelModel;
RemovedConnections = removedConnections.ThrowIfNull(nameof(removedConnections));
PreviousSourceWasDatabase = previousSourceWasDatabase;
NewConnectionTreeModel = newTreeModelModel;
AddedConnections = addedConnections.ThrowIfNull(nameof(addedConnections));
NewSourceIsDatabase = newSourceIsDatabase;
NewSourcePath = newSourcePath;
NewSourcePath = newSourcePath.ThrowIfNull(nameof(newSourcePath));
}
}
}

View File

@@ -5,12 +5,15 @@ namespace mRemoteNG.Config.Connections
{
public class ConnectionsSavedEventArgs
{
public ConnectionTreeModel ModelThatWasSaved { get; }
public IConnectionTreeModel ModelThatWasSaved { get; }
public bool PreviouslyUsingDatabase { get; }
public bool UsingDatabase { get; }
public string ConnectionFileName { get; }
public ConnectionsSavedEventArgs(ConnectionTreeModel modelThatWasSaved, bool previouslyUsingDatabase, bool usingDatabase, string connectionFileName)
public ConnectionsSavedEventArgs(IConnectionTreeModel modelThatWasSaved,
bool previouslyUsingDatabase,
bool usingDatabase,
string connectionFileName)
{
if (modelThatWasSaved == null)
throw new ArgumentNullException(nameof(modelThatWasSaved));

View File

@@ -1,8 +1,7 @@
using System;
using mRemoteNG.App;
using mRemoteNG.Config.DataProviders;
using mRemoteNG.Config.Serializers;
using mRemoteNG.Config.Serializers.Csv;
using mRemoteNG.Config.Serializers.ConnectionSerializers.Csv;
using mRemoteNG.Security;
using mRemoteNG.Tree;
@@ -24,9 +23,9 @@ namespace mRemoteNG.Config.Connections
_saveFilter = saveFilter;
}
public void Save(ConnectionTreeModel connectionTreeModel)
public void Save(ConnectionTreeModel connectionTreeModel, string propertyNameTrigger = "")
{
var csvConnectionsSerializer = new CsvConnectionsSerializerMremotengFormat(_saveFilter, Runtime.CredentialProviderCatalog);
var csvConnectionsSerializer = new CsvConnectionsSerializerMremotengFormat(_saveFilter, Runtime.CredentialService.RepositoryList);
var dataProvider = new FileDataProvider(_connectionFileName);
var csvContent = csvConnectionsSerializer.Serialize(connectionTreeModel);
dataProvider.Save(csvContent);

View File

@@ -0,0 +1,9 @@
using mRemoteNG.Config.Serializers;
namespace mRemoteNG.Config.Connections
{
public interface IConnectionsLoader
{
SerializationResult Load();
}
}

View File

@@ -3,7 +3,8 @@ using mRemoteNG.Config.DatabaseConnectors;
namespace mRemoteNG.Config.Connections.Multiuser
{
public delegate void ConnectionsUpdateAvailableEventHandler(object sender, ConnectionsUpdateAvailableEventArgs args);
public delegate void
ConnectionsUpdateAvailableEventHandler(object sender, ConnectionsUpdateAvailableEventArgs args);
public class ConnectionsUpdateAvailableEventArgs : EventArgs
{

View File

@@ -1,6 +1,7 @@
using System;
using mRemoteNG.App;
using System;
using System.Timers;
using mRemoteNG.App;
// ReSharper disable ArrangeAccessorOwnerBody
namespace mRemoteNG.Config.Connections.Multiuser
@@ -26,14 +27,15 @@ namespace mRemoteNG.Config.Connections.Multiuser
{
_updateChecker.UpdateCheckStarted += OnUpdateCheckStarted;
_updateChecker.UpdateCheckFinished += OnUpdateCheckFinished;
_updateChecker.ConnectionsUpdateAvailable += (sender, args) => ConnectionsUpdateAvailable?.Invoke(sender, args);
_updateChecker.ConnectionsUpdateAvailable +=
(sender, args) => ConnectionsUpdateAvailable?.Invoke(sender, args);
_updateTimer.Elapsed += (sender, args) => _updateChecker.IsUpdateAvailableAsync();
ConnectionsUpdateAvailable += Load;
}
private void Load(object sender, ConnectionsUpdateAvailableEventArgs args)
{
Runtime.ConnectionsService.LoadConnections(true, false, "");
Runtime.ConnectionsService.LoadConnections(true, "");
args.Handled = true;
}
@@ -80,6 +82,7 @@ namespace mRemoteNG.Config.Connections.Multiuser
Dispose(true);
GC.SuppressFinalize(this);
}
private void Dispose(bool itIsSafeToAlsoFreeManagedObjects)
{
if (!itIsSafeToAlsoFreeManagedObjects) return;

View File

@@ -1,27 +1,25 @@
using mRemoteNG.App;
using mRemoteNG.Messages;
using System;
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.Common;
using System.Threading;
using mRemoteNG.Config.Connections.Multiuser;
using mRemoteNG.App;
using mRemoteNG.Config.DatabaseConnectors;
using mRemoteNG.Messages;
namespace mRemoteNG.Config.Connections
namespace mRemoteNG.Config.Connections.Multiuser
{
public class SqlConnectionsUpdateChecker : IConnectionsUpdateChecker
{
private readonly SqlDatabaseConnector _sqlConnector;
private readonly SqlCommand _sqlQuery;
private DateTime _lastUpdateTime;
private readonly IDatabaseConnector _dbConnector;
private readonly DbCommand _dbQuery;
private DateTime LastUpdateTime => Runtime.ConnectionsService.LastSqlUpdate;
private DateTime _lastDatabaseUpdateTime;
public SqlConnectionsUpdateChecker()
{
_sqlConnector = DatabaseConnectorFactory.SqlDatabaseConnectorFromSettings();
_sqlQuery = new SqlCommand("SELECT * FROM tblUpdate", _sqlConnector.SqlConnection);
_lastUpdateTime = default(DateTime);
_dbConnector = DatabaseConnectorFactory.DatabaseConnectorFromSettings();
_dbQuery = _dbConnector.DbCommand("SELECT * FROM tblUpdate");
_lastDatabaseUpdateTime = default(DateTime);
}
@@ -47,25 +45,29 @@ namespace mRemoteNG.Config.Connections
{
try
{
_sqlConnector.Connect();
_dbConnector.Connect();
}
catch(Exception e)
catch (Exception e)
{
Runtime.MessageCollector.AddMessage(MessageClass.WarningMsg, "Unable to connect to Sql DB to check for updates." + Environment.NewLine + e.Message, true);
Runtime.MessageCollector.AddMessage(MessageClass.WarningMsg,
"Unable to connect to Sql DB to check for updates." +
Environment.NewLine + e.Message, true);
}
}
private bool DatabaseIsMoreUpToDateThanUs()
{
var lastUpdateInDb = GetLastUpdateTimeFromDbResponse();
var IAmTheLastoneUpdated = CheckIfIAmTheLastOneUpdated(lastUpdateInDb);
return (lastUpdateInDb > _lastUpdateTime && !IAmTheLastoneUpdated);
var amTheLastoneUpdated = CheckIfIAmTheLastOneUpdated(lastUpdateInDb);
return (lastUpdateInDb > LastUpdateTime && !amTheLastoneUpdated);
}
private bool CheckIfIAmTheLastOneUpdated(DateTime lastUpdateInDb)
{
DateTime LastSqlUpdateWithoutMilliseconds = new DateTime(Runtime.ConnectionsService.LastSqlUpdate.Ticks - (Runtime.ConnectionsService.LastSqlUpdate.Ticks % TimeSpan.TicksPerSecond), Runtime.ConnectionsService.LastSqlUpdate.Kind);
return lastUpdateInDb == LastSqlUpdateWithoutMilliseconds;
DateTime lastSqlUpdateWithoutMilliseconds =
new DateTime(LastUpdateTime.Ticks - (LastUpdateTime.Ticks % TimeSpan.TicksPerSecond),
LastUpdateTime.Kind);
return lastUpdateInDb == lastSqlUpdateWithoutMilliseconds;
}
private DateTime GetLastUpdateTimeFromDbResponse()
@@ -73,7 +75,7 @@ namespace mRemoteNG.Config.Connections
var lastUpdateInDb = default(DateTime);
try
{
var sqlReader = _sqlQuery.ExecuteReader(CommandBehavior.CloseConnection);
var sqlReader = _dbQuery.ExecuteReader(CommandBehavior.CloseConnection);
sqlReader.Read();
if (sqlReader.HasRows)
lastUpdateInDb = Convert.ToDateTime(sqlReader["LastUpdate"]);
@@ -81,20 +83,25 @@ namespace mRemoteNG.Config.Connections
}
catch (Exception ex)
{
Runtime.MessageCollector.AddMessage(MessageClass.WarningMsg, "Error executing Sql query to get updates from the DB." + Environment.NewLine + ex.Message, true);
Runtime.MessageCollector.AddMessage(MessageClass.WarningMsg,
"Error executing Sql query to get updates from the DB." +
Environment.NewLine + ex.Message, true);
}
_lastDatabaseUpdateTime = lastUpdateInDb;
return lastUpdateInDb;
}
public event EventHandler UpdateCheckStarted;
private void RaiseUpdateCheckStartedEvent()
{
UpdateCheckStarted?.Invoke(this, EventArgs.Empty);
}
public event UpdateCheckFinishedEventHandler UpdateCheckFinished;
private void RaiseUpdateCheckFinishedEvent(bool updateAvailable)
{
var args = new ConnectionsUpdateCheckFinishedEventArgs {UpdateAvailable = updateAvailable};
@@ -102,12 +109,12 @@ namespace mRemoteNG.Config.Connections
}
public event ConnectionsUpdateAvailableEventHandler ConnectionsUpdateAvailable;
private void RaiseConnectionsUpdateAvailableEvent()
{
var args = new ConnectionsUpdateAvailableEventArgs(_sqlConnector, _lastDatabaseUpdateTime);
Runtime.MessageCollector.AddMessage(MessageClass.DebugMsg, "Remote connection update is available");
var args = new ConnectionsUpdateAvailableEventArgs(_dbConnector, _lastDatabaseUpdateTime);
ConnectionsUpdateAvailable?.Invoke(this, args);
if(args.Handled)
_lastUpdateTime = _lastDatabaseUpdateTime;
}
public void Dispose()
@@ -118,9 +125,9 @@ namespace mRemoteNG.Config.Connections
private void Dispose(bool itIsSafeToDisposeManagedObjects)
{
if (!itIsSafeToDisposeManagedObjects) return;
_sqlConnector.Disconnect();
_sqlConnector.Dispose();
_sqlQuery.Dispose();
_dbConnector.Disconnect();
_dbConnector.Dispose();
_dbQuery.Dispose();
}
}
}

View File

@@ -0,0 +1,47 @@
using System.Collections.Specialized;
using System.ComponentModel;
using mRemoteNG.Connection;
using mRemoteNG.Tools;
namespace mRemoteNG.Config.Connections
{
public class SaveConnectionsOnEdit
{
private IConnectionsService _connectionsService;
public void Subscribe(IConnectionsService connectionsService)
{
_connectionsService = connectionsService.ThrowIfNull(nameof(connectionsService));
connectionsService.ConnectionTreeModel.CollectionChanged += ConnectionTreeModelOnCollectionChanged;
connectionsService.ConnectionTreeModel.PropertyChanged += ConnectionTreeModelOnPropertyChanged;
}
public void Unsubscribe()
{
_connectionsService.ConnectionTreeModel.CollectionChanged -= ConnectionTreeModelOnCollectionChanged;
_connectionsService.ConnectionTreeModel.PropertyChanged -= ConnectionTreeModelOnPropertyChanged;
_connectionsService = null;
}
private void ConnectionTreeModelOnPropertyChanged(object sender,
PropertyChangedEventArgs propertyChangedEventArgs)
{
SaveConnectionOnEdit(propertyChangedEventArgs.PropertyName);
}
private void ConnectionTreeModelOnCollectionChanged(object sender,
NotifyCollectionChangedEventArgs
notifyCollectionChangedEventArgs)
{
SaveConnectionOnEdit();
}
private void SaveConnectionOnEdit(string propertyName = "")
{
if (!Properties.Settings.Default.SaveConnectionsAfterEveryEdit)
return;
_connectionsService?.SaveConnectionsAsync(propertyName);
}
}
}

View File

@@ -0,0 +1,101 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security;
using mRemoteNG.Config.DatabaseConnectors;
using mRemoteNG.Config.DataProviders;
using mRemoteNG.Config.Serializers;
using mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql;
using mRemoteNG.Config.Serializers.Versioning;
using mRemoteNG.Container;
using mRemoteNG.Security;
using mRemoteNG.Security.Authentication;
using mRemoteNG.Security.SymmetricEncryption;
using mRemoteNG.Tools;
using mRemoteNG.Tree.Root;
namespace mRemoteNG.Config.Connections
{
public class SqlConnectionsLoader : IConnectionsLoader
{
private readonly IDeserializer<string, IEnumerable<LocalConnectionPropertiesModel>>
_localConnectionPropertiesDeserializer;
private readonly IDataProvider<string> _dataProvider;
public Func<Optional<SecureString>> AuthenticationRequestor { get; set; } =
() => MiscTools.PasswordDialog("", false);
public SqlConnectionsLoader(
IDeserializer<string, IEnumerable<LocalConnectionPropertiesModel>> localConnectionPropertiesDeserializer,
IDataProvider<string> dataProvider)
{
_localConnectionPropertiesDeserializer =
localConnectionPropertiesDeserializer.ThrowIfNull(nameof(localConnectionPropertiesDeserializer));
_dataProvider = dataProvider.ThrowIfNull(nameof(dataProvider));
}
public SerializationResult Load()
{
var connector = DatabaseConnectorFactory.DatabaseConnectorFromSettings();
var dataProvider = new SqlDataProvider(connector);
var metaDataRetriever = new SqlDatabaseMetaDataRetriever();
var databaseVersionVerifier = new SqlDatabaseVersionVerifier(connector);
var cryptoProvider = new LegacyRijndaelCryptographyProvider();
var metaData = metaDataRetriever.GetDatabaseMetaData(connector) ??
HandleFirstRun(metaDataRetriever, connector);
var decryptionKey = GetDecryptionKey(metaData);
if (!decryptionKey.Any())
throw new Exception("Could not load SQL connections");
databaseVersionVerifier.VerifyDatabaseVersion(metaData.ConfVersion);
var dataTable = dataProvider.Load();
var deserializer = new DataTableDeserializer(cryptoProvider, decryptionKey.First());
var serializationResult = deserializer.Deserialize(dataTable);
ApplyLocalConnectionProperties(serializationResult.ConnectionRecords.OfType<RootNodeInfo>().First());
return serializationResult;
}
private Optional<SecureString> GetDecryptionKey(SqlConnectionListMetaData metaData)
{
var cryptographyProvider = new LegacyRijndaelCryptographyProvider();
var cipherText = metaData.Protected;
var authenticator = new PasswordAuthenticator(cryptographyProvider, cipherText, AuthenticationRequestor);
var authenticated =
authenticator.Authenticate(new RootNodeInfo(RootNodeType.Connection).DefaultPassword
.ConvertToSecureString());
if (authenticated)
return authenticator.LastAuthenticatedPassword;
return Optional<SecureString>.Empty;
}
private void ApplyLocalConnectionProperties(ContainerInfo rootNode)
{
var localPropertiesXml = _dataProvider.Load();
var localConnectionProperties = _localConnectionPropertiesDeserializer.Deserialize(localPropertiesXml);
rootNode
.GetRecursiveChildList()
.Join(localConnectionProperties,
con => con.ConstantID,
locals => locals.ConnectionId,
(con, locals) => new {Connection = con, LocalProperties = locals})
.ForEach(x =>
{
x.Connection.PleaseConnect = x.LocalProperties.Connected;
x.Connection.Favorite = x.LocalProperties.Favorite;
if (x.Connection is ContainerInfo container)
container.IsExpanded = x.LocalProperties.Expanded;
});
}
private SqlConnectionListMetaData HandleFirstRun(SqlDatabaseMetaDataRetriever metaDataRetriever, IDatabaseConnector connector)
{
metaDataRetriever.WriteDatabaseMetaData(new RootNodeInfo(RootNodeType.Connection), connector);
return metaDataRetriever.GetDatabaseMetaData(connector);
}
}
}

View File

@@ -0,0 +1,183 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using mRemoteNG.App;
using mRemoteNG.App.Info;
using mRemoteNG.Config.DatabaseConnectors;
using mRemoteNG.Config.DataProviders;
using mRemoteNG.Config.Serializers;
using mRemoteNG.Config.Serializers.ConnectionSerializers.MsSql;
using mRemoteNG.Config.Serializers.Versioning;
using mRemoteNG.Connection;
using mRemoteNG.Container;
using mRemoteNG.Messages;
using mRemoteNG.Security;
using mRemoteNG.Security.SymmetricEncryption;
using mRemoteNG.Tools;
using mRemoteNG.Tree;
using mRemoteNG.Tree.Root;
namespace mRemoteNG.Config.Connections
{
public class SqlConnectionsSaver : ISaver<IConnectionTreeModel>
{
private readonly SaveFilter _saveFilter;
private readonly ISerializer<IEnumerable<LocalConnectionPropertiesModel>, string> _localPropertiesSerializer;
private readonly IDataProvider<string> _dataProvider;
public SqlConnectionsSaver(SaveFilter saveFilter,
ISerializer<IEnumerable<LocalConnectionPropertiesModel>, string>
localPropertieSerializer,
IDataProvider<string> localPropertiesDataProvider)
{
if (saveFilter == null)
throw new ArgumentNullException(nameof(saveFilter));
_saveFilter = saveFilter;
_localPropertiesSerializer = localPropertieSerializer.ThrowIfNull(nameof(localPropertieSerializer));
_dataProvider = localPropertiesDataProvider.ThrowIfNull(nameof(localPropertiesDataProvider));
}
public void Save(IConnectionTreeModel connectionTreeModel, string propertyNameTrigger = "")
{
var rootTreeNode = connectionTreeModel.RootNodes.OfType<RootNodeInfo>().First();
UpdateLocalConnectionProperties(rootTreeNode);
if (PropertyIsLocalOnly(propertyNameTrigger))
{
Runtime.MessageCollector.AddMessage(MessageClass.DebugMsg,
$"Property {propertyNameTrigger} is local only. Not saving to database.");
return;
}
if (SqlUserIsReadOnly())
{
Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg,
"Trying to save connection tree but the SQL read only checkbox is checked, aborting!");
return;
}
using (var dbConnector = DatabaseConnectorFactory.DatabaseConnectorFromSettings())
{
dbConnector.Connect();
var databaseVersionVerifier = new SqlDatabaseVersionVerifier(dbConnector);
var metaDataRetriever = new SqlDatabaseMetaDataRetriever();
var metaData = metaDataRetriever.GetDatabaseMetaData(dbConnector);
if (!databaseVersionVerifier.VerifyDatabaseVersion(metaData.ConfVersion))
{
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg,
Language.ErrorConnectionListSaveFailed);
return;
}
metaDataRetriever.WriteDatabaseMetaData(rootTreeNode, dbConnector);
UpdateConnectionsTable(rootTreeNode, dbConnector);
UpdateUpdatesTable(dbConnector);
}
Runtime.MessageCollector.AddMessage(MessageClass.DebugMsg, "Saved connections to database");
}
/// <summary>
/// Determines if a given property name should be only saved
/// locally.
/// </summary>
/// <param name="property">
/// The name of the property that triggered the save event
/// </param>
/// <returns></returns>
private bool PropertyIsLocalOnly(string property)
{
return property == nameof(ConnectionInfo.OpenConnections) ||
property == nameof(ContainerInfo.IsExpanded) ||
property == nameof(ContainerInfo.Favorite);
}
private void UpdateLocalConnectionProperties(ContainerInfo rootNode)
{
var a = rootNode.GetRecursiveChildList().Select(info => new LocalConnectionPropertiesModel
{
ConnectionId = info.ConstantID,
Connected = info.OpenConnections.Count > 0,
Expanded = info is ContainerInfo c && c.IsExpanded,
Favorite = info.Favorite,
});
var serializedProperties = _localPropertiesSerializer.Serialize(a);
_dataProvider.Save(serializedProperties);
Runtime.MessageCollector.AddMessage(MessageClass.DebugMsg, "Saved local connection properties");
}
private void UpdateRootNodeTable(RootNodeInfo rootTreeNode, IDatabaseConnector databaseConnector)
{
var cryptographyProvider = new LegacyRijndaelCryptographyProvider();
string strProtected;
if (rootTreeNode != null)
{
if (rootTreeNode.Password)
{
var password = rootTreeNode.PasswordString.ConvertToSecureString();
strProtected = cryptographyProvider.Encrypt("ThisIsProtected", password);
}
else
{
strProtected = cryptographyProvider.Encrypt("ThisIsNotProtected", Runtime.EncryptionKey);
}
}
else
{
strProtected = cryptographyProvider.Encrypt("ThisIsNotProtected", Runtime.EncryptionKey);
}
var dbQuery = databaseConnector.DbCommand("DELETE FROM tblRoot");
dbQuery.ExecuteNonQuery();
if (rootTreeNode != null)
{
dbQuery =
databaseConnector.DbCommand(
"INSERT INTO tblRoot (Name, Export, Protected, ConfVersion) VALUES(\'" +
MiscTools.PrepareValueForDB(rootTreeNode.Name) + "\', 0, \'" + strProtected + "\'," +
ConnectionsFileInfo.ConnectionFileVersion.ToString(CultureInfo.InvariantCulture) + ")");
dbQuery.ExecuteNonQuery();
}
else
{
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg,
$"UpdateRootNodeTable: rootTreeNode was null. Could not insert!");
}
}
private void UpdateConnectionsTable(RootNodeInfo rootTreeNode, IDatabaseConnector databaseConnector)
{
var dataProvider = new SqlDataProvider(databaseConnector);
var currentDataTable = dataProvider.Load();
var cryptoProvider = new LegacyRijndaelCryptographyProvider();
var serializer = new DataTableSerializer(_saveFilter, cryptoProvider,
rootTreeNode.PasswordString.ConvertToSecureString());
serializer.SetSourceDataTable(currentDataTable);
var dataTable = serializer.Serialize(rootTreeNode);
//var dbQuery = databaseConnector.DbCommand("DELETE FROM tblCons");
//dbQuery.ExecuteNonQuery();
dataProvider.Save(dataTable);
}
private void UpdateUpdatesTable(IDatabaseConnector databaseConnector)
{
var dbQuery = databaseConnector.DbCommand("DELETE FROM tblUpdate");
dbQuery.ExecuteNonQuery();
dbQuery = databaseConnector.DbCommand("INSERT INTO tblUpdate (LastUpdate) VALUES(\'" + MiscTools.DBDate(DateTime.Now) + "\')");
dbQuery.ExecuteNonQuery();
}
private bool SqlUserIsReadOnly()
{
return Properties.Settings.Default.SQLReadOnly;
}
}
}

View File

@@ -0,0 +1,59 @@
using mRemoteNG.Config.DataProviders;
using mRemoteNG.Tools;
using System;
using System.IO;
using System.Security;
using mRemoteNG.Config.Serializers.ConnectionSerializers.Xml;
using mRemoteNG.App.Info;
using mRemoteNG.Config.Serializers;
using mRemoteNG.Connection;
using mRemoteNG.Credential;
using mRemoteNG.UI.Forms;
namespace mRemoteNG.Config.Connections
{
public class XmlConnectionsLoader : IConnectionsLoader
{
private readonly string _credentialFilePath = Path.Combine(CredentialsFileInfo.CredentialsPath, CredentialsFileInfo.CredentialsFile);
private readonly string _connectionFilePath;
private readonly ConnectionsService _connectionsService;
private readonly ICredentialService _credentialService;
public XmlConnectionsLoader(string connectionFilePath, ICredentialService credentialService, ConnectionsService connectionsService)
{
if (string.IsNullOrEmpty(connectionFilePath))
throw new ArgumentException($"{nameof(connectionFilePath)} cannot be null or empty");
if (!File.Exists(connectionFilePath))
throw new FileNotFoundException($"{connectionFilePath} does not exist");
_connectionFilePath = connectionFilePath;
_connectionsService = connectionsService.ThrowIfNull(nameof(connectionsService));
_credentialService = credentialService.ThrowIfNull(nameof(credentialService));
}
public SerializationResult Load()
{
var dataProvider = new FileDataProvider(_connectionFilePath);
var xmlString = dataProvider.Load();
var deserializer = new CredentialManagerUpgradeForm
{
ConnectionFilePath = _connectionFilePath,
NewCredentialRepoPath = _credentialFilePath,
ConnectionsService = _connectionsService,
CredentialService = _credentialService,
ConnectionDeserializer = new XmlConnectionsDeserializer(PromptForPassword)
};
var serializationResult = deserializer.Deserialize(xmlString);
return serializationResult;
}
private Optional<SecureString> PromptForPassword()
{
var password = MiscTools.PasswordDialog(Path.GetFileName(_connectionFilePath), false);
return password;
}
}
}

View File

@@ -2,8 +2,7 @@
using System.Linq;
using mRemoteNG.App;
using mRemoteNG.Config.DataProviders;
using mRemoteNG.Config.Serializers;
using mRemoteNG.Config.Serializers.Xml;
using mRemoteNG.Config.Serializers.ConnectionSerializers.Xml;
using mRemoteNG.Security;
using mRemoteNG.Security.Factories;
using mRemoteNG.Tree;
@@ -11,7 +10,7 @@ using mRemoteNG.Tree.Root;
namespace mRemoteNG.Config.Connections
{
public class XmlConnectionsSaver : ISaver<ConnectionTreeModel>
public class XmlConnectionsSaver : ISaver<IConnectionTreeModel>
{
private readonly string _connectionFileName;
private readonly SaveFilter _saveFilter;
@@ -27,20 +26,21 @@ namespace mRemoteNG.Config.Connections
_saveFilter = saveFilter;
}
public void Save(ConnectionTreeModel connectionTreeModel)
public void Save(IConnectionTreeModel connectionTreeModel, string propertyNameTrigger = "")
{
try
{
var cryptographyProvider = new CryptoProviderFactoryFromSettings().Build();
var connectionNodeSerializer = new XmlConnectionNodeSerializer26(
var serializerFactory = new XmlConnectionSerializerFactory();
var xmlConnectionsSerializer = serializerFactory.Build(
cryptographyProvider,
connectionTreeModel.RootNodes.OfType<RootNodeInfo>().First().PasswordString.ConvertToSecureString(),
_saveFilter);
var xmlConnectionsSerializer = new XmlConnectionsSerializer(cryptographyProvider, connectionNodeSerializer)
{
UseFullEncryption = mRemoteNG.Settings.Default.EncryptCompleteConnectionsFile
};
var xml = xmlConnectionsSerializer.Serialize(connectionTreeModel);
connectionTreeModel,
_saveFilter,
Properties.Settings.Default.EncryptCompleteConnectionsFile);
var rootNode = connectionTreeModel.RootNodes.OfType<RootNodeInfo>().First();
var xml = xmlConnectionsSerializer.Serialize(rootNode);
var fileDataProvider = new FileDataProviderWithRollingBackup(_connectionFileName);
fileDataProvider.Save(xml);
@@ -51,4 +51,4 @@ namespace mRemoteNG.Config.Connections
}
}
}
}
}

View File

@@ -14,13 +14,14 @@ namespace mRemoteNG.Config
private readonly IEqualityComparer<ICredentialRecord> _credentialComparer = new CredentialDomainUserComparer();
// maps a connectioninfo (by its id) to the credential object that was harvested
public Dictionary<Guid, ICredentialRecord> ConnectionToCredentialMap { get; } = new Dictionary<Guid, ICredentialRecord>();
public Dictionary<Guid, ICredentialRecord> ConnectionToCredentialMap { get; } =
new Dictionary<Guid, ICredentialRecord>();
public IEnumerable<ICredentialRecord> Harvest(XDocument xDocument, SecureString decryptionKey)
{
if (xDocument == null)
throw new ArgumentNullException(nameof(xDocument));
var cryptoProvider = new CryptoProviderFactoryFromXml(xDocument.Root).Build();
foreach (var element in xDocument.Descendants("Node"))
@@ -37,7 +38,9 @@ namespace mRemoteNG.Config
if (ConnectionToCredentialMap.Values.Contains(newCredential, _credentialComparer))
{
var existingCredential = ConnectionToCredentialMap.Values.First(record => _credentialComparer.Equals(newCredential, record));
var existingCredential =
ConnectionToCredentialMap.Values.First(record =>
_credentialComparer.Equals(newCredential, record));
ConnectionToCredentialMap.Add(connectionId, existingCredential);
}
else
@@ -47,21 +50,24 @@ namespace mRemoteNG.Config
return ConnectionToCredentialMap.Values.Distinct(_credentialComparer);
}
private ICredentialRecord BuildCredential(XElement element, ICryptographyProvider cryptographyProvider, SecureString decryptionKey)
private ICredentialRecord BuildCredential(XElement element,
ICryptographyProvider cryptographyProvider,
SecureString decryptionKey)
{
var credential = new CredentialRecord
{
Title = $"{element.Attribute("Username")?.Value}\\{element.Attribute("Domain")?.Value}",
Username = element.Attribute("Username")?.Value,
Domain = element.Attribute("Domain")?.Value,
Password = cryptographyProvider.Decrypt(element.Attribute("Password")?.Value, decryptionKey).ConvertToSecureString()
Password = cryptographyProvider.Decrypt(element.Attribute("Password")?.Value, decryptionKey)
.ConvertToSecureString()
};
return credential;
}
private static bool EntryHasSomeCredentialData(XElement e)
{
return e.Attribute("Username")?.Value != "" ||
return e.Attribute("Username")?.Value != "" ||
e.Attribute("Domain")?.Value != "" ||
e.Attribute("Password")?.Value != "";
}

View File

@@ -13,7 +13,8 @@ namespace mRemoteNG.Config
private readonly IDataProvider<string> _dataProvider;
private readonly ISecureDeserializer<string, IEnumerable<ICredentialRecord>> _deserializer;
public CredentialRecordLoader(IDataProvider<string> dataProvider, ISecureDeserializer<string, IEnumerable<ICredentialRecord>> deserializer)
public CredentialRecordLoader(IDataProvider<string> dataProvider,
ISecureDeserializer<string, IEnumerable<ICredentialRecord>> deserializer)
{
if (dataProvider == null)
throw new ArgumentNullException(nameof(dataProvider));

View File

@@ -13,7 +13,8 @@ namespace mRemoteNG.Config
private readonly IDataProvider<string> _dataProvider;
private readonly ISecureSerializer<IEnumerable<ICredentialRecord>, string> _serializer;
public CredentialRecordSaver(IDataProvider<string> dataProvider, ISecureSerializer<IEnumerable<ICredentialRecord>, string> serializer)
public CredentialRecordSaver(IDataProvider<string> dataProvider,
ISecureSerializer<IEnumerable<ICredentialRecord>, string> serializer)
{
if (dataProvider == null)
throw new ArgumentNullException(nameof(dataProvider));

View File

@@ -11,7 +11,8 @@ namespace mRemoteNG.Config
private readonly IDataProvider<string> _dataProvider;
private readonly CredentialRepositoryListDeserializer _deserializer;
public CredentialRepositoryListLoader(IDataProvider<string> dataProvider, CredentialRepositoryListDeserializer deserializer)
public CredentialRepositoryListLoader(IDataProvider<string> dataProvider,
CredentialRepositoryListDeserializer deserializer)
{
if (dataProvider == null)
throw new ArgumentNullException(nameof(dataProvider));

View File

@@ -0,0 +1,39 @@
using System.Collections.Generic;
using mRemoteNG.Config.DataProviders;
using mRemoteNG.Config.Serializers.CredentialProviderSerializer;
using mRemoteNG.Credential;
using mRemoteNG.Credential.Repositories;
using mRemoteNG.Tools;
namespace mRemoteNG.Config
{
public class CredentialRepositoryListPersistor : ISaver<IEnumerable<ICredentialRepository>>, ILoader<IEnumerable<ICredentialRepository>>
{
private readonly IReadOnlyCollection<ICredentialRepositoryFactory> _repositoryFactories;
private readonly IDataProvider<string> _dataProvider;
private readonly CredentialRepositoryListDeserializer _deserializer;
private readonly CredentialRepositoryListSerializer _serializer;
public CredentialRepositoryListPersistor(
IDataProvider<string> dataProvider,
IReadOnlyCollection<ICredentialRepositoryFactory> repositoryFactories)
{
_repositoryFactories = repositoryFactories.ThrowIfNull(nameof(repositoryFactories));
_dataProvider = dataProvider.ThrowIfNull(nameof(dataProvider));
_deserializer = new CredentialRepositoryListDeserializer();
_serializer = new CredentialRepositoryListSerializer();
}
public IEnumerable<ICredentialRepository> Load()
{
var data = _dataProvider.Load();
return _deserializer.Deserialize(data, _repositoryFactories);
}
public void Save(IEnumerable<ICredentialRepository> repositories, string propertyNameTrigger = "")
{
var data = _serializer.Serialize(repositories);
_dataProvider.Save(data);
}
}
}

Some files were not shown because too many files have changed in this diff Show More