Compare commits

...

2531 Commits
2.2 ... master

Author SHA1 Message Date
Adolfo Gómez García
c07c21b6a9
updating user interface manager 2022-10-31 20:53:30 +01:00
Adolfo Gómez García
937240a9fc
Refactoring Authenticators related and minor type checking fixes 2022-10-31 19:24:14 +01:00
Adolfo Gómez García
0cf33501b6
some minor test fixes 2022-10-31 14:10:10 +01:00
Adolfo Gómez García
15576fdc22
Updating user interface and making tests 2022-10-31 01:47:55 +01:00
Adolfo Gómez García
adb4b5326a
Adding user interface tests and refactoring user interface 2022-10-30 23:14:13 +01:00
Adolfo Gómez García
284508632c
Merge remote-tracking branch 'origin/v3.6' 2022-10-28 14:44:34 +02:00
Adolfo Gómez García
dd08257fb9
Merge remote-tracking branch 'origin/v3.5' into v3.6 2022-10-28 14:42:35 +02:00
Adolfo Gómez García
9d0df6cfae
small fix for client detecti 2022-10-28 14:42:09 +02:00
Adolfo Gómez García
71a0a228fb
merged backport of uds password encription 2022-10-27 14:55:43 +02:00
Adolfo Gómez García
910094065e
Merge remote-tracking branch 'origin/v3.6' 2022-10-27 14:47:03 +02:00
Adolfo Gómez García
7bd0d571e6
increased security by encrypting with own key, different on each instalation 2022-10-27 14:46:34 +02:00
Adolfo Gómez García
ab6c55ec58
Merge remote-tracking branch 'origin/v3.6' 2022-10-26 18:33:26 +02:00
Adolfo Gómez García
ad269b3c28
added initial export command for relevant UDS entities 2022-10-26 18:32:52 +02:00
Adolfo Gómez García
00ae824baf
Merge remote-tracking branch 'origin/v3.6' 2022-10-26 16:40:46 +02:00
Adolfo Gómez García
f3dd5753a3
fixed mfa_data name on db 2022-10-26 16:40:04 +02:00
Adolfo Gómez García
c4fcf7c57e
Merge remote-tracking branch 'origin/v3.6' 2022-10-21 00:56:54 +02:00
Adolfo Gómez García
13336b966e
updating delayed task 2022-10-21 00:56:12 +02:00
Adolfo Gómez García
7a64235440
Merge remote-tracking branch 'origin/v3.6' 2022-10-19 15:15:46 +02:00
Adolfo Gómez García
a76989d885
fixed not opening html5 2022-10-19 15:14:52 +02:00
Adolfo Gómez García
6b712d59a3
Merge remote-tracking branch 'origin/v3.6' 2022-10-19 14:20:18 +02:00
Adolfo Gómez García
5f0e5a5dfe
Merge remote-tracking branch 'origin/v3.5' into v3.6 2022-10-19 14:19:46 +02:00
Adolfo Gómez García
cfbce5aef5
fixed caching calendars 2022-10-19 14:19:30 +02:00
Adolfo Gómez García
92960d47ed
fixing merge issues 2022-10-18 20:47:26 +02:00
Adolfo Gómez García
8648fc605d
small rdp fix for bandit 2022-10-17 18:21:32 +02:00
Adolfo Gómez García
6a71a505b3
Merge remote-tracking branch 'origin/v3.6' 2022-10-17 16:05:05 +02:00
Adolfo Gómez García
d2cb4356f0
Added user interface default value 2022-10-17 13:51:35 +02:00
Adolfo Gómez García
4153fa0fd9
fixes after merge 3.6 2022-10-16 18:54:24 +02:00
Adolfo Gómez García
daf4bbcc37
Merge remote-tracking branch 'origin/v3.6' 2022-10-16 18:47:51 +02:00
Adolfo Gómez García
4f4f1f24fd
fixes for transports 2022-10-16 18:46:56 +02:00
Adolfo Gómez García
ffde47af94
Merge remote-tracking branch 'origin/v3.6' 2022-10-14 19:52:11 +02:00
Adolfo Gómez García
65d38d8722
updated translations 2022-10-14 19:51:58 +02:00
Adolfo Gómez García
db5a08b0c7
Merge remote-tracking branch 'origin/v3.6' 2022-10-14 19:51:53 +02:00
Adolfo Gómez García
2b767e6bf9
small transport fix¡ 2022-10-14 19:51:43 +02:00
Adolfo Gómez García
b16cea984c
Updated mfa string 2022-10-14 19:07:41 +02:00
Adolfo Gómez García
7769351d42
adding spice support for proxmox 2022-10-14 02:07:12 +02:00
Adolfo Gómez García
c2c5bc8aa1
Merged and fixed 2022-10-14 00:47:37 +02:00
Adolfo Gómez García
bf635a5e9a
small html fixes 2022-10-14 00:28:18 +02:00
Adolfo Gómez García
ae2ffccbc3
Added ask credentials dialog 2022-10-13 20:02:02 +02:00
Adolfo Gómez García
a005bf1ca0
fixed incorrect import 2022-10-13 15:05:32 +02:00
Adolfo Gómez García
013558eb77
Merge remote-tracking branch 'origin/v3.6' 2022-10-13 14:50:04 +02:00
Adolfo Gómez García
4de443395d
Updated translations 2022-10-13 14:49:38 +02:00
Adolfo Gómez García
9f2bc5417f
Fixed choiceField bug & MFA table 2022-10-13 14:47:37 +02:00
Adolfo Gómez García
9deb2dcd74
fixing up actor things 2022-10-13 00:04:26 +02:00
Adolfo Gómez García
2908b99435
Merge remote-tracking branch 'origin/v3.6' 2022-10-05 23:56:54 +02:00
Adolfo Gómez García
c6d1bf450c
Fixed choicefield generator for strings (was generating "name" instead of "text") 2022-10-05 23:52:28 +02:00
Adolfo Gómez García
26d26315ac
Merge remote-tracking branch 'origin/v3.6' 2022-10-05 23:06:23 +02:00
Adolfo Gómez García
cf21936f41
Added report for audit log for administration 2022-10-05 23:05:36 +02:00
Adolfo Gómez García
bcf185d54a
Merge remote-tracking branch 'origin/v3.6' 2022-10-05 19:36:09 +02:00
Adolfo Gómez García
5d9c8ee53f
better audit log 2022-10-05 19:35:45 +02:00
Adolfo Gómez García
e1acdf1c85
Merge remote-tracking branch 'origin/v3.6' 2022-10-05 19:16:53 +02:00
Adolfo Gómez García
7d3bfb5d3b
replaced "-" with ":" for checking if a save field is optional so we can provide the default value" 2022-10-05 19:16:30 +02:00
Adolfo Gómez García
186bbb11e3
Merge remote-tracking branch 'origin/v3.6' 2022-10-05 18:08:05 +02:00
Adolfo Gómez García
b474e63924
updated translations 2022-10-05 18:06:48 +02:00
Adolfo Gómez García
09bbc7f22b
Merge remote-tracking branch 'origin/v3.6' 2022-10-05 17:58:15 +02:00
Adolfo Gómez García
d48747abff
Added administration audit and fixed some translations 2022-10-05 17:54:07 +02:00
Adolfo Gómez García
57f2c35af0
Several Fixes:
* Upgraded typing information on models
* Removed unused DBFile
* renamed osmanager.png wrong name
2022-10-01 06:45:41 +02:00
Adolfo Gómez García
8c40320b64
Merge remote-tracking branch 'origin/v3.6' 2022-09-29 16:32:56 +02:00
Adolfo Gómez García
8b3ad295cc
Added MAC controled by uds for proxmox 2022-09-28 15:33:54 +02:00
Adolfo Gómez García
c03c479a14
Merge remote-tracking branch 'origin/v3.6' 2022-09-19 14:24:54 +02:00
Adolfo Gómez García
aa677353ad
fixed tree command 2022-09-19 14:23:44 +02:00
Adolfo Gómez García
9c6c4078b1
Fixed showConfig 2022-09-19 14:04:53 +02:00
Adolfo Gómez García
22cee394ee
Merge remote-tracking branch 'origin/v3.6' 2022-09-18 15:09:47 +02:00
Adolfo Gómez García
9fba2b45ad
Added "ERROR" user services on report with log 2022-09-18 15:09:17 +02:00
Adolfo Gómez García
8f4f6bc5cb
Merge remote-tracking branch 'origin/v3.6' 2022-09-17 00:14:59 +02:00
Adolfo Gómez García
71582fc415
fixed tree yaml generation 2022-09-16 23:27:12 +02:00
Adolfo Gómez García
0d1d38c18a
added showconfig in yaml 2022-09-16 22:34:40 +02:00
Adolfo Gómez García
4ec8841a57
added tree command to allow an full overview of uds data 2022-09-16 18:45:37 +02:00
Adolfo Gómez García
2ecab27b16
Merge remote-tracking branch 'origin/v3.6' 2022-09-16 02:05:23 +02:00
Adolfo Gómez García
8c6390733c
added showconfig command 2022-09-16 00:53:56 +02:00
Adolfo Gómez García
ade53fc893
Merge remote-tracking branch 'origin/v3.6' 2022-09-15 14:06:44 +02:00
Adolfo Gómez García
98f56ee58b
restored deleted line by mistake on auth 2022-09-15 13:06:13 +02:00
Adolfo Gómez García
1c01c35a87
Renamed config value 2022-09-14 12:09:06 +02:00
Adolfo Gómez García
673d1b6813
Added "Ultimate Security". When enabled, UDS will not cache encrypted credentials on server, so no credential can be redirected 2022-09-13 16:14:54 +02:00
Adolfo Gómez García
1ba12bb82d
Updated translations 2022-09-12 15:04:33 +02:00
Adolfo Gómez García
c6dfd3f362
Refactorizing gui variables - types 2022-09-12 14:41:15 +02:00
Adolfo Gómez García
f7888468c0
Refactorizing gui variables 2022-09-12 14:21:55 +02:00
Adolfo Gómez García
ce8bb30cf1
Merge remote-tracking branch 'origin/v3.6' 2022-09-12 12:40:16 +02:00
Adolfo Gómez García
f90f108869
Fixed UserInterface new guiField acceptance of values 2022-09-12 12:37:21 +02:00
Adolfo Gómez García
115d8562e1 Refactorized groups manager and fixed ipInNetwork
Signed-off-by: Adolfo Gómez García <dkmaster@dkmon.com>
2022-09-09 02:13:20 +02:00
Adolfo Gómez García
f6607d0416 Merged allow users remove from 3.6 2022-09-08 12:21:00 +02:00
Adolfo Gómez García
411bddd79d Merge remote-tracking branch 'origin/v3.6' 2022-09-08 12:20:35 +02:00
Adolfo Gómez García
88c3f9077b small cosmetic fix 2022-09-08 12:20:21 +02:00
Adolfo Gómez García
bd13a39845 erge remote-tracking branch 'origin/v3.6' 2022-09-08 12:16:03 +02:00
Adolfo Gómez García
2a01df542d Added "allow reset" and "allow release" to metapool. Automatically enabled is ALL member pools allows. 2022-09-08 12:15:18 +02:00
Adolfo Gómez García
c976536b5f added a new test and small fixes 2022-09-06 15:25:05 +02:00
Adolfo Gómez García
0721c833fb Fixed settings and security (changed order for security middleware to be after globalrequest to fill ips 2022-09-05 15:00:37 +02:00
Adolfo Gómez García
7b877e3aea Merge remote-tracking branch 'origin/v3.6' 2022-09-05 12:53:50 +02:00
Adolfo Gómez García
2733444355 Merge remote-tracking branch 'origin/v3.5' into v3.6 2022-09-05 12:53:31 +02:00
Adolfo Gómez García
cf6820aa2b Fixed security 2022-09-05 12:48:54 +02:00
Adolfo Gómez García
62f9f8f676 Merge remote-tracking branch 'origin/v3.6' 2022-09-02 16:47:40 +02:00
Adolfo Gómez García
6692e5ce6d Merge remote-tracking branch 'origin/v3.5' into v3.6 2022-09-02 16:45:25 +02:00
Adolfo Gómez García
1a85f60f4f Fixed "Database error" from OpenGnsys to include some more helpfull information 2022-09-02 16:45:11 +02:00
Adolfo Gómez García
2d6f55ef0b more tests and added a few exludes to coverage 2022-09-01 16:14:20 +02:00
Adolfo Gómez García
42b3826115 Added context to coverage and added first model test 2022-09-01 14:39:30 +02:00
Adolfo Gómez García
cb722c5e89 adding "build" to actor 2022-09-01 10:28:02 +02:00
Adolfo Gómez García
32b35c9651 fixed tests 2022-08-31 15:24:08 +02:00
Adolfo Gómez García
e33ea33797 Merge remote-tracking branch 'origin/v3.6' 2022-08-31 15:22:36 +02:00
Adolfo Gómez García
38b3318704 updated translations 2022-08-31 15:22:15 +02:00
Adolfo Gómez García
ccec281e0d Fixed text of maxServices 2022-08-31 15:09:55 +02:00
Adolfo Gómez García
4611c35b0d Merge remote-tracking branch 'origin/v3.6' 2022-08-31 13:54:55 +02:00
Adolfo Gómez García
8473b80978 fixed maxDeployed beinf overwriten 2022-08-31 13:52:45 +02:00
Adolfo Gómez García
230187d9ee small fix on service unmarshall 2022-08-31 13:52:11 +02:00
Adolfo Gómez García
c06c3df327 Merge remote-tracking branch 'origin/v3.6' 2022-08-31 12:52:37 +02:00
Adolfo Gómez García
092bb83001 Added "maxServices" to OpenGnsys to limit number of possible services provided by a single UDS Service 2022-08-31 12:45:33 +02:00
Adolfo Gómez García
5c6303fec0 Added more tests
* Fixed pytest to not look for classes
* Added 'destroy_after' property to user service for convenience
* Small cosmetic fixes
2022-08-31 00:10:57 +02:00
Adolfo Gómez García
b05c5b1396 Merge remote-tracking branch 'origin/v3.6' 2022-08-30 21:53:42 +02:00
Adolfo Gómez García
ac62aed420 upgrading cache updater to take into account maxDeployed to stop creating cache services 2022-08-30 21:53:03 +02:00
Adolfo Gómez García
8b540c350a Added more tests and a couple of cosmetic fixes 2022-08-30 17:40:29 +02:00
Adolfo Gómez García
db12077304 Adding more tests and fixes 2022-08-29 15:21:12 +02:00
Adolfo Gómez García
70488199b9 Merge remote-tracking branch 'origin/v3.6' 2022-08-29 15:20:50 +02:00
Adolfo Gómez García
3bdf4c18ad Fixed detecting canceling hanged 2022-08-29 15:20:43 +02:00
Adolfo Gómez García
e16be78ad5 Fixed remove or cancel detecting "hanged" canceling operations 2022-08-29 15:20:09 +02:00
Adolfo Gómez García
09c5cc2f43 Merge remote-tracking branch 'origin/v3.6' 2022-08-28 19:59:20 +02:00
Adolfo Gómez García
28319b216f updated compat level to 10 2022-08-28 19:23:04 +02:00
Adolfo Gómez García
07e6c3d0a8 unique ids testing 2022-08-28 13:41:57 +02:00
Adolfo Gómez García
96abb71d9c more tests 2022-08-28 13:23:04 +02:00
Adolfo Gómez García
7de259af87 adding more tests 2022-08-28 01:31:09 +02:00
Adolfo Gómez
1567996ebc
Delete LICENSE.txt 2022-08-27 20:59:25 +02:00
Adolfo Gómez
4edb3b3f0c
Create LICENSE 2022-08-27 20:59:08 +02:00
Adolfo Gómez García
07987504c3 added LICENSE.txt 2022-08-27 20:57:12 +02:00
Adolfo Gómez García
5f93b68c25 Modified transport to adapt for accept future client scripts in more langs 2022-08-27 19:09:12 +02:00
Adolfo Gómez García
d0e9c96573 Added new test and make pytests use parallel execution of tests using pytest-xdist 2022-08-25 22:28:57 +02:00
Adolfo Gómez García
a52ad44ef1 added basic web test and download testing 2022-08-25 17:55:51 +02:00
Adolfo Gómez García
69b778c922 Adding more tests and fixes 2022-08-24 22:16:47 +02:00
Adolfo Gómez García
5f12c2e7b3 Merge remote-tracking branch 'origin/v3.6' 2022-08-24 11:09:54 +02:00
Adolfo Gómez García
1a4a41a6b9 fixed logout building absolute url 2022-08-24 11:09:20 +02:00
Adolfo Gómez García
739b0c7f81 fixed logout absolute url building on logout 2022-08-24 11:08:56 +02:00
Adolfo Gómez García
78c7039c54 Merge remote-tracking branch 'origin/v3.6' 2022-08-23 15:23:25 +02:00
Adolfo Gómez García
e5e8ad5fbd Adding radius challenge MFA provided by Daniel Torregrosa (Thanks!) 2022-08-23 15:22:48 +02:00
Adolfo Gómez García
21d2a6fb27 Done actor initialize tests and fixed actor v3 initialization 2022-08-22 15:46:15 +02:00
Adolfo Gómez García
fa3e30c518 fixing tests 2022-08-21 19:37:32 +02:00
Adolfo Gómez García
c6be2562ee added test for initialize for managed machines 2022-08-21 14:23:03 +02:00
Adolfo Gómez García
4c19247a2c Adding more actor tests 2022-08-20 18:40:05 +02:00
Adolfo Gómez García
a6b502e0ba more fixes 2022-08-19 21:09:45 +02:00
Adolfo Gómez García
b12730d160 more test prepartion and fixes 2022-08-19 20:20:29 +02:00
Adolfo Gómez García
07031850e5 Advancing on tests 2022-08-19 00:46:38 +02:00
Adolfo Gómez García
a42857038c Fixes on migrations & finishing supporting test methods 2022-08-19 00:13:45 +02:00
Adolfo Gómez García
d19969fce3 Fixed migration field names on squashed migration. ManyToManyFields where not renamed on empty tables, so i had to move "manually" the creation of the fields on squashed one. Not a big issue, but strange. 2022-08-19 00:13:01 +02:00
Adolfo Gómez García
195e13682c Adding xxhash as fast alternative for some hash calcs (as cache i.e.) 2022-08-18 20:05:43 +02:00
Adolfo Gómez García
95b9b79b02 Adding testing elements 2022-08-18 19:46:22 +02:00
Adolfo Gómez García
225fed3012 Merge remote-tracking branch 'origin/v3.6' 2022-08-18 13:56:46 +02:00
Adolfo Gómez García
86ebd7766e Merge remote-tracking branch 'origin/v3.5' into v3.6 2022-08-18 13:56:32 +02:00
Adolfo Gómez García
83394f0d34 Fixed XEN/XCP-NG network moving on service 2022-08-18 13:56:07 +02:00
Adolfo Gómez García
d5eafb1179 Refactorized transport to adapt parameter typing 2022-08-17 23:42:33 +02:00
Adolfo Gómez García
11b56571d2 Removing old v2 actor rests. Not supported anymore 2022-08-17 20:26:51 +02:00
Adolfo Gómez García
18de1193b4 Updating tests and fied sample settings
- Fixed taskManager runner (added new parameters)
- refactoring and generating base rest testing
2022-08-17 20:15:32 +02:00
Adolfo Gómez García
d8164a9b4d Merge remote-tracking branch 'origin/v3.6' 2022-08-17 19:03:45 +02:00
Adolfo Gómez García
4f0ea76666 Merge remote-tracking branch 'origin/v3.5' into v3.6 2022-08-17 15:06:49 +02:00
Adolfo Gómez García
c34fc41f56 unmanaged fix 2022-08-17 14:55:33 +02:00
Adolfo Gómez García
18e9cab9ef fixed local log 2022-08-17 14:33:44 +02:00
Adolfo Gómez García
4d3aa1d17c Merge remote-tracking branch 'origin/v3.6' 2022-08-17 14:13:17 +02:00
Adolfo Gómez García
6053e34d1d Merge remote-tracking branch 'origin/v3.5' into v3.6 2022-08-17 14:12:52 +02:00
Adolfo Gómez García
90aa455586 fixed unmanaged 2022-08-17 14:12:13 +02:00
Adolfo Gómez García
f274ae2fe3 fixed a bit the tests and tests tools 2022-08-16 21:40:46 +02:00
Adolfo Gómez García
195d2a1336 More request definition cleanups 2022-08-16 14:30:20 +02:00
Adolfo Gómez García
12846f9b1f Small XenApi Fixes, requests cleanup 2022-08-16 14:29:38 +02:00
Adolfo Gómez García
748d8d7464 Replaced session PickleSerializer with Json-bases serializer (custom one). More secure 2022-08-16 13:08:47 +02:00
Adolfo Gómez García
0ed1f3ccee Added coverage support on testing 2022-08-16 00:18:32 +02:00
Adolfo Gómez García
fe712d27b7 adding services fixtures 2022-08-16 00:10:48 +02:00
Adolfo Gómez García
c56666ed4b small test fixes 2022-08-15 23:34:52 +02:00
Adolfo Gómez García
01184582b3 Fixing up testing and make them usable from vscode sidebar 2022-08-15 23:31:23 +02:00
Adolfo Gómez García
76745e8624 Fixing up bandit recomendations & minor typo errors 2022-08-15 14:10:17 +02:00
Adolfo Gómez García
17b040d9b3 adding tests 2022-08-15 00:29:39 +02:00
Adolfo Gómez García
07e1c6214e Added Test Service 2022-08-14 23:36:22 +02:00
Adolfo Gómez García
de9bbfc896 removeing deprecated pyqt methods 2022-08-14 21:57:28 +02:00
Adolfo Gómez García
d84977dee0 Merge remote-tracking branch 'origin/v3.6' 2022-08-14 21:53:33 +02:00
Adolfo Gómez García
11041ff44f Merge remote-tracking branch 'origin/v3.5' into v3.6 2022-08-14 21:52:40 +02:00
Adolfo Gómez García
bc2328a239 fixing up sqlite 2022-08-14 21:52:24 +02:00
Adolfo Gómez García
98826504d6 fixing up sqlite 2022-08-14 21:52:06 +02:00
Adolfo Gómez García
54ea57f330 added cache to checkIdle on macos 2022-08-12 22:49:19 +02:00
Adolfo Gómez García
cb4b2184a4 finishin operations for macos 2022-08-12 20:50:58 +02:00
Adolfo Gómez García
99fbb35512 Merge branch 'master' of github.com:dkmstr/openuds 2022-08-08 15:27:40 +02:00
Adolfo Gómez García
1374375ab9 Creating a couple of "test services" so we can make some automated tests 2022-08-08 15:27:30 +02:00
Adolfo Gómez García
909ef91181 Creating a couple of "test services" so we can make some automated tests 2022-08-08 15:27:11 +02:00
Adolfo Gómez García
01f9a1f9cd fixed for usersession 2022-08-07 13:32:07 +02:00
Adolfo Gómez García
78a3216b51 adding initial tracking of individial sessions on user services 2022-08-07 13:24:33 +02:00
Adolfo Gómez García
3a990e19a6 Merge remote-tracking branch 'origin/v3.5' into v3.6 2022-08-06 20:19:36 +02:00
Adolfo Gómez García
d9d3bc452c fixed login/logout 2022-08-06 20:19:23 +02:00
Adolfo Gómez García
e5c8b9c763 Merge remote-tracking branch 'origin/v3.6' 2022-08-06 19:30:31 +02:00
Adolfo Gómez García
e51e13b821 Merge remote-tracking branch 'origin/v3.6' 2022-08-06 19:30:01 +02:00
Adolfo Gómez García
8a150439ae Merge remote-tracking branch 'origin/v3.5' into v3.6 2022-08-06 19:29:43 +02:00
Adolfo Gómez García
ec89a2cfa8 adding session id to uds actor 2022-08-06 19:23:51 +02:00
Adolfo Gómez García
08f14bff57 Fixing up unmanaged actor 2022-08-05 13:33:57 +02:00
Adolfo Gómez García
653bff420f Fixed logout notification 2022-08-05 13:19:47 +02:00
Adolfo Gómez García
73a3c89e04 Fixed logout notification 2022-08-05 13:05:52 +02:00
Adolfo Gómez García
e79753748e Merge remote-tracking branch 'origin/v3.5' into v3.6 2022-08-04 21:56:39 +02:00
Adolfo Gómez García
adaabf9d83 Fixing up unmanaged actor 2022-08-04 21:37:33 +02:00
Adolfo Gómez García
0ed8bd6027 Merge branch 'master' of github.com:dkmstr/openuds 2022-08-04 15:55:52 +02:00
Adolfo Gómez García
ff25b4945a Started MacOS Unmanaged Support 2022-08-04 15:55:47 +02:00
Adolfo Gómez García
3a2a2a4669 Merge remote-tracking branch 'origin/v3.6' 2022-08-04 15:08:10 +02:00
Adolfo Gómez García
a8a9b24596 exit_url is now relative by default 2022-08-04 15:07:52 +02:00
Adolfo Gómez García
552ba3796b adding __slots__ to optimize a bit code 2022-08-02 15:26:30 +02:00
Adolfo Gómez García
a6c6bca2fd Merge remote-tracking branch 'origin/v3.6' 2022-08-01 14:39:34 +02:00
Adolfo Gómez García
f24c77f20a removed mic redirect on mac py default for xfreerdp (2.8 is "crashing"?) 2022-08-01 14:37:39 +02:00
Adolfo Gómez García
a3c27dbd72 minor fixes 2022-08-01 14:10:55 +02:00
Adolfo Gómez García
ec7cf91579 small fix to remove "remember_device" if not set 2022-07-29 17:06:49 +02:00
Adolfo Gómez García
d2fa5e38d0 small fix to remove "remember_device" if not set 2022-07-29 16:59:33 +02:00
Adolfo Gómez García
c98f8e31d5 Merge remote-tracking branch 'origin/v3.6' 2022-07-29 16:42:50 +02:00
Adolfo Gómez García
ada5374db5 fixed showing MFA on list 2022-07-29 16:42:24 +02:00
Adolfo Gómez García
301d68b1a2 fixed authenticators rest 2022-07-29 16:38:03 +02:00
Adolfo Gómez García
46b6bb2305 Fixes 2022-07-29 16:23:53 +02:00
Adolfo Gómez García
93ba05f6cb Fixes to MFAs 2022-07-29 16:20:14 +02:00
Adolfo Gómez García
e3976794d9 some minor refactors & used sys.intern as key for rest api 2022-07-28 13:22:02 +02:00
Adolfo Gómez García
94cf5582e2 Added RH-based unmanaged actor 2022-07-26 13:33:09 +02:00
Adolfo Gómez García
f10b370eff Added Calendar Actions to remove ALL cache items 2022-07-18 18:03:51 +02:00
Adolfo Gómez García
692c8601bf Merge remote-tracking branch 'origin/v3.6' 2022-07-15 10:27:02 +02:00
Adolfo Gómez García
afcfffbd29 Merge remote-tracking branch 'origin/v3.5' into v3.6 2022-07-15 10:26:47 +02:00
Adolfo Gómez García
3cfbdc86e0 Small cryptomanager typing fix 2022-07-15 10:26:02 +02:00
Adolfo Gómez García
063fa46899 Merge remote-tracking branch 'origin/v3.6' 2022-07-14 12:49:41 +02:00
Adolfo Gómez García
d1329849f3 Merge remote-tracking branch 'origin/v3.5' into v3.6 2022-07-14 12:49:29 +02:00
Adolfo Gómez García
ba759b3652 Fixed Proxmox MAC generation for internal DB (Case sensitive...) 2022-07-14 12:49:14 +02:00
Adolfo Gómez García
1e3478314b Reformating 2022-07-14 12:48:54 +02:00
Adolfo Gómez García
02aec9ebea Moved required client versio ton core __init__,py 2022-07-13 13:14:20 +02:00
Adolfo Gómez García
e33d63158a updated antular 2022-07-10 13:03:47 +02:00
Adolfo Gómez García
33258b0dcc Merge remote-tracking branch 'origin/v3.6' 2022-07-10 12:58:44 +02:00
Adolfo Gómez García
f5d2776478 Adde "custom html" support for MFA input code page 2022-07-06 17:41:09 +02:00
Adolfo Gómez García
0496117fc1 Fixing up mfa to include request on more methods 2022-07-06 14:34:42 +02:00
Adolfo Gómez García
b8e0dbf0c5 Merge remote-tracking branch 'origin/v3.6' 2022-07-06 13:24:41 +02:00
Adolfo Gómez García
89864b11c2 Fixed window upen 2022-07-06 13:20:10 +02:00
Adolfo Gómez García
fcdf599e18 Fixed HTML5 window opening & MFA 2022-07-06 13:17:35 +02:00
Adolfo Gómez García
05b6bebf36 bumping version to 3.6 2022-07-05 15:25:58 +02:00
Adolfo Gómez García
cdbc8d7ba1 bumping to v3.6 2022-07-05 15:20:44 +02:00
Adolfo Gómez García
072a722b09 Added udsactor-unamanged for rpm and bumped version to 3.6 2022-07-05 15:03:41 +02:00
Adolfo Gómez García
2d2e2d7b1f Upgrading version to next intermediary release 2022-07-05 14:52:17 +02:00
Adolfo Gómez García
1008bf988a upgraded migrations to adapt to MFA 2022-07-05 14:33:34 +02:00
Adolfo Gómez García
8ec815a75b Merge remote-tracking branch 'origin/v3.5-mfa' 2022-07-04 22:11:06 +02:00
Adolfo Gómez García
f4da75cea9 Adding MFA support to existing auths 2022-07-04 22:10:06 +02:00
Adolfo Gómez García
1c65722d24 added mfaData to admin 2022-07-04 21:29:41 +02:00
Adolfo Gómez García
2736390f95 Merge remote-tracking branch 'origin/v3.5-mfa' 2022-07-02 00:18:09 +02:00
Adolfo Gómez García
8783db925f fixed rest of MFA 2022-07-02 00:17:23 +02:00
Adolfo Gómez García
8b8bf7a321 Merge remote-tracking branch 'origin/v3.5-mfa' 2022-07-01 20:23:27 +02:00
Adolfo Gómez García
5e61871091 Added network to MFA and added initGui suppor for "providers" 2022-07-01 20:23:13 +02:00
Adolfo Gómez García
9a65d13890 test 2022-06-30 17:14:20 +02:00
Adolfo Gómez García
af2c01af66 fixing up merges from 3.5-mfa 2022-06-30 16:50:10 +02:00
Adolfo Gómez García
80b26446f6 translations 2022-06-30 16:45:13 +02:00
Adolfo Gómez García
a0ac50d9c2 small label fixes 2022-06-30 16:24:46 +02:00
Adolfo Gómez García
091a834074 Merge remote-tracking branch 'origin/v3.5-mfa' 2022-06-29 23:22:27 +02:00
Adolfo Gómez García
6094f55182 small MFA fixes for generic SMS 2022-06-29 23:17:52 +02:00
Adolfo Gómez García
11d9c77a79 Tested correct working of generic SMS sending using HTTP 2022-06-29 23:14:26 +02:00
Adolfo Gómez García
76e67b1f63 Fixing up MFA 2022-06-29 22:05:45 +02:00
Adolfo Gómez García
64fc61a2d6 Added generic SMS using HTTP server 2022-06-28 20:47:47 +02:00
Adolfo Gómez García
7b921ac161 Merge remote-tracking branch 'origin/v3.5-mfa' 2022-06-28 16:40:51 +02:00
Adolfo Gómez García
57b19757b9 fixed MFA 2022-06-28 16:40:35 +02:00
Adolfo Gómez García
0d281af982 merged 3.5-mfa till now 2022-06-28 16:38:25 +02:00
Adolfo Gómez García
365e2c56d3 Fixed mitration from MFA 2022-06-28 16:30:14 +02:00
Adolfo Gómez García
29fd2c068a Merge remote-tracking branch 'origin/v3.5-mfa' 2022-06-28 16:22:28 +02:00
Adolfo Gómez García
aec2f5b57f Added "not tested" generic SMS sending using an HTTP server 2022-06-28 14:50:39 +02:00
Adolfo Gómez García
4ba8bc9c5a Integrating mfa branch on 4.0. Initial changes. Work to do 2022-06-27 21:58:21 +02:00
Adolfo Gómez García
77e021a371 Fixed auth mfaIdentifier to provide userName 2022-06-27 21:30:59 +02:00
Adolfo Gómez García
2a25a8f70a removed nonsense comment copied from "sample" code used to create notifier 2022-06-24 16:53:59 +02:00
Adolfo Gómez García
b99a8de8c6 Added metadata config fields for SAML 2022-06-24 16:53:33 +02:00
Adolfo Gómez García
f922bbcd2e Removed legacy actors 2022-06-24 16:52:58 +02:00
Adolfo Gómez García
4db98684d3 refactorized 2022-06-24 13:27:45 +02:00
Adolfo Gómez García
a948d5eeb1 Added email MFA 2022-06-24 13:26:39 +02:00
Adolfo Gómez García
c7e6857492 If user has already been authorized, no mfa is allowed 2022-06-24 11:28:46 +02:00
Adolfo Gómez García
aaa4216862 Fixed MFA & Added remember me 2022-06-23 20:24:56 +02:00
Adolfo Gómez García
098396be87 Updared admin interface 2022-06-23 16:46:19 +02:00
Adolfo Gómez García
d02c693202 Fixed mfas rest path 2022-06-23 16:42:46 +02:00
Adolfo Gómez García
cb11a26fbe updated mfa icon 2022-06-23 16:23:27 +02:00
Adolfo Gómez García
43934d425f added timeout value 2022-06-23 15:56:14 +02:00
Adolfo Gómez García
5b499de983 Initial MFA done 2022-06-23 15:14:39 +02:00
Adolfo Gómez García
00d9f5759d Merge remote-tracking branch 'origin/v3.5' into v3.5-mfa 2022-06-23 14:05:25 +02:00
Adolfo Gómez García
a3bcedc38f Merge remote-tracking branch 'origin/v3.5' 2022-06-23 13:25:21 +02:00
Adolfo Gómez García
c6a40ac182 fixed global logout on federated auth 2022-06-23 12:51:41 +02:00
Adolfo Gómez García
7d9ffca559 Fixex internal db with sqlite 2022-06-23 12:23:22 +02:00
Adolfo Gómez García
ec02f63cac advancing on MFA implementation 2022-06-23 12:16:08 +02:00
Adolfo Gómez García
0de655d14f Adding MFA authorization page 2022-06-22 23:39:11 +02:00
Adolfo Gómez García
7ab6d439cb Fixed migration tree 2022-06-22 21:53:00 +02:00
Adolfo Gómez García
68e327847b Created migrations 2022-06-22 21:40:43 +02:00
Adolfo Gómez García
81ea07f0a0 Created migrations 2022-06-22 21:40:23 +02:00
Adolfo Gómez García
d7540c3305 Adding MFA 2022-06-22 17:04:18 +02:00
Adolfo Gómez García
2eff59908a Merge remote-tracking branch 'origin/v3.5' 2022-06-21 14:28:30 +02:00
Adolfo Gómez García
f43b9c7bfd Fixed small actor network card check and removed required of network for interface select 2022-06-20 19:42:36 +02:00
Adolfo Gómez García
a135e3ae9b Removed cache of SP metadata 2022-06-20 15:10:27 +02:00
Adolfo Gómez García
28db2f4e93 Added security options to SAML 2022-06-20 15:09:33 +02:00
Adolfo Gómez García
972c48ddee Merge branch 'v3.5' of github.com:dkmstr/openuds into v3.5 2022-06-17 22:27:37 +02:00
Adolfo Gómez García
118e642700 Fixed frame over buttons ons unmanaged setup 2022-06-17 22:27:23 +02:00
Adolfo Gómez
dfa441871b Fixed logger on Windows (import mistake) 2022-06-17 22:07:25 +02:00
Adolfo Gómez
18c5e3a242 Fixed logger on Windows (import mistake) 2022-06-17 21:59:24 +02:00
Adolfo Gómez García
3a4d571a6c Fixed actor tools changes for typeinfo 2022-06-17 13:54:52 +02:00
Adolfo Gómez García
3cc42e1e73 Adding udsuser to preconnect 2022-06-16 12:52:27 +02:00
Adolfo Gómez García
ffe9baa9a5 Adding udsuser to preconnect 2022-06-16 12:49:28 +02:00
Adolfo Gómez García
0b05009d3f Adding support for several network cards ond unmanaged 2022-06-14 16:51:37 +02:00
Adolfo Gómez García
fefd53c84f Merge remote-tracking branch 'origin/v3.5' 2022-06-13 11:25:25 +02:00
Adolfo Gómez García
b34b12ec9f Fixed RDP Transport with RDS Sessions 2022-06-13 11:24:44 +02:00
Adolfo Gómez García
1fb8956679 Merge remote-tracking branch 'origin/v3.5' 2022-06-07 22:05:20 +02:00
Adolfo Gómez García
fb70524cb3 fixed sampling points 2022-06-07 21:03:49 +02:00
Adolfo Gómez García
4c66401e4f Fixes to reports 2022-06-07 15:38:57 +02:00
Adolfo Gómez García
364ebd6f3a Fixed several reports 2022-06-06 22:29:42 +02:00
Adolfo Gómez García
d96a5e69b0 Merge remote-tracking branch 'origin/v3.5' 2022-06-06 21:42:55 +02:00
Adolfo Gómez García
493cbbb4e7 fixed samplingPoints 2022-06-06 21:42:04 +02:00
Adolfo Gómez García
b9330fd28a Merge remote-tracking branch 'origin/v3.5' 2022-06-06 21:26:42 +02:00
Adolfo Gómez García
5277a74c1c Backport of 4.0 report fixes 2022-06-06 21:26:29 +02:00
Adolfo Gómez García
b7d0fef8bb Stats reports fixes 2022-06-06 21:26:07 +02:00
Adolfo Gómez García
6cf8eb3e77 Fixed admin lang change 2022-06-06 19:06:11 +02:00
Adolfo Gómez García
214c04d636 Remaking counters stats 2022-06-06 19:04:11 +02:00
Adolfo Gómez García
1e01339b93 Fixed language change on admin 2022-06-06 19:03:47 +02:00
Adolfo Gómez García
8f260f5efb Merge remote-tracking branch 'origin/v3.5' 2022-06-03 13:49:23 +02:00
Adolfo Gómez García
2695a5ccdc small cosmetic fix 2022-06-03 13:44:37 +02:00
Adolfo Gómez García
9343f7c263 Added CERTIFICATE_BUNDLE_PATH possible variable on environment to check certificates 2022-06-03 13:44:00 +02:00
Adolfo Gómez García
7775964d62 Added never cache to indes 2022-05-26 15:57:14 +02:00
Adolfo Gómez García
3b0e100021 Merge remote-tracking branch 'origin/v3.5' 2022-05-26 15:37:37 +02:00
Adolfo Gómez García
a207e8f65f Fixed csrf_field name 2022-05-26 15:36:56 +02:00
Adolfo Gómez García
123b2243db updated main 2022-05-26 15:22:30 +02:00
Adolfo Gómez García
c9ef435d78 Merge remote-tracking branch 'origin/v3.5' 2022-05-26 15:20:25 +02:00
Adolfo Gómez García
0a0f2771ae Updated error page logic 2022-05-26 15:00:50 +02:00
Adolfo Gómez García
2f403d3336 Added configurable logout url 2022-05-23 21:36:52 +02:00
Adolfo Gómez García
9c0f2a1859 small README fix 2022-05-23 21:23:10 +02:00
Adolfo Gómez García
ab35451121 Creating tests 2022-05-22 21:51:43 +02:00
Adolfo Gómez García
b0327c4fa0 Creating tests 2022-05-22 21:51:11 +02:00
Adolfo Gómez García
928a7aa58f Creating tests 2022-05-22 21:50:51 +02:00
Adolfo Gómez García
f9e2ccb7d3 Merge remote-tracking branch 'origin/v3.5' 2022-05-20 09:08:13 +02:00
Adolfo Gómez García
8db0e515a5 merged 3.5 user frontend 2022-05-20 09:04:25 +02:00
Adolfo Gómez García
ceb5fd9bde updated csrf info 2022-05-20 09:03:45 +02:00
Adolfo Gómez García
fd0fbf63f0 Added help to configuration 2022-05-19 20:32:28 +02:00
Adolfo Gómez García
8d3653825a Removed Proxy, cleaned some more config variables, and added help to config variables. Refactorized a few config 2022-05-19 18:05:11 +02:00
Adolfo Gómez García
8836815186 improved safeHTML method 2022-05-19 09:17:42 +02:00
Adolfo Gómez García
2eb840e1c7 Merge remote-tracking branch 'origin/v3.5' 2022-05-19 09:15:42 +02:00
Adolfo Gómez García
7bfa6a6c4f Updated admin interface 2022-05-19 09:13:28 +02:00
Adolfo Gómez García
858b79614b Added improved safeHTML method to frontend 2022-05-19 09:11:10 +02:00
Adolfo Gómez García
859f18883f Updated user frontend 2022-05-17 16:48:40 +02:00
Adolfo Gómez García
66f62bcda0 Merge remote-tracking branch 'origin/v3.5' 2022-05-17 16:45:06 +02:00
Adolfo Gómez García
6b8e828835 adding messaging config 2022-05-17 16:45:04 +02:00
Adolfo Gómez García
45b47ce702 Updated user interface 2022-05-17 16:42:06 +02:00
Adolfo Gómez García
d56ce0c653 advancing on notifications 2022-05-15 22:48:17 +02:00
Adolfo Gómez García
801a4ef1a7 Adding level to notifiers and fixed up admin angular 2022-05-15 22:25:17 +02:00
Adolfo Gómez García
12c32bde14 fixed SAML auth 2022-05-10 15:35:52 +02:00
Adolfo Gómez García
002b51a656 Merge remote-tracking branch 'origin/v3.5' 2022-05-10 15:32:28 +02:00
Adolfo Gómez García
dd98ba5653 Remove clear of session on login (nonsense)0 2022-05-10 15:31:29 +02:00
Adolfo Gómez García
3405797bb8 Adding messaging 2022-05-09 21:04:36 +02:00
Adolfo Gómez García
5ce7d008e6 Merge remote-tracking branch 'origin/v3.5' 2022-04-29 16:06:12 +02:00
Adolfo Gómez García
0fe5b32224 Fixed RDP usb redir 2022-04-29 14:59:16 +02:00
Adolfo Gómez García
3ff7d1ea88 Changed script name to be authCallback URL 2022-04-28 18:16:22 +02:00
Adolfo Gómez García
91921537ce Adding tests 2022-04-27 00:37:23 +02:00
Adolfo Gómez García
0f587a4ec1 Merge remote-tracking branch 'origin/v3.5' 2022-04-25 14:31:45 +02:00
Adolfo Gómez García
a0adc1ded3 redirect to logout 2022-04-25 14:29:40 +02:00
Adolfo Gómez García
4f5cc505d3 redirect to logout 2022-04-25 14:28:18 +02:00
Adolfo Gómez García
8bac68b55b Fixed locked on machines_multi 2022-04-25 14:23:46 +02:00
Adolfo Gómez García
b5412e70fd Fixed Lock of service multi 2022-04-25 14:18:46 +02:00
Adolfo Gómez García
6a178478b4 Updated signatures for type checking on all models 2022-04-24 19:07:44 +02:00
Adolfo Gómez García
f3af6a13ff Merge remote-tracking branch 'origin/v3.5' 2022-04-24 17:14:33 +02:00
Adolfo Gómez García
75cd3c4845 Chanced a couple of declarations 2022-04-24 17:13:38 +02:00
Adolfo Gómez García
4067a5c423 Updating typy hints, etc... 2022-04-24 17:04:47 +02:00
Adolfo Gómez García
fbd7edf709 updating rest 2022-04-24 16:54:07 +02:00
Adolfo Gómez García
e8400b8702 updating models 2022-04-24 16:53:10 +02:00
Adolfo Gómez García
e8c45b568d Fixing up some typos 2022-04-24 16:52:45 +02:00
Adolfo Gómez García
3a16b75e82 fixed requests typo 2022-04-23 20:29:12 +02:00
Adolfo Gómez García
586e1c3789 moving REST dispatcher to its own file 2022-04-23 20:23:28 +02:00
Adolfo Gómez García
67f115e50f Merge remote-tracking branch 'origin/v3.5' 2022-04-12 22:54:01 +02:00
Adolfo Gómez García
540a2b83be Added brand to configjs so we can use it on a future 2022-04-12 22:30:32 +02:00
Adolfo Gómez García
b0255a980c Merge remote-tracking branch 'origin/v3.5' 2022-04-12 21:37:06 +02:00
Adolfo Gómez García
aa4d157c30 Fixed request session timeout 2022-04-12 21:36:17 +02:00
Adolfo Gómez García
aaa0f004ee Merge remote-tracking branch 'origin/v3.5' 2022-04-12 14:34:19 +02:00
Adolfo Gómez García
69ca93586a Fixed transport & groups deletion 2022-04-12 14:34:06 +02:00
Adolfo Gómez García
5a47d09c1a Merge remote-tracking branch 'origin/v3.5' 2022-04-08 15:29:49 +02:00
Adolfo Gómez García
cf283bba0f Fixed calendar action delete all groups 2022-04-08 15:29:13 +02:00
Adolfo Gómez García
0525bd4317 Merge remote-tracking branch 'origin/v3.5' 2022-04-06 21:32:31 +02:00
Adolfo Gómez García
9abaada7cb Fixed perms 2022-04-06 21:32:16 +02:00
Adolfo Gómez García
b359892454 images 2022-04-06 20:19:11 +02:00
Adolfo Gómez García
7d5ff93946 Merge remote-tracking branch 'origin/v3.5' 2022-04-06 14:22:53 +02:00
Adolfo Gómez García
927a86c835 Added USB redirection policy for windows 2022-04-06 14:21:52 +02:00
Adolfo Gómez García
4e78c2837c Fixed address passing 2022-04-04 21:20:22 +02:00
Adolfo Gómez García
502cebfc3a Merge remote-tracking branch 'origin/v3.5' 2022-04-04 21:16:37 +02:00
Adolfo Gómez García
2b5aa9c9a4 Fixed address passing to tunnel 2022-04-04 21:12:54 +02:00
Adolfo Gómez García
0f3f50f63c Added ThreadPoolExecutor to check handshakes... 2022-03-30 15:54:09 +02:00
Adolfo Gómez García
69192a2a1b Merge remote-tracking branch 'origin/v3.5' 2022-03-30 15:43:38 +02:00
Adolfo Gómez García
0ca85c5749 Changed check handshake method 2022-03-30 15:43:30 +02:00
Adolfo Gómez García
b3047e366d Fixed 3.5 tunnel DOS attacks tolerance 2022-03-30 15:11:00 +02:00
Adolfo Gómez García
4577552773 Fixed log 2022-03-29 22:36:27 +02:00
Adolfo Gómez García
bec985e360 Restored timeout 2022-03-29 22:14:18 +02:00
Adolfo Gómez García
ccb2dfbdbe Merge remote-tracking branch 'origin/v3.5' 2022-03-29 22:13:50 +02:00
Adolfo Gómez García
d2ef6e3704 Restored timeout 2022-03-29 22:12:43 +02:00
Adolfo Gómez García
b50b27d96e Remove external timeout 2022-03-29 22:06:17 +02:00
Adolfo Gómez García
bf4bb3f704 Merge remote-tracking branch 'origin/v3.5' 2022-03-29 22:01:32 +02:00
Adolfo Gómez García
5fb4461934 Remove external timeout 2022-03-29 22:01:10 +02:00
Adolfo Gómez García
5b4d017c53 Merge branch 'master' of github.com:dkmstr/openuds 2022-03-29 13:10:46 +02:00
Adolfo Gómez García
70b3544f2a added timeout to oppened tunnel to avoid possible DOS 2022-03-29 13:10:37 +02:00
Adolfo Gómez García
564b9db013 Merge remote-tracking branch 'origin/v3.5' 2022-03-29 13:08:54 +02:00
Adolfo Gómez García
1ff0a623db added timeout to oppened tunnel to avoid possible DOS 2022-03-29 13:08:49 +02:00
Adolfo Gómez García
2f5f87e122 added timeout to oppened tunnel to avoid possible DOS 2022-03-29 13:08:34 +02:00
Adolfo Gómez García
a9c32debd2 Merge remote-tracking branch 'origin/v3.5' 2022-03-28 14:00:20 +02:00
Adolfo Gómez García
d9be83863c increaded backlog 2022-03-28 13:59:37 +02:00
Adolfo Gómez García
c675acc2e7 increaded backlog 2022-03-28 13:58:56 +02:00
Adolfo Gómez García
5fed04d64d Included request on parameters, needed on 3.5 2022-03-24 14:21:20 +01:00
Adolfo Gómez García
0662100c30 Merge remote-tracking branch 'origin/v3.5' 2022-03-23 21:34:29 +01:00
Adolfo Gómez García
8a2e2deaf1 small phisical machine fix 2022-03-23 21:32:29 +01:00
Adolfo Gómez García
86990638dc Added new count method for LIMITED services 2022-03-23 21:28:49 +01:00
Adolfo Gómez García
74ad88d1bc Merge remote-tracking branch 'origin/v3.5' 2022-03-21 15:09:29 +01:00
Adolfo Gómez García
40b9572233 fixed tunnel to log bad handshake as hex 2022-03-21 15:08:39 +01:00
Adolfo Gómez García
de71785c76 Merge remote-tracking branch 'origin/v3.5' 2022-03-20 23:10:43 +01:00
Adolfo Gómez García
27cbf920d5 Fixed a couple of things 2022-03-20 23:10:35 +01:00
Adolfo Gómez García
5836b33299 Added new way of counting "active" machines (taking into account the removable and removing services also) 2022-03-17 14:53:32 +01:00
Adolfo Gómez García
9ca143c2db Merge remote-tracking branch 'origin/v3.5' 2022-03-15 20:26:02 +01:00
Adolfo Gómez García
282495ce0f Fixed OSS 2022-03-15 20:22:13 +01:00
Adolfo Gómez García
2b33ffc656 Fixed OSS 2022-03-15 20:07:19 +01:00
Adolfo Gómez García
72700075ef Small tunnel fix 2022-03-15 16:33:15 +01:00
Adolfo Gómez García
ccdd15ed50 Merge remote-tracking branch 'origin/v3.5' 2022-03-15 16:30:23 +01:00
Adolfo Gómez García
e0149900a7 Added protection on broken pipe to tunnel 2022-03-15 16:28:13 +01:00
Adolfo Gómez García
7bed6ac171 Small tunnel fix and installer info 2022-03-15 13:38:50 +01:00
Adolfo Gómez García
1d62dbbacd Added new admin interface supporting notifiers 2022-03-14 20:59:04 +01:00
Adolfo Gómez García
d04068e19f Creating notifiers 2022-03-14 17:03:00 +01:00
Adolfo Gómez García
66aa7ccef3 small type checking fix 2022-03-14 14:44:16 +01:00
Adolfo Gómez García
c0c54f9ccd Merge remote-tracking branch 'origin/v3.5' 2022-03-14 14:43:57 +01:00
Adolfo Gómez García
0d77e86af2 small type checking fix 2022-03-14 14:42:40 +01:00
Adolfo Gómez García
b41a8e38cf Fixed GetRootUser 2022-03-13 15:41:45 +01:00
Adolfo Gómez García
410b0952e9 fixed "autoimported" module 2022-03-13 15:02:07 +01:00
Adolfo Gómez García
b9f57c47b0 Adde generic factory and added module loader to jobs 2022-03-11 16:39:39 +01:00
Adolfo Gómez García
07b0b00b90 Done refactoring module loader 2022-03-10 21:05:59 +01:00
Adolfo Gómez García
6e69246ca8 Added moduleLoaders to almost everything now 2022-03-10 20:32:40 +01:00
Adolfo Gómez García
a5554ed85a Adding generic importers to simplify module loading 2022-03-10 18:58:16 +01:00
Adolfo Gómez García
6c17b77841 Addded generic Factory for UDS Modules 2022-03-09 23:17:19 +01:00
Adolfo Gómez García
05a04997d6 Improved passwords security on DB 2022-03-07 23:10:10 +01:00
Adolfo Gómez García
b477b78d61 Merge remote-tracking branch 'origin/v3.5' 2022-03-06 15:41:26 +01:00
Adolfo Gómez García
a179522f4c Fixed crypto key loading 2022-03-06 15:40:49 +01:00
Adolfo Gómez García
2b6193a1ec Fixed SAMLResponse conversion under some circunstances 2022-03-02 15:51:59 +01:00
Adolfo Gómez García
0e257c779b Converted HTTP-POSt to HTTP-Request on SAML logout 2022-03-01 12:58:09 +01:00
Adolfo Gómez García
43eb09e9e2 Fixed logout binding to redirect 2022-02-28 16:48:01 +01:00
Adolfo Gómez García
6eab070bd1 Merge remote-tracking branch 'origin/v3.5' 2022-02-27 23:42:42 +01:00
Adolfo Gómez García
21c2976d82 Fixed copyright for debian 2022-02-27 23:41:50 +01:00
Adolfo Gómez García
3f148f3bf0 notifications table 2022-02-25 03:05:27 +01:00
Adolfo Gómez García
f3c2015210 Fixed migrations from 3.5 2022-02-25 03:02:54 +01:00
Adolfo Gómez García
afd653422e Merge remote-tracking branch 'origin/v3.5' 2022-02-23 21:57:08 +01:00
Adolfo Gómez García
ee30ab4604 Fixed authcallbacks 2022-02-23 21:54:23 +01:00
Adolfo Gómez García
aad3336717 Migrated SAML auth to OneLogin library 2022-02-23 21:10:45 +01:00
Adolfo Gómez García
29e1694fce Removed lasso and added OneLogin saml library 2022-02-23 16:56:54 +01:00
Adolfo Gómez García
1fba4d3f9f Fixed check of ip 2022-02-23 14:17:29 +01:00
Adolfo Gómez García
5084fec43f Fixed SQLITE DB problems 2022-02-22 13:26:24 +01:00
Adolfo Gómez García
0ce1a565ab merged 3.5 temporal fix for login redirection 2022-02-21 14:34:58 +01:00
Adolfo Gómez García
6cc1a8823d Merge remote-tracking branch 'origin/v3.5' 2022-02-21 14:29:08 +01:00
Adolfo Gómez García
04e24d406f Added small fix to allow tempora user redirect 2022-02-21 14:28:49 +01:00
Adolfo Gómez García
3667c82529 added a new ldap constant to ldaputil 2022-02-20 00:24:38 +01:00
Adolfo Gómez García
8cd050f71d Fixed changes to allow redirects 2022-02-19 16:08:11 +01:00
Adolfo Gómez García
88905b4e63 Refactor of assigned an unused 2022-02-18 15:51:49 +01:00
Adolfo Gómez García
67db932b0f Updating authentication response methods to include a possible url on login failure 2022-02-17 21:44:10 +01:00
Adolfo Gómez García
1be8edec92 Added getRootDSE method to ldaputils 2022-02-17 15:50:27 +01:00
Adolfo Gómez García
65087f5d47 Added SAML auth as open 2022-02-16 21:12:48 +01:00
Adolfo Gómez García
5388d03213 gitignore al ldaputil small comment fix 2022-02-15 22:44:09 +01:00
Adolfo Gómez García
6da7a4134e Merge remote-tracking branch 'origin/v3.5' 2022-02-15 22:43:33 +01:00
Adolfo Gómez García
f58ef9b6d3 Removed sympy inclusion err 2022-02-15 15:16:04 +01:00
Adolfo Gómez García
18d4147d59 Changed OS Detection system 2022-02-15 15:05:55 +01:00
Adolfo Gómez García
b77330ac8f Added base notification mechanics 2022-02-13 19:38:40 +01:00
Adolfo Gómez García
7fca229537 Merge remote-tracking branch 'origin/v3.5' 2022-02-10 14:47:06 +01:00
Adolfo Gómez García
ccd429454e Updated translations due to recent fixes 2022-02-10 14:46:27 +01:00
Adolfo Gómez García
a2e5e00aa6 Merge remote-tracking branch 'origin/v3.5' 2022-02-10 13:33:50 +01:00
Adolfo Gómez García
5ce7ddc3a7 Fixed HTML5 transports and advanced tab translation for label 2022-02-10 13:32:05 +01:00
Adolfo Gómez García
02fcff2c94 refactorized alerts to messaging 2022-02-08 21:30:00 +01:00
Adolfo Gómez García
9e5b06e835 Adding notifier to allow sending some kind of event to outside recipients (as emails, telegram, ...) 2022-02-08 20:24:34 +01:00
Adolfo Gómez García
c7f96251ac Added level to notifier 2022-02-08 19:08:46 +01:00
Adolfo Gómez García
1b9fd22ba1 Merge remote-tracking branch 'origin/v3.5' 2022-02-07 16:12:51 +01:00
Adolfo Gómez García
3dd73f4723 Vertical label now appears "badly" with waseyprint. Disabled by now 2022-02-07 16:02:16 +01:00
Adolfo Gómez García
c3531f3e7e Fixed saving stats events (field conversion ignored original field name) 2022-02-07 15:54:38 +01:00
Adolfo Gómez García
fdd1b7235a Adding notifier base model. This will allow us to send remote notifications 2022-02-07 13:23:58 +01:00
Adolfo Gómez García
0d50e5ef93 Merged 3.5 fix on migrations 2022-02-06 04:02:38 +01:00
Adolfo Gómez García
ba7b1c0198 Fixed 0038 migration to include config moving 2022-02-06 04:01:29 +01:00
Adolfo Gómez García
c4a886c28d Fixed squashed migrations 2022-02-06 03:58:54 +01:00
Adolfo Gómez García
0355ef9591 squashed all previous to 3.5 migrations 2022-02-06 03:44:59 +01:00
Adolfo Gómez García
e0fa75cb00 squashed all previous to 3.5 migrations 2022-02-06 03:44:49 +01:00
Adolfo Gómez García
3b991e0749 Fixed ip lengths to allow future ipv6 support 2022-02-06 03:24:38 +01:00
Adolfo Gómez García
dd4dc738b4 Merge remote-tracking branch 'origin/v3.5' 2022-02-05 17:51:06 +01:00
Adolfo Gómez García
d5c9ee341d Fixed tunnel version 2022-02-05 17:50:55 +01:00
Adolfo Gómez García
ba90dae5d6 Fixed Tunnel version 2022-02-05 17:50:34 +01:00
Adolfo Gómez García
f58cc159a7 Removed comments of old code 2022-02-05 17:31:31 +01:00
Adolfo Gómez García
fee413aa23 Added basic HA check on metapools, after adding "isAvailable" to all existing services 2022-02-01 16:16:57 +01:00
Adolfo Gómez García
189db28dc5 Added migration to add HA to metapool 2022-02-01 16:05:44 +01:00
Adolfo Gómez García
86a237ccac Homogenized services response dict 2022-02-01 15:47:29 +01:00
Adolfo Gómez García
9041e48080 Added end notification to UDS 2022-02-01 13:49:34 +01:00
Adolfo Gómez García
4893fa4fbe Fixed counters 2022-02-01 13:10:13 +01:00
Adolfo Gómez García
082ef6830d Merge remote-tracking branch 'origin/v3.5' 2022-01-30 19:34:19 +01:00
Adolfo Gómez García
f7cd474264 Fixed double open on meta poools 2022-01-30 18:21:32 +01:00
Adolfo Gómez García
2a7b112437 Merge remote-tracking branch 'origin/v3.5' 2022-01-29 21:45:46 +01:00
Adolfo Gómez García
a4390f7918 upgrading service 2022-01-29 21:44:14 +01:00
Adolfo Gómez García
a255b52628 added info (apart of prefix to uuid) if pool is meta or not 2022-01-29 21:43:14 +01:00
Adolfo Gómez García
8d93144e24 Fixed meta pools non being correctly checked 2022-01-28 11:54:18 +01:00
Adolfo Gómez García
27d158f514 Fixed metapool admin 2022-01-28 11:14:32 +01:00
Adolfo Gómez García
e043a79721 Ported to asyncio uds tunnel. 2022-01-27 13:10:07 +01:00
Adolfo Gómez García
2f37caaf22 Merge remote-tracking branch 'origin/v3.5' 2022-01-27 12:17:16 +01:00
Adolfo Gómez García
2b4e771709 Fixed autorun check from api 2022-01-27 12:17:00 +01:00
Adolfo Gómez García
77b6eff8e4 Removing curio from tunneler, so we do not have an unneeded dependency 2022-01-26 14:32:41 +01:00
Adolfo Gómez García
7d8ae689b5 Moving from curio to asyncio. 2022-01-26 12:18:41 +01:00
Adolfo Gómez García
143b9b675b Merge remote-tracking branch 'origin/v3.5' 2022-01-21 12:07:24 +01:00
Adolfo Gómez García
3ebc0dd26f Fixed certs locations for some platforms 2022-01-21 12:04:54 +01:00
Adolfo Gómez García
ecb876157a small fix 2022-01-20 11:16:23 +01:00
Adolfo Gómez García
f40c2ed618 Added isAvailable for all services 2022-01-19 14:11:37 +01:00
Adolfo Gómez García
61a32e13a2 Merge remote-tracking branch 'origin/v3.5' 2022-01-18 14:12:47 +01:00
Adolfo Gómez García
79739bf9b8 Removed unused .desktop file for thinpro 2022-01-18 14:12:31 +01:00
Adolfo Gómez García
c14ae284b6 Merge remote-tracking branch 'origin/v3.5' 2022-01-18 13:34:46 +01:00
Adolfo Gómez García
f702c144fc small thinpro fix 2022-01-18 13:34:33 +01:00
Adolfo Gómez García
7fc51ce513 Added isAvailable for more services 2022-01-18 13:21:44 +01:00
Adolfo Gómez García
0208c9b3f9 Merge remote-tracking branch 'origin/v3.5' 2022-01-18 13:18:43 +01:00
Adolfo Gómez García
ce2d2b1c2e added installer for thinpro 7.2 2022-01-18 13:18:24 +01:00
Adolfo Gómez García
18a49cece3 Merge remote-tracking branch 'origin/v3.5' 2022-01-18 11:44:16 +01:00
Adolfo Gómez García
790c204b6a fixed uds client actor launching 2022-01-17 13:46:14 +01:00
Adolfo Gómez García
d80cf4052e removed -s 2022-01-17 13:43:51 +01:00
Adolfo Gómez García
03cdec8c31 Merge remote-tracking branch 'origin/v3.5' 2022-01-14 14:26:08 +01:00
Adolfo Gómez García
6a86b0ff04 Updated translations 2022-01-14 12:37:14 +01:00
Adolfo Gómez García
1667c8b4a8 adding "isAvaliable" method for services 2022-01-13 13:32:36 +01:00
Adolfo Gómez García
8018c7bed7 Merge remote-tracking branch 'origin/v3.5' 2022-01-12 13:35:02 +01:00
Adolfo Gómez García
0d412c4a9a Modified thinpro image tar from bz2 to gz 2022-01-12 13:25:26 +01:00
Adolfo Gómez García
ac9e6dafdf added thinpro installer generator 2022-01-12 13:20:33 +01:00
Adolfo Gómez García
58f4cd8356 Merge remote-tracking branch 'origin/v1.5' 2022-01-12 12:08:50 +01:00
Adolfo Gómez García
efd0ca3f88 Fixed tunnel stop comms 2022-01-11 15:36:18 +01:00
Adolfo Gómez García
edb4a32496 Updated translations 2022-01-10 14:34:09 +01:00
Adolfo Gómez García
e41c0f32bb Merge remote-tracking branch 'origin/v3.5' 2022-01-04 10:39:12 +01:00
Adolfo Gómez García
b239ff6cab Removed "harcoded" msrdc path for mac 2022-01-04 10:38:30 +01:00
Adolfo Gómez García
5de90bf421 Merge remote-tracking branch 'origin/v3.5' 2022-01-03 14:36:06 +01:00
Adolfo Gómez García
d55d1bc619 Added localized MSRDP as possible path 2022-01-03 14:35:48 +01:00
Adolfo Gómez García
493abb6228 Merge remote-tracking branch 'origin/v3.5' 2022-01-03 14:24:07 +01:00
Adolfo Gómez García
917a201483 Added localized MSRDP as possible path 2022-01-03 14:23:52 +01:00
Adolfo Gómez García
a071e2e8f5 Merge remote-tracking branch 'origin/v3.5' 2022-01-03 14:10:26 +01:00
Adolfo Gómez García
4809252434 Changed concurrent removal to take into account real removals, not removal checks 2022-01-03 14:07:46 +01:00
Adolfo Gómez García
12e74c16b5 * Explained why stop shuld be ignored if no user service is found
* Small type checking addons
* Added method to allow "check" the availability of a service, currently used before removal
* Fixed removal so concurrent removal refers to real removals, not to marked for removal
2022-01-03 14:02:41 +01:00
Adolfo Gómez García
6d873ceccd Merge remote-tracking branch 'origin/v3.5' 2021-12-22 14:05:47 +01:00
Adolfo Gómez García
8be0d9702a Fixed sessions providers for html5rdp 2021-12-22 14:04:49 +01:00
Adolfo Gómez García
26f45b429f Merge remote-tracking branch 'origin/v3.5' 2021-12-22 13:37:06 +01:00
Adolfo Gómez García
36acb0b0c0 Fixed transports sorting on metapools 2021-12-22 13:10:07 +01:00
Adolfo Gómez García
420b78d45d Fixed STOP "eating" on application stop 2021-12-21 15:58:46 +01:00
Adolfo Gómez García
e1ccc62dab Fixed minvalue for max services 2021-12-21 15:53:35 +01:00
Adolfo Gómez García
49b2bd8772 Merge remote-tracking branch 'origin/v3.5' 2021-12-21 11:19:47 +01:00
Adolfo Gómez García
6b0d98d4eb Fixed radius auth not using "appliaction Prefix" for extracting groups from Class Attribute (now accepts group=... and {appPrefix}group=.... as group markers 2021-12-21 11:14:57 +01:00
Adolfo Gómez García
354061f55c Merge remote-tracking branch 'origin/v3.5' 2021-12-20 12:12:28 +01:00
Adolfo Gómez García
7bec7bd7cc Fixed HTMLRDP for access to RDP session with automanaged users 2021-12-20 12:04:16 +01:00
Adolfo Gómez García
49975ab5d2 Upgrading for new django 4.0 2021-12-10 15:12:32 +01:00
Adolfo Gómez García
44f219402e removed orjson, uds uses numbers as key on dict and orjson does not supports it 2021-12-10 13:45:49 +01:00
Adolfo Gómez García
b3a8ae8abe Migrating to Django 4.0 (fixes) 2021-12-10 13:41:10 +01:00
Adolfo Gómez García
9ac2aaef81 Improved AutoAttributes & small typo fix on proxmox publication 2021-12-10 13:06:33 +01:00
Adolfo Gómez García
de0a2e2a34 Merge remote-tracking branch 'origin/v3.5' 2021-12-10 13:05:45 +01:00
Adolfo Gómez García
270957fab5 Updated settings sample 2021-12-10 13:04:54 +01:00
Adolfo Gómez García
1702cd910a Merge remote-tracking branch 'origin/v3.5' 2021-11-30 13:54:33 +01:00
Adolfo Gómez García
47c6ca42f1 added Content-Security-Policy to security 2021-11-30 13:54:15 +01:00
Adolfo Gómez García
78639af1a5 Merge remote-tracking branch 'origin/v3.5' 2021-11-30 13:32:56 +01:00
Adolfo Gómez García
c1f6ed376b added Content-Security-Policy to security 2021-11-30 13:32:37 +01:00
Adolfo Gómez García
8bebce4c6e added Content-Security-Policy to security 2021-11-30 13:31:12 +01:00
Adolfo Gómez García
e18f3746b4 Merge remote-tracking branch 'origin/v3.5' 2021-11-30 12:30:31 +01:00
Adolfo Gómez García
250ade6aee Fixed assignement of new services if pool is at 100% usage 2021-11-30 12:18:04 +01:00
Adolfo Gómez García
10bde45004 Merge remote-tracking branch 'origin/v3.5' 2021-11-26 11:59:07 +01:00
Adolfo Gómez García
bde63f7b4f Added check for database connection problem on config 2021-11-26 11:52:49 +01:00
Adolfo Gómez García
057a26ea7b Completed network filtering for authentication, and improbed network filtering on transports (better undestanding now) 2021-11-23 11:55:55 +01:00
Adolfo Gómez García
e8dae69f6f Several actiosn:
* Added Disabled as an option state for an authenticator
* Added networks to check source to authenticators
* Generalized network access, now is usable from transports and from authenticators
* Fixed configjs to adapt to new model
2021-11-22 13:39:08 +01:00
Adolfo Gómez García
91923654f0 Added orjson as json "first option" for REST API (python json else) 2021-11-21 18:10:49 +01:00
Adolfo Gómez García
a0365e1277 Merge remote-tracking branch 'origin/v3.5' 2021-11-19 14:14:12 +01:00
Adolfo Gómez García
eb4be53508 Fixed cache time and points on system chart info 2021-11-19 14:10:36 +01:00
Adolfo Gómez García
3003066a91 Removed "erroring" machine is it has any exception on connection 2021-11-18 15:35:04 +01:00
Adolfo Gómez García
10805ded7e Removed "erroring" machine is it has any exception on connection 2021-11-18 15:26:23 +01:00
Adolfo Gómez García
4b6ad6a2ed Merge remote-tracking branch 'origin/v3.5' 2021-11-16 14:20:07 +01:00
Adolfo Gómez García
21c221a6db Added check for circular connections on Xen when using backup server 2021-11-16 14:19:46 +01:00
Adolfo Gómez García
1857134f42 Fixed admin 2021-11-15 12:15:06 +01:00
Adolfo Gómez García
e06f13fc84 Updating validators 2021-11-12 12:14:16 +01:00
Adolfo Gómez García
6a14917ec5 Updating validators 2021-11-12 11:35:09 +01:00
Adolfo Gómez García
85aab86b02 Fixed token length and remade migration 2021-11-12 10:48:11 +01:00
Adolfo Gómez García
eeae98ca79 Added token alias to secure unmanaged machine token 2021-11-11 13:50:58 +01:00
Adolfo Gómez García
11f6eec913 Merge remote-tracking branch 'origin/v3.5' 2021-11-11 12:07:49 +01:00
Adolfo Gómez García
835dc05e63 Added scheduled action to pool so we can remove "old assigned machines" with a programmed action 2021-11-11 12:07:19 +01:00
Adolfo Gómez García
e4d40b651e Merge remote-tracking branch 'origin/v3.5' 2021-11-10 10:57:09 +01:00
Adolfo Gómez García
4cc4af5bd1 Fixed special case for admin form field of numeric fields without limits 2021-11-10 10:56:05 +01:00
Adolfo Gómez García
986a82f225 Fixed special case for admin form field of numeric fields without limits 2021-11-10 10:32:15 +01:00
Adolfo Gómez García
a05390ed6c Merge remote-tracking branch 'origin/v3.5' 2021-11-08 13:48:17 +01:00
Adolfo Gómez García
90b64c1721 Changed parameter _USERNAME_ for _USER_ on URL Transport (as in tooltip) 2021-11-08 13:28:09 +01:00
Adolfo Gómez García
c89c8d0523 Merge remote-tracking branch 'origin/v3.5' 2021-11-08 13:20:11 +01:00
Adolfo Gómez García
f403d4ff3e Fixed Min-Max admin values checking && set proxmox vmid as readonly 2021-11-08 13:18:58 +01:00
Adolfo Gómez García
c5071cf348 Fixed Min-Max admin values checking && set proxmox vmid as readonly 2021-11-08 13:16:44 +01:00
Adolfo Gómez García
7f4453bd37 Added stats to udsfs 2021-11-08 11:55:59 +01:00
Adolfo Gómez García
e3568bc580 Updating UDSFS 2021-11-05 12:51:04 +01:00
Adolfo Gómez García
f273d262ac A few more advancements 2021-11-04 14:03:17 +01:00
Adolfo Gómez García
b55df32db0 Advancing on UDSFS 2021-11-04 12:46:40 +01:00
Adolfo Gómez García
6792283e44 Merge remote-tracking branch 'origin/v3.5' 2021-11-03 15:21:43 +01:00
Adolfo Gómez García
679956702b Fixed legacy textx 2021-11-03 14:54:58 +01:00
Adolfo Gómez García
98d7a24656 Fixed check certificate on python 3.6 2021-11-03 14:39:58 +01:00
Adolfo Gómez García
33764e5c1c Merge remote-tracking branch 'origin/v3.5' 2021-11-02 11:59:09 +01:00
Adolfo Gómez García
b67771d5f3 Fixed HTMLRDP parameters 2021-11-02 11:56:21 +01:00
Adolfo Gómez García
2d1897f720 Merge remote-tracking branch 'origin/v3.5' 2021-11-02 11:06:06 +01:00
Adolfo Gómez García
672c35c903 Fixed admin date && updated translations 2021-11-02 11:05:38 +01:00
Adolfo Gómez García
be013ac6dc Adding type checking on fuse before proceding to use it 2021-11-01 22:28:45 +01:00
Adolfo Gómez García
398837c20f Adding type checking on fuse before proceding to use it 2021-11-01 22:26:18 +01:00
Adolfo Gómez García
a6f1e95cc0 Adding type checking on fuse before proceding to use it 2021-11-01 18:44:11 +01:00
Adolfo Gómez García
a957e368e7 Experimenting with use for adding an "UDS FS" so we can explore several UDS contained data easily 2021-11-01 00:40:54 +01:00
Adolfo Gómez García
6df1bc0a50 Removed Legacy client messages from frontend 2021-10-29 11:38:39 +02:00
Adolfo Gómez García
937465b2f2 Adding stats events for os manager relevant events (init, ready and release right now) 2021-10-28 16:17:26 +02:00
Adolfo Gómez García
e9df8c5cb1 Merge remote-tracking branch 'origin/v3.5' 2021-10-28 12:39:59 +02:00
Adolfo Gómez García
01119d1914 Fixed armhf appimage generation 2021-10-28 11:19:49 +02:00
Adolfo Gómez García
4f107ad464 Cleaning up things 2021-10-27 16:27:03 +02:00
Adolfo Gómez García
5b5a4e31e7 Merge remote-tracking branch 'origin/v3.5' 2021-10-27 13:06:45 +02:00
Adolfo Gómez García
98685c6e6a added back notifiedReady 2021-10-27 13:06:39 +02:00
Adolfo Gómez García
a4d1ecb95f Added call to "notifyReady" on osmanager ready notification 2021-10-27 13:05:41 +02:00
Adolfo Gómez García
cb064f9af5 Removing all actor 2.2 support 2021-10-27 12:54:45 +02:00
Adolfo Gómez García
604f1c4a89 Removing old UDS Actor 2.2 support 2021-10-27 12:20:41 +02:00
Adolfo Gómez García
590f3191ac Removing "globalRequest" cache and passing through received request object to authenticators 2021-10-26 21:15:07 +02:00
Adolfo Gómez García
e999e5acf8 Removed outdated documentation 2021-10-26 16:31:54 +02:00
Adolfo Gómez García
101f846f0d Merge remote-tracking branch 'origin/v3.5' 2021-10-25 14:45:18 +02:00
Adolfo Gómez García
237f7e5b77 Added igel port 2021-10-25 14:42:42 +02:00
Adolfo Gómez García
edb74ab9c6 Removed "legacy" 2.7 UDS Client (not working anymore on 3.5)
Fixed igel templates
2021-10-25 14:36:14 +02:00
Adolfo Gómez García
3ec0c15039 Merge remote-tracking branch 'origin/v3.5' 2021-10-25 14:07:39 +02:00
Adolfo Gómez García
86eb1a9421 Added "cloud marked" icons for tunneled transports 2021-10-25 12:56:18 +02:00
Adolfo Gómez García
ce433c0661 Merge remote-tracking branch 'origin/v3.5' 2021-10-23 22:37:07 +02:00
Adolfo Gómez García
c09ea0eb63 Moved security part from request to security middleware 2021-10-23 22:36:12 +02:00
Adolfo Gómez García
b185024aeb Merge remote-tracking branch 'origin/v3.5' 2021-10-22 14:41:24 +02:00
Adolfo Gómez García
ea79ccbee1 Added igel package creation scripts 2021-10-22 14:37:53 +02:00
Adolfo Gómez García
3a9312efe0 Fixed requests "getIdent" to retorn an unique id even in case of running as a asyncio task 2021-10-20 21:52:30 +02:00
Adolfo Gómez García
27535d4b43 Merge remote-tracking branch 'origin/v3.5' 2021-10-19 18:23:31 +02:00
Adolfo Gómez García
da82a26dd8 Now when we save a service pool, ensures that max_srvs is at leat 1 for services with cache 2021-10-19 18:21:32 +02:00
Adolfo Gómez García
1eeab5f75f Merge remote-tracking branch 'origin/v3.5' 2021-10-18 18:01:27 +02:00
Adolfo Gómez García
c129c83ca0 Added -s also to udsactor user space 2021-10-18 18:00:05 +02:00
Adolfo Gómez García
b2adafdec7 Merge remote-tracking branch 'origin/v3.5' 2021-10-18 17:17:16 +02:00
Adolfo Gómez García
d8e6de8c1e Removed unused variable 2021-10-18 17:16:17 +02:00
Adolfo Gómez García
9c6a72d3ac Merge remote-tracking branch 'origin/v3.5' 2021-10-18 17:09:00 +02:00
Adolfo Gómez García
e0d79cb590 Added -s to UDSClient python3 parameter, so local libs does not interfere with package 2021-10-18 17:04:44 +02:00
Adolfo Gómez García
59bd6c1649 Reversed the order for change password on 3.5 UDS 2021-10-18 16:59:59 +02:00
Adolfo Gómez García
564f0e17de added check for "emtpy" usernames or groups on creation 2021-10-18 13:05:53 +02:00
Adolfo Gómez García
842212f186 Removed ssh-tunnel not used on 3.5 release 2021-10-17 01:43:01 +02:00
Adolfo Gómez García
11342914cc Merge remote-tracking branch 'origin/v3.5' 2021-10-15 10:58:11 +02:00
Adolfo Gómez García
e4b609c4ce Fixed key for debian packages on client appimage recipe 2021-10-15 10:57:43 +02:00
Adolfo Gómez García
741855030f Removed "prints" :) 2021-10-15 10:44:22 +02:00
Adolfo Gómez García
293b7f02ad added small comment for future to actor v3 2021-10-13 11:19:44 +02:00
Adolfo Gómez García
fddd54fa99 Added correcto management of "logout" in case of an unmanaged machine "reboot" 2021-10-08 12:30:00 +02:00
Adolfo Gómez García
cd640af37f Added correcto management of "logout" in case of an unmanaged machine "reboot" 2021-10-08 12:28:37 +02:00
Adolfo Gómez García
b2f2deebce Merge remote-tracking branch 'origin/v3.5' 2021-10-08 00:57:22 +02:00
Adolfo Gómez García
6f99b63731 Locales 2021-10-08 00:57:08 +02:00
Adolfo Gómez García
6b3355f819 Added locking multi_ip machines if accessed from outside UDS flag & logic 2021-10-07 13:47:03 +02:00
Adolfo Gómez García
660cfdcd0e Adding console login/logout logic on static machines 2021-10-07 12:49:40 +02:00
Adolfo Gómez García
47df6c58fc Cosmetic chage to actorv3 2021-10-06 15:21:50 +02:00
Adolfo Gómez García
91c90766a3 Updated translations 2021-10-06 15:10:35 +02:00
Adolfo Gómez García
840a7a02bd Merge remote-tracking branch 'origin/v3.5' 2021-10-06 12:39:06 +02:00
Adolfo Gómez García
2a834460d1 Fixing up html5rdp 2021-10-06 12:38:45 +02:00
Adolfo Gómez García
f80b00667e Upgrading versions 2021-10-05 13:26:55 +02:00
Adolfo Gómez García
ef9325aab9 Start of v4.0. 3.5 is closed now 2021-10-05 12:29:29 +02:00
Adolfo Gómez García
5bd77676ca Fixed log of user correctly authenticated, but not belongs to any group 2021-10-05 12:23:13 +02:00
Adolfo Gómez García
8ef97a7773 Fix for client with python 3.6 2021-10-01 12:35:20 +02:00
Adolfo Gómez García
abafa7bfac Added group state "Inactive" 2021-09-29 14:50:40 +02:00
Adolfo Gómez García
dcb7b3e28e Make 3.5 client compatible with python 3.6 2021-09-29 13:42:26 +02:00
Adolfo Gómez García
41aa22fadd Removed optional parameter "transport" from ticket REST api creation. This is due to the fact than the transport needs to be checked on Client browser (user ip, SO, etc...) 2021-09-29 11:04:51 +02:00
Adolfo Gómez García
d02974ad87 Error page was not displayed correctly 2021-09-29 10:46:58 +02:00
Adolfo Gómez García
b2a067300c Added sample ticket auth test 2021-09-29 00:14:02 +02:00
Adolfo Gómez García
afbc75bff0 Added boolean True as valid force value 2021-09-29 00:13:33 +02:00
Adolfo Gómez García
4c453d2b1f Added more info to ticket timedout error on tunnel 2021-09-24 14:42:01 +02:00
Adolfo Gómez García
26f33626c2 Updated translations 2021-09-24 13:52:17 +02:00
Adolfo Gómez García
cb8284d076 Updated RDP scripts (simple cosmetic changes) 2021-09-23 16:53:17 +02:00
Adolfo Gómez García
ef3dd893d9 Added nicedcv protocol && a couple of aliases parameters for user_interface future migration 2021-09-21 16:43:27 +02:00
Adolfo Gómez García
d531a1612a Added "visibleFrom" to authenticators, so we can add custom filters for showing them on login screen 2021-09-16 13:30:38 +02:00
Adolfo Gómez García
de9c06bc2c Fixed "realname overwrite" on internaldb auth 2021-09-15 13:15:55 +02:00
Adolfo Gómez García
2400cc99cd Updated translations 2021-09-15 12:47:08 +02:00
Adolfo Gómez García
7f5c3c3bbd Fixed new remove all groups description & fixed not removing pinbar on tunnel rdp 2021-09-14 11:02:37 +02:00
Adolfo Gómez García
710f2fb0e4 Fixed task manager stop 2021-09-09 13:59:42 +02:00
Adolfo Gómez García
ede23ad793 Improved check of tunneled requests 2021-09-09 12:56:25 +02:00
Adolfo Gómez García
9a3913cc42 Added scheduled action "Remove all transports" and "remove all groups" 2021-09-07 13:55:16 +02:00
Adolfo Gómez García
5bf98782ea Added autocomplete to field types 2021-09-07 13:31:30 +02:00
Adolfo Gómez García
3a69c9205e Removed nonsense security check right now... 2021-09-07 12:15:44 +02:00
Adolfo Gómez García
3615db877e Fix small error on new singleton for taskManager 2021-09-06 13:39:40 +02:00
Adolfo Gómez García
2286ccaca1 Fixed about 2021-09-06 12:36:58 +02:00
Adolfo Gómez García
f90bf3a421 Added sedcurity middleware also 2021-09-04 22:17:41 +02:00
Adolfo Gómez García
df815776da Added asgi from newer model 2021-09-04 21:29:16 +02:00
Adolfo Gómez García
54f7fd21dc Better singleton pattern (more reusable) 2021-09-04 17:16:57 +02:00
Adolfo Gómez García
8e3d90e7f3 Removed "experimental" from AD group on OS Manager and fix on actor runner 2021-09-03 13:38:39 +02:00
Adolfo Gómez García
afa9e0aab6 Upgraded angular version of js 2021-09-03 02:25:01 +02:00
Adolfo Gómez García
77b0c7c8e1 added comment to user interface 2021-09-03 01:31:02 +02:00
Adolfo Gómez García
23afd01004 Fixed log removal 2021-09-02 13:27:27 +02:00
Adolfo Gómez García
c30a67d363 Fixed admin 2021-08-31 14:13:17 +02:00
Adolfo Gómez García
aa2d268453 Fixed admin interface small bug 2021-08-31 13:44:13 +02:00
Adolfo Gómez García
de40c72d9e Fixed "disabled" tag to allow login with only federated auths 2021-08-24 17:02:36 +02:00
Adolfo Gómez García
d0b30b561c Updated cache decorator and updated signatures of modified plugins 2021-08-24 14:07:35 +02:00
Adolfo Gómez García
e485374836 Formating and type fixing 2021-08-24 12:15:10 +02:00
Adolfo Gómez García
3934f2b88d Formating and type fixing all transports 2021-08-24 11:51:56 +02:00
Adolfo Gómez García
c72bcf4200 More formating 2021-08-23 14:59:07 +02:00
Adolfo Gómez García
1b7076e645 Changed "app.exec_" by "app.exec" for future pyqt6 2021-08-21 23:06:19 +02:00
Adolfo Gómez García
e637f208bd Changed app.exec_ by app.exec (future PyQt6) 2021-08-21 23:05:20 +02:00
Adolfo Gómez García
75e54618bb Removed duplicated download 2021-08-19 12:21:39 +02:00
Adolfo Gómez García
04864e3846 Fixed to ensure cache is uptated after template creation 2021-08-19 01:21:09 +02:00
Adolfo Gómez García
a52be141ea Added proxmox connection error check and try to handle y gracefully 2021-08-17 13:04:20 +02:00
Adolfo Gómez García
afcbd058d1 Formating & fixing type checkings 2021-08-14 15:47:21 +02:00
Adolfo Gómez García
8285e2daad More formating & minor typing fixes 2021-08-13 15:11:22 +02:00
Adolfo Gómez García
03bfb3efbb Formating & minor typing fixes 2021-08-13 14:53:23 +02:00
Adolfo Gómez García
8c4b84e7db removed statsManager and used directly "StatsManager.manager()" 2021-08-13 14:09:46 +02:00
Adolfo Gómez García
4f8fe793cc Updated translations 2021-08-13 13:34:38 +02:00
Adolfo Gómez García
286b320257 Updated openstack to look for correct volume api
Updated admin to make optional the "vnc" for user services
2021-08-13 13:33:39 +02:00
Adolfo Gómez García
68411f0726 UDS 3.4 now uses volumev3 for non legacy openstack connections (legacy maintains v2) 2021-08-11 18:59:18 +02:00
Adolfo Gómez García
1be49a6e0e Separated processes manager from main uds_tunnel 2021-08-05 12:53:44 +02:00
Adolfo Gómez García
c21c0b44ce Added guacamole rdp parameter for future suppport 2021-08-04 18:59:51 +02:00
Adolfo Gómez García
46aa9139a0 Fixed Guacamole dict 2021-08-02 13:14:57 +02:00
Adolfo Gómez García
574b19a905 Fixed bug on user services page load and updated translations 2021-07-29 13:13:43 +02:00
Adolfo Gómez García
612646bd1c Fixed userService name on ServiceNotReady exception && small fix to comment 2021-07-29 12:24:24 +02:00
Adolfo Gómez García
10d9279b89 Added default value as TRUE to font smoothing for RDP 2021-07-28 14:08:16 +02:00
Adolfo Gómez García
a8a5063083 Updated Guacamole to only accept authenticated tunnel connections
* Added handshake check BEFORE opening SSL tunnel
2021-07-28 12:57:58 +02:00
Adolfo Gómez García
29b6613c95 Updated space 2021-07-27 12:51:10 +02:00
Adolfo Gómez García
8aa7dc3c6f Added PORT to RDP connections 2021-07-27 12:40:12 +02:00
Adolfo Gómez García
e75d373d03 Service multi is fixed
(Also small tunnel beautify)
2021-07-23 14:00:21 +02:00
Adolfo Gómez García
91d2398ade Fixed multy phisical machines service to add a "custom" maximum duration for assignation 2021-07-21 13:59:12 +02:00
Adolfo Gómez García
f4e953c9c9 Fixed type checkings and detection of client launched when machine not ready 2021-07-20 13:32:28 +02:00
Adolfo Gómez García
f14f36b0d0 Merge remote-tracking branch 'origin/v3.0' 2021-07-19 13:27:00 +02:00
Adolfo Gómez García
d1e51c0103 Upgrading actor for unmanaged && fixed linux operation 2021-07-19 13:26:36 +02:00
Adolfo Gómez García
d38347c534 Fixed ticket for metapools & fixed get interfaces list for python > 3.2 (as is the case) 2021-07-19 13:25:43 +02:00
Adolfo Gómez García
6fd307e86e small fixes (typing) 2021-07-19 12:42:26 +02:00
Adolfo Gómez García
51407b54ee Small spelling fixes 2021-07-19 01:16:18 +02:00
Adolfo Gómez García
91f90c8630 Small sample fix 2021-07-18 15:45:03 +02:00
Adolfo Gómez García
ca5b54c8e2 Added hidden dark theme to administration 2021-07-14 13:49:58 +02:00
Adolfo Gómez García
8d74055357 Added "copy" feature to admin tables 2021-07-13 22:50:55 +02:00
Adolfo Gómez García
8e81d51a43 Fixed Admin tunnel tokens 2021-07-13 15:11:38 +02:00
Adolfo Gómez García
5ff6cdaf69 Fixed tunnel token headers && tunnel proxy typo 2021-07-13 15:00:00 +02:00
Adolfo Gómez García
13cbfe26c7 Fixes (Basically formating & type checking fixes 2021-07-13 13:36:42 +02:00
Adolfo Gómez García
d497235eeb * Added config parameter for "check removal processes hanged" and removed six from RDP client scripts (and regenerated signatures) 2021-07-13 11:53:22 +02:00
Adolfo Gómez García
7d8bcf2168 Fix small admin issue 2021-07-12 16:39:45 +02:00
Adolfo Gómez García
5706f9d681 Fixed drop down menus on mouse over 2021-07-12 15:12:11 +02:00
Adolfo Gómez García
cd06597918 Formatting fixes 2021-07-12 12:58:45 +02:00
Adolfo Gómez García
49ce5622d6 Correctly added Tokens table permissions type 2021-07-12 12:58:26 +02:00
Adolfo Gómez García
de5031febf Fixed memory cache cleanup 2021-07-12 12:57:48 +02:00
Adolfo Gómez García
b29baf2a29 Small fis on service pool 2021-07-10 21:16:33 +02:00
Adolfo Gómez García
aaa909fff0 Added tunnel info to normalize return values & log values 2021-07-10 13:19:45 +02:00
Adolfo Gómez García
99ee0b00fc Added actor token to admin 2021-07-09 13:13:31 +02:00
Adolfo Gómez García
f2643df05f added typos to cryptography 2021-07-08 22:31:25 +02:00
Adolfo Gómez García
2520cce429 Fixed error on status check for "respawneable" services 2021-07-08 17:47:12 +02:00
Adolfo Gómez García
962015c355 Added types to crypto 2021-07-08 17:46:46 +02:00
Adolfo Gómez García
582ba01014 Added minimun number to show "filter" on service list 2021-07-08 14:42:58 +02:00
Adolfo Gómez García
eec8588628 Updated translations 2021-07-08 14:31:44 +02:00
Adolfo Gómez García
37f59e952d Added translated filter string 2021-07-08 14:18:15 +02:00
Adolfo Gómez García
46bab75a92 Added crpytomanager typing 2021-07-08 14:17:59 +02:00
Adolfo Gómez García
8f7421ef9d Updated translations 2021-07-08 13:00:22 +02:00
Adolfo Gómez García
a7584f9e8e Fixed admin 2021-07-08 12:57:36 +02:00
Adolfo Gómez García
fad735bb87 Added ticket compat with 3.0 2021-07-08 12:22:36 +02:00
Adolfo Gómez García
5ba704ac8a Fixed Version number for actor 2021-07-08 10:40:56 +02:00
Adolfo Gómez García
3c5ef5817f Added tooo long machines on removing state as hanged 2021-07-06 14:46:21 +02:00
Adolfo Gómez García
de0db84a5d Added tooo long machines on removing state as hanged 2021-07-06 14:45:01 +02:00
Adolfo Gómez García
548b6e813d Fixed Proxmox concurrencly on vmid assignation problem 2021-07-06 12:39:22 +02:00
Adolfo Gómez García
31b513a7ef Type checking updates 2021-07-06 11:33:04 +02:00
Adolfo Gómez García
fa7ce3de0b Added more info to terminated connection on UDS tunnel 2021-07-05 18:12:46 +02:00
Adolfo Gómez García
3a7e7b8dfc Fixed Client on non standard ports 2021-07-05 18:03:22 +02:00
Adolfo Gómez García
c9488329b9 Fixed Client on non standard ports 2021-07-05 17:54:02 +02:00
Adolfo Gómez García
55c4574021 Added redirect to login on session timeout 2021-07-05 13:48:56 +02:00
Adolfo Gómez García
59179584f2 Fixed tunnel redirect 2021-07-05 10:46:43 +02:00
Adolfo Gómez García
92de3b01dd Removed "plugin download" event, not used 2021-07-04 16:50:42 +02:00
Adolfo Gómez García
c62d62dd65 commented the events generated and logged by UDS 2021-07-04 15:17:51 +02:00
Adolfo Gómez García
e02318e665 Enhacing tunnel data logging info 2021-07-04 13:25:42 +02:00
Adolfo Gómez García
612ae63cf2 Added events to HTML5 connection also (only conneciton event right now) 2021-07-04 13:04:11 +02:00
Adolfo Gómez García
cb44662134 commenting changes on tunnel 2021-07-03 22:01:42 +02:00
Adolfo Gómez García
a359ff2263 Fixing tunnel & client for mac 2021-07-03 21:48:38 +02:00
Adolfo Gómez García
9ca3a7cdeb Fixed proxy sent stats to UDS 2021-07-03 21:16:17 +02:00
Adolfo Gómez García
1736cae1c1 Fixed image upload 2021-07-03 20:59:23 +02:00
Adolfo Gómez García
727ffe0365 Added a basic bot check to request middleware to forbid bots access 2021-07-03 16:25:07 +02:00
Adolfo Gómez García
b031e0aa3c adding fixes on closing tunnel 2021-07-03 13:02:34 +02:00
Adolfo Gómez García
d7886a1281 adding fixes on closing tunnel 2021-07-03 12:58:26 +02:00
Adolfo Gómez García
09e88b60f5 Updated launcher so, if launcher is closed, all tunnels are also closed 2021-07-03 12:30:46 +02:00
Adolfo Gómez García
6af0617c2a Upgrading client for MAC multi open compatibility 2021-07-02 15:18:35 +02:00
Adolfo Gómez García
1417a66b21 Small fixes on OpenNebula complains 2021-07-02 12:45:16 +02:00
Adolfo Gómez García
9ba4234313 Removed NX 2021-07-02 11:06:23 +02:00
Adolfo Gómez García
e85e4c4e54 Merge remote-tracking branch 'origin/v3.0' 2021-07-02 11:02:11 +02:00
Adolfo Gómez García
693d14cd81 small typo fixes 2021-07-02 11:01:31 +02:00
Adolfo Gómez García
4be9e9ea69 Added more info to UDSClient and small typo fixed 2021-07-01 22:04:24 +02:00
Adolfo Gómez García
e38cd73f30 Added user agent 2021-07-01 21:46:00 +02:00
Adolfo Gómez García
43b785eb73 Added more info on ticket error 2021-07-01 21:42:25 +02:00
Adolfo Gómez García
9c4a4ed35c Fixed RDP for MacOS 2021-07-01 21:38:21 +02:00
Adolfo Gómez García
02737c0e8d Fixed guacamole auth url 2021-06-29 16:57:01 +02:00
Adolfo Gómez García
8bbd897cd0 Added ticket check 2021-06-29 16:26:10 +02:00
Adolfo Gómez García
c98933b6ed Fixed guacamole urls && small pam fix 2021-06-29 14:48:04 +02:00
Adolfo Gómez García
6e0292e76e Fixed guacamole new url && added 0000... as admin alias for auths 2021-06-29 13:02:09 +02:00
Adolfo Gómez García
8e6fced2ac Added second-log to login in case invalid username/password is detected 2021-06-29 11:33:58 +02:00
Adolfo Gómez García
c5a02686c4 added "auth_id" as alias for "authId" on login
Changed "uds_auth" to "uds_token"
2021-06-28 19:02:44 +02:00
Adolfo Gómez García
bddb9355c8 Adding tunnelers tokens for increased security 2021-06-28 15:36:52 +02:00
Adolfo Gómez García
25736f61b8 Removed requests "tests" and updated tunnel to use an authId 2021-06-28 13:12:49 +02:00
Adolfo Gómez García
2ee4a7bcaa Several fixes:
* Added tunnel & guacaomle "fake" authid for next security
* Fixed proxy detection & use
2021-06-28 13:05:48 +02:00
Adolfo Gómez García
0da916b57c Updated middleware 2021-06-28 11:02:47 +02:00
Adolfo Gómez García
03012dbaa7 Upgraded to Angular v12. This will be the last release supporting IE11 2021-06-27 22:06:16 +02:00
Adolfo Gómez García
4ae95e1930 Upgraded to Angular 12. Dropped support for admin for IE11 2021-06-27 21:57:15 +02:00
Adolfo Gómez García
906901753e Added "purge" to delete vm from UDS on proxmox 2021-06-25 13:51:24 +02:00
Adolfo Gómez García
109783a430 Fixed texts for client 2021-06-25 13:26:56 +02:00
Adolfo Gómez García
655a6447ba Improved Proxmox query efficiency for machines in a pookl 2021-06-25 13:21:09 +02:00
Adolfo Gómez García
52ac406853 Test migration removal 2021-06-24 12:35:47 +02:00
Adolfo Gómez García
55f9820f37 Fixed migration problem with user & group, when changing from unique_together to constrains on Meta model 2021-06-24 12:27:43 +02:00
Adolfo Gómez García
856d645652 merged 0041 and 0042 migrations 2021-06-24 12:02:41 +02:00
Adolfo Gómez García
fd789581ed Kept by now user and group unique_toguether 2021-06-24 12:02:23 +02:00
Adolfo Gómez García
a67ba2972b Updated translations 2021-06-24 11:25:49 +02:00
Adolfo Gómez García
acd1dd4702 No needed anymore here. It's already on client 2021-06-24 08:21:30 +02:00
Adolfo Gómez García
b914980793 Removing unique_together and index_together for newer Index and UniqueConstrains 2021-06-23 20:58:00 +02:00
Adolfo Gómez García
eab51248cd Fixed service launcher 2021-06-23 20:04:48 +02:00
Adolfo Gómez García
2834120b35 Fixing up status checking 2021-06-23 17:53:13 +02:00
Adolfo Gómez García
83a407d350 Added, for 3.5, check certificate as "no" for backwards compatibility (will be yes by default on 4.0 release) 2021-06-23 16:21:02 +02:00
Adolfo Gómez García
4f45caa2e9 :Merge branch 'master' of github.com:dkmstr/openuds 2021-06-23 16:17:31 +02:00
Adolfo Gómez García
011145e911 Upgraded tunnel.py to last real one 2021-06-23 16:17:23 +02:00
Adolfo Gómez
046f5836f7 Fixed logging 2021-06-23 15:59:15 +02:00
Adolfo Gómez García
4424f2a497 Fixing up client 2021-06-23 15:58:37 +02:00
Adolfo Gómez García
97841d655b more info on subprocesses 2021-06-23 15:14:12 +02:00
Adolfo Gómez García
f20a5a33b0 Fixed debian package dependency && update client tools to add some more debug info 2021-06-23 15:01:34 +02:00
Adolfo Gómez García
d1fb59ab77 Some minor cosmetic changes for UDSClient 2021-06-22 17:12:31 +02:00
Adolfo Gómez García
174d836f45 Merge remote-tracking branch 'origin/v3.0' 2021-06-22 12:11:11 +02:00
Adolfo Gómez García
1b12aee767 Fixed html open windows for 3.0 2021-06-22 12:10:30 +02:00
Adolfo Gómez García
a070f6878b Removed all 2.7 client due to "portables" clients being available 2021-06-22 11:35:50 +02:00
Adolfo Gómez García
d51b22096e Added check debug logging with a file 2021-06-21 18:00:57 +02:00
Adolfo Gómez García
9e0fbca339 Adding early stage unlinks... 2021-06-21 17:56:16 +02:00
Adolfo Gómez García
3e67ef2f6b Adding early stage unlinks...[F 2021-06-21 17:50:12 +02:00
Adolfo Gómez García
e7fe802b1d fixed bug on wait for tasks 2021-06-21 17:39:35 +02:00
Adolfo Gómez García
6f90a7ce83 fixed bug on wait for tasks 2021-06-21 17:15:51 +02:00
Adolfo Gómez García
25fec929a9 adding some debug to client 2021-06-21 17:11:32 +02:00
Adolfo Gómez García
1abe95c492 adding some debug to client 2021-06-21 17:04:57 +02:00
Adolfo Gómez García
d438fcf298 Updating client to allow wait for subprocesses also 2021-06-21 16:54:34 +02:00
Adolfo Gómez García
539e96d264 Added service initialization exceptio catch-and-retry 2021-06-21 15:28:24 +02:00
Adolfo Gómez García
d30a3a5e4c added tunnel rest url as no redirect url 2021-06-21 15:27:32 +02:00
Adolfo Gómez García
a302541df5 Fixed macos transports to search xfreerdp in path instead of using /usr/local/bin and added homebrew paths to default system ones 2021-06-21 11:21:46 +02:00
Adolfo Gómez García
9cdab65845 Fixed path fixing :) 2021-06-21 11:05:38 +02:00
Adolfo Gómez García
b9c55437ad fixed messages for MAC os 2021-06-21 10:58:37 +02:00
Adolfo Gómez García
0b0c72e65b Added /opt/homebrew/bin as path in mac os x for newer brew installs 2021-06-21 10:53:09 +02:00
Adolfo Gómez García
aef8c637ec added python-3-certifi as dependency for packages (now we do not use QtNetwork anymore for problems in M1) 2021-06-19 17:05:12 +02:00
Adolfo Gómez García
4ed3cbc787 Working on M1 with rosseta, so removed check (that does not recognizes m1 when running app with rosseta) 2021-06-19 17:01:39 +02:00
Adolfo Gómez García
60f69be354 More checks 2021-06-19 15:57:53 +02:00
Adolfo Gómez García
8e815c3316 some more fixes 2021-06-19 15:38:19 +02:00
Adolfo Gómez García
9180d04aaf Fix for show errors 2021-06-19 15:26:05 +02:00
Adolfo Gómez García
6e60a66ae9 Simplifying for M1 2021-06-19 15:16:49 +02:00
Adolfo Gómez García
58cfa779d1 Refactoring UDS Client to allow more possibilities 2021-06-19 14:45:51 +02:00
Adolfo Gómez García
eed4bc5fb7 Updating new UDSClient 2021-06-19 13:29:43 +02:00
Adolfo Gómez García
3ed3f03d25 Changed UDSClient to remove QApp Network access and used urllib instead 2021-06-19 12:41:51 +02:00
Adolfo Gómez García
21f811d995 Added cleanup of intermediary building folders 2021-06-18 10:50:08 +02:00
Adolfo Gómez García
985746139b Fixed Makefile && install script for different platforms 2021-06-17 18:32:22 +02:00
Adolfo Gómez García
9e4a9cc2fd * Added deadline "disabling" on osmanagers, so if we dont want to close sessions for expired users, we can do it 2021-06-17 14:21:40 +02:00
Adolfo Gómez García
c1d5e4b130 src/ 2021-06-17 13:19:47 +02:00
Adolfo Gómez García
21143ab7f2 Merge branch 'master' of github.com:dkmstr/openuds 2021-06-17 12:09:06 +02:00
Adolfo Gómez García
b62dfad922 Added i686 to appimage portable 2021-06-17 12:08:55 +02:00
Adolfo Gómez García
0b3bcbc63d Fixed UDSClientDir to /tmp (BTW, appimage-builder does not work on btrfs with compressed files due to squashfs) 2021-06-17 11:14:05 +02:00
Adolfo Gómez
b4a1e6a903 Merge branch 'master' of https://github.com/dkmstr/openuds 2021-06-16 18:31:13 +02:00
Adolfo Gómez
df9cb4eb6a Updated sysprep checking from info to debug 2021-06-16 18:31:06 +02:00
Adolfo Gómez García
7f4e7e3309 Merge branch 'master' of github.com:dkmstr/openuds 2021-06-16 18:28:17 +02:00
Adolfo Gómez García
741787f95b Fixed building of portables uds clients with freerdp + x2go client 2021-06-16 18:28:10 +02:00
Adolfo Gómez
7b0ad08685 Merge branch 'master' of https://github.com/dkmstr/openuds 2021-06-16 14:34:57 +02:00
Adolfo Gómez
25b663e069 Adding 'windows installations' checks before running uds service 2021-06-16 14:34:52 +02:00
Adolfo Gómez García
762e4154fd added -env 2021-06-16 12:11:09 +02:00
Adolfo Gómez García
1bb258d9dc Fixed WOL for multi manual assigment 2021-06-15 16:22:47 +02:00
Adolfo Gómez García
d5f29bd20f Added ignore certificate for getting server stats on localhost 2021-06-15 13:32:22 +02:00
Adolfo Gómez García
69fe9e0d38 * User preferences is deprecated (to be removed)
* NX is disabled in code (to be removed on 4.0)
* Increeased URL size for "URL" transport to 256 (was 64 only)
2021-06-15 11:49:16 +02:00
Adolfo Gómez García
41c94913f8 added full clients appimage 2021-06-11 12:02:26 +02:00
Adolfo Gómez García
0dce270a9e Created portable udsclient using appimage. Now also for raspberry pi 2021-06-10 17:25:23 +02:00
Adolfo Gómez García
594d431af7 Created portable udsclient using appimage 2021-06-10 17:02:11 +02:00
Adolfo Gómez García
71242eba10 moving appimage creator to linux folder 2021-06-10 16:17:21 +02:00
Adolfo Gómez García
2dded06dc5 Added app image creation recipe for UDSClient + freerdp 2021-06-10 12:15:45 +02:00
Adolfo Gómez García
38490e184e Updated criptography part to be compatible with older releases of crpytography package 2021-06-09 17:47:49 +02:00
Adolfo Gómez García
9e462478fc Removed six dependency for client-py3 and related 2021-06-09 12:39:06 +02:00
Adolfo Gómez García
44d8b2b754 Several upgrades for newer distributions:
* Removed pycrypto dependencies for UDSClient
* added "-platform xcb" for uds executables for Actor & client3
2021-06-09 12:12:31 +02:00
Adolfo Gómez García
5884cde35c a couple of comments 2021-06-08 20:58:55 +02:00
Adolfo Gómez García
3b18597d8e Removed PyCrypto code and translated to cryptography code 2021-06-08 19:08:41 +02:00
Adolfo Gómez García
f6ddc7eef1 Added ID to machine info on service creation 2021-06-08 18:44:52 +02:00
Adolfo Gómez García
ed61fbf7b8 No, if a child dies, UDS Tunnel will regenerate a new process and try to clean the old one 2021-06-08 11:48:53 +02:00
Adolfo Gómez García
fb088ecc02 Updated UDSClient
* Reformated code
* Fixed UDS Rest API Route to /uds/rest/... instead of /rest/... (will not be compatible with 2.x anymore)
2021-06-07 21:10:57 +02:00
Adolfo Gómez García
5396d04555 Merge remote-tracking branch 'origin/v3.0' 2021-06-07 21:02:30 +02:00
Adolfo Gómez García
610085e353 Added UDS-Version as header on response to REST api 2021-06-07 21:01:39 +02:00
Adolfo Gómez García
16d6e515c6 Added "version" method to REST api so we can check UDS Server version easily 2021-06-07 20:57:19 +02:00
Adolfo Gómez García
68b3b50acf Merge branch 'master' of github.com:dkmstr/openuds 2021-06-04 13:25:45 +02:00
Adolfo Gómez García
9d6560a56e fixed version 2021-06-04 12:07:07 +02:00
Adolfo Gómez García
25363269a6 Merge remote-tracking branch 'origin/v3.0' 2021-06-04 11:50:51 +02:00
Adolfo Gómez García
9731e57f01 Fixed metapool 2021-06-04 11:44:32 +02:00
Adolfo Gómez García
8aca8ead3d Merge remote-tracking branch 'origin/v3.0' 2021-06-03 21:02:36 +02:00
Adolfo Gómez García
7a030dd302 Updated & fixed url on same window 2021-06-03 12:50:22 +02:00
Adolfo Gómez García
f184fa778d Refactorized ldap and added "ignores" to non recognized correct values 2021-06-03 11:43:56 +02:00
Adolfo Gómez García
21f6df36b0 Refactor for all middlewares (now are all on same place..) 2021-06-01 13:17:53 +02:00
Adolfo Gómez García
394ceb9e66 Added radius authenticator for UDS 2021-06-01 12:41:58 +02:00
Adolfo Gómez García
5f8abdfa41 Merge remote-tracking branch 'origin/v3.0' 2021-05-31 11:33:13 +02:00
Adolfo Gómez García
b8af381042 Fixed autocomplete 2021-05-31 11:32:58 +02:00
Adolfo Gómez García
e21267b0fd Fixed autocomplete (at last!!) 2021-05-31 11:29:56 +02:00
Adolfo Gómez García
ee7e72cbd3 Fixed main 2021-05-31 11:13:44 +02:00
Adolfo Gómez García
cb92be3c66 Simplifying several "is True" 2021-05-27 13:04:18 +02:00
Adolfo Gómez García
8fc5c759d8 Merge remote-tracking branch 'origin/v3.0' 2021-05-27 10:58:18 +02:00
Adolfo Gómez García
7edf3094ed bitarray library previously returned True or False, now return 0 and 1, and we where checking against "is True" 2021-05-27 10:52:36 +02:00
Adolfo Gómez García
02c3ffbe75 bitarray library previously returned True or False, now return 0 and 1, and we where checking against "is True" 2021-05-27 10:50:17 +02:00
Adolfo Gómez García
041942b746 Updated locales 2021-05-27 10:49:32 +02:00
Adolfo Gómez García
6c936a7dfa Fixed report definition, so filename can be changed (not an class variable anymore) and added sample xlsx report onlist of users (only sample, commmented out) 2021-05-25 19:03:55 +02:00
Adolfo Gómez García
0cc40198b2 Merge remote-tracking branch 'origin/v3.0' 2021-05-25 10:41:25 +02:00
Adolfo Gómez García
21ab85818e Fixed realname on user creation 2021-05-25 10:40:13 +02:00
Adolfo Gómez García
9789a2f868 Updated admin for pool charts 2021-05-21 14:42:11 +02:00
Adolfo Gómez García
e8733e74d1 Added graphs to servicePool 2021-05-21 14:17:49 +02:00
Adolfo Gómez García
c6d281580b Added soft shutdown first for ProxMox 2021-05-21 12:18:55 +02:00
Adolfo Gómez García
1050ada43b Improved internaldb password security (sha3_256) and added extra security to uds cookie 2021-05-21 11:38:41 +02:00
Adolfo Gómez García
f39bc9c5ba Added stats collector a global value for all stats 2021-05-19 12:22:24 +02:00
Adolfo Gómez García
c987915c41 Added stats collector a global value for all stats 2021-05-19 12:20:35 +02:00
Adolfo Gómez García
12b8354a8e Merge remote-tracking branch 'origin/v3.0' 2021-05-19 12:20:11 +02:00
Adolfo Gómez García
a7d8058d09 Fixed authenticator ip && removed "accept Proxy" (uds now handles this automatically...) 2021-05-19 12:19:24 +02:00
Adolfo Gómez García
e7d1df5ba3 added "global" stats counter to optimize graphs on dashboard 2021-05-19 11:45:40 +02:00
Adolfo Gómez García
e87727b48f fixed counters types not being added for new counter type 2021-05-17 12:59:23 +02:00
Adolfo Gómez García
13ec1877de added number of services in cache for stats 2021-05-17 12:41:35 +02:00
Adolfo Gómez García
1b4060a727 Fixed pylance complains about runtime created variables 2021-05-17 12:13:06 +02:00
Adolfo Gómez García
d8e713ad51 Imported dns.reversename (not imported before) for IP Authenticator reverse resolution 2021-05-17 11:59:54 +02:00
Adolfo Gómez García
cdca39779b Fixed Complains about curio "runtime" types 2021-05-17 11:59:24 +02:00
Adolfo Gómez García
1345593c3a Fixed typo on ticket_store 2021-05-12 17:36:14 +02:00
Adolfo Gómez García
265d4f5103 added admin part for charts 2021-05-12 17:03:28 +02:00
Adolfo Gómez García
b85a702437 Added new index to stats_c and readded the graphs from uds 2.2 2021-05-12 14:40:58 +02:00
Adolfo Gómez García
e2d7fb0790 Reformated SimpleLDAP && fixed mypy complains about runtime variables
Added max session length for user and administrator, without the needing of editing the settings.py
2021-05-11 12:48:36 +02:00
Adolfo Gómez García
a573d2d55b added (at last), the check of invalid IP/hostname values on RDS servers or Phisical Machines 2021-05-10 10:47:00 +02:00
Adolfo Gómez García
de50fef63c Merge remote-tracking branch 'origin/v3.0' 2021-05-07 12:36:20 +02:00
Adolfo Gómez García
a017807d2a updated admin 2021-05-07 12:35:12 +02:00
Adolfo Gómez García
0133ddc2b5 Merge remote-tracking branch 'origin/v3.0' 2021-05-06 07:55:00 +02:00
Adolfo Gómez García
f8c9dd25df A new try to disable autocomplete on admin 2021-05-06 07:54:28 +02:00
Adolfo Gómez García
cddfd735b2 Merge remote-tracking branch 'origin/v3.0' 2021-05-04 13:07:10 +02:00
Adolfo Gómez García
3f6d12c89f Adding osDetector to UDSClient 2021-05-04 13:05:53 +02:00
Adolfo Gómez García
98293bba75 Merge remote-tracking branch 'origin/v3.0' 2021-05-04 13:05:31 +02:00
Adolfo Gómez García
469940074c Fixed VC Fixed pool "empty" token 2021-05-04 12:59:02 +02:00
Adolfo Gómez García
e920628395 Fixed connection client working 2021-05-04 12:32:56 +02:00
Adolfo Gómez García
07738e3dc2 Added support for detecting if UDS Client is launched correctly 2021-04-30 11:13:52 +02:00
Adolfo Gómez García
2b5543905a added "accesedByClient" property so we can check, from web, if local plugin is installed.... 2021-04-29 13:01:07 +02:00
Adolfo Gómez García
87c2ea8add added status checker to web API 2021-04-29 12:09:03 +02:00
Adolfo Gómez García
2a2a2b2ad0 small type checking fix & expresion fix 2021-04-28 10:47:35 +02:00
Adolfo Gómez García
47ef12ef6a Removed Crypto library remmanents. Old 2.2 RSA keys are no longer supported on 3.5 2021-04-28 10:42:45 +02:00
Adolfo Gómez García
451b8f6fb9 Fixes for mypy complains 2021-04-27 11:46:10 +02:00
Adolfo Gómez García
bd2b0cd171 Fixing mypy complains 2021-04-27 11:32:04 +02:00
Adolfo Gómez García
9a7afe7839 fixed MetaPool orderer 2021-04-27 11:31:43 +02:00
Adolfo Gómez García
18a8c81af6 Merge remote-tracking branch 'origin/v3.0' 2021-04-26 11:56:20 +02:00
Adolfo Gómez García
84ca0b2e41 Added metapool support for UDS Tickets 2021-04-26 11:44:31 +02:00
Adolfo Gómez García
09c65b2598 added proxy support for OpenStack & OpenStack legacy 2021-04-23 11:30:45 +02:00
Adolfo Gómez García
6e438bf4cb Added squashed migration from 26 to 38 2021-04-22 17:56:50 +02:00
Adolfo Gómez García
7502fe3bcc Removed squashed migrations 2021-04-22 17:43:29 +02:00
Adolfo Gómez García
e9a719a2eb Added metapools capacity of show grouped pools transports 2021-04-22 14:44:48 +02:00
Adolfo Gómez García
ce73d4e29f Updated admin fix from 3.0 2021-04-22 11:58:52 +02:00
Adolfo Gómez García
ffeaf9e22c Merge remote-tracking branch 'origin/v3.0' 2021-04-22 11:56:16 +02:00
Adolfo Gómez García
5355c7e420 Fixed admin deletion of calendar access for meta pools 2021-04-22 11:55:23 +02:00
Adolfo Gómez García
1e184a3a34 small fix on graphs (cosmetic) 2021-04-21 23:56:52 +02:00
Adolfo Gómez García
74d4349266 fixed signature of osManager publication method 2021-04-20 14:39:57 +02:00
Adolfo Gómez García
26c9f0edc8 Fixed scheduler next execution (typo make it wait DAYS instead of SECONDS!!! 2021-04-20 14:27:53 +02:00
Adolfo Gómez García
797a5df4a9 Fixed admin imgchoice 2021-04-20 13:30:13 +02:00
Adolfo Gómez García
8fbdda7b56 Merge remote-tracking branch 'origin/v3.0' 2021-04-19 12:59:44 +02:00
Adolfo Gómez García
d3c14520d4 Fixed small backslash typo on storage names 2021-04-19 12:59:18 +02:00
Adolfo Gómez García
9f04bdab05 Added custom parameters for freerdp mac clients.
distinct from linux custom parameters.
2021-04-16 11:21:21 +02:00
Adolfo Gómez García
5597af7d85 merged vnc from 3.0 2021-04-13 12:50:03 +02:00
Adolfo Gómez García
697c3e1c52 Merge remote-tracking branch 'origin/v3.0' 2021-04-13 12:47:27 +02:00
Adolfo Gómez García
fa32d485c9 Added VNC launch support from uds assigned services 2021-04-13 12:46:43 +02:00
Adolfo Gómez García
ae7f867482 fixed default value from html5rdp to any instead of rdp and fixed onw parameter 2021-04-13 11:45:43 +02:00
Adolfo Gómez García
f595219405 added fix for vscode complaining about alias && merged 2021-04-08 17:47:03 +02:00
Adolfo Gómez García
0fd24dadff Fixed sample settings for Django 3.2 new DEFAULT_AUTIFIELD and added local fonts also on admin interface 2021-04-08 17:41:03 +02:00
Adolfo Gómez García
d66e59bd50 small spelling typo fix 2021-04-08 10:23:54 +02:00
Adolfo Gómez García
cc12b7d5f6 Added "backport of new tunnel" to old python 2.7 client 2021-04-07 16:48:24 +02:00
Adolfo Gómez García
d67a9d6ddc fixed reference to Dani Torregrosa (sorry for the mispelling :) ) 2021-04-07 12:32:25 +02:00
Adolfo Gómez García
5ff3c58149 added Dani sugested changes for MSRDP of Microsoft on MacOsX 2021-04-07 10:36:57 +02:00
Adolfo Gómez García
9340e3c3c1 added "backup host" to xen server in case of connection failure to main server 2021-04-06 12:12:57 +02:00
Adolfo Gómez García
4357ef3be8 Merge remote-tracking branch 'origin/v3.0' 2021-04-05 13:21:46 +02:00
Adolfo Gómez García
afd36886d6 Added "switch to master" on login as default 2021-04-05 13:21:26 +02:00
Adolfo Gómez García
a3905c0c6c added time to enter credentials before closing new connections though tunnel 2021-04-05 11:24:30 +02:00
Adolfo Gómez García
03fc488f33 Fixed provider of Physical machines MANDATORY flag for advanced config 2021-03-29 12:52:58 +02:00
Adolfo Gómez García
2aee4e9417 Added log if could not resolve ip on PhisicalMachines multi 2021-03-25 12:37:43 +01:00
Adolfo Gómez García
b8494f51ac More fixes for WOL on Phisical Machines 2021-03-24 17:33:39 +01:00
Adolfo Gómez García
93a12c180e More fixes for WOL on Phisical Machines 2021-03-24 17:18:34 +01:00
Adolfo Gómez García
26aa9f6db7 Enhaced "wolURL" check 2021-03-24 12:13:26 +01:00
Adolfo Gómez García
3f881b3e17 Added support for name resolutions on service_multi && fixed max page limit from 50 to 100 2021-03-24 11:54:03 +01:00
Adolfo Gómez García
0a0b4cb740 Merge remote-tracking branch 'origin/v3.0' 2021-03-23 16:42:38 +01:00
Adolfo Gómez García
eb3638d62a fixed azuread login on html5rdp 2021-03-23 16:41:56 +01:00
Adolfo Gómez García
5df8f640d8 Added config for WOL on UDS 2021-03-23 16:12:51 +01:00
Adolfo Gómez García
8c68da806a Added config for WOL on UDS 2021-03-23 15:38:02 +01:00
Adolfo Gómez García
b9ba304493 Added "ignore port check" if WOLAPP is configured 2021-03-23 12:25:04 +01:00
Adolfo Gómez García
f7b8e644f9 Fixed sample REST1 for python3 && added reset suport for assigned user service using REST API 2021-03-22 11:42:11 +01:00
Adolfo Gómez García
034021522d Fixed .tar.gz installer info 2021-03-15 11:25:27 +01:00
Adolfo Gómez García
52d3ffeac3 added config to actor block attacks 2021-03-12 15:10:39 +01:00
Adolfo Gómez García
868ff2817a Merge remote-tracking branch 'origin/v3.0' 2021-03-12 15:07:50 +01:00
Adolfo Gómez García
ba716be0f3 Added actor block on failure security config 2021-03-12 15:07:03 +01:00
Adolfo Gómez García
51916e0949 Merge remote-tracking branch 'origin/v3.0' 2021-03-12 11:42:02 +01:00
Adolfo Gómez García
1505fd346b * Fixed configuration commands with parameters with "equal" sign
* Fixed access using ticket
2021-03-12 11:41:53 +01:00
Adolfo Gómez García
e517281c6a Merge remote-tracking branch 'origin/v3.0' 2021-03-11 14:27:57 +01:00
Adolfo Gómez García
49ee75d986 Fixed big mistake on storage 2021-03-11 14:27:45 +01:00
Adolfo Gómez García
c90f9c40fd Merge remote-tracking branch 'origin/v3.0' 2021-03-11 14:15:01 +01:00
Adolfo Gómez García
2acc72a1f7 Fixed big mistake on storage 2021-03-11 14:12:33 +01:00
Adolfo Gómez García
c6213ff37c Merge remote-tracking branch 'origin/v3.0' 2021-03-10 18:13:42 +01:00
Adolfo Gómez García
81d8544f5f Added "AzureAD" RDP login support 2021-03-10 18:13:08 +01:00
Adolfo Gómez García
35b0d709f6 small fix in case service_multi loads old values 2021-03-10 11:10:37 +01:00
Adolfo Gómez
3908c875d3
Merge pull request #65 from glyptodon/easy-compat
Ensure guacamole-auth-uds is compatible with third-party branding extensions.
2021-03-05 23:42:55 +01:00
Michael Jumper
c28c6c7b98 Complete removal of code partially removed by commit 073ce3d. 2021-03-05 12:13:21 -08:00
Michael Jumper
fe3fd6c35b Remove UDS icon (conflicts with any third-party branding). 2021-03-05 12:11:53 -08:00
Adolfo Gómez García
d11a010562 Cleanup temp environment before assigning it to an user 2021-03-05 11:01:23 +01:00
Adolfo Gómez García
a035633b58 Merge remote-tracking branch 'origin/v3.0' 2021-03-04 17:05:19 +01:00
Adolfo Gómez García
ef24656e29 added local fonts instead from google to allow intranets to work fine 2021-03-04 17:04:03 +01:00
Adolfo Gómez García
281adedd3b autocontained google fonts 2021-03-04 17:01:29 +01:00
Adolfo Gómez García
688acb0631 Added extra security control to guacamole tickets 2021-03-04 12:13:38 +01:00
Adolfo Gómez García
0bc1f72dc8 Merge remote-tracking branch 'origin/v3.0' 2021-03-03 12:31:45 +01:00
Adolfo Gómez García
8a8df3de35 Fixed policy for removal of old ips on multiple_ip and restored "/disabled" behavior 2021-03-03 12:31:35 +01:00
Adolfo Gómez García
5d52061041 Merge remote-tracking branch 'origin/v3.0' 2021-03-03 12:27:39 +01:00
Adolfo Gómez García
0e20ccc19c Fixed policy for removal of old ips on multiple_ip and restored "/disabled" behavior 2021-03-03 12:22:10 +01:00
Adolfo Gómez García
190079fddc Merge remote-tracking branch 'origin/v3.0' 2021-03-01 13:12:59 +01:00
Adolfo Gómez García
52f8dc7fde Now machines does not locks forever.... (fix) 2021-03-01 13:12:14 +01:00
Adolfo Gómez García
9f44e7fd25 Merge remote-tracking branch 'origin/v3.0' 2021-03-01 13:08:47 +01:00
Adolfo Gómez García
8af6cc008b Now machines does not locks forever.... 2021-03-01 13:08:31 +01:00
Adolfo Gómez García
ff685119ae Merge remote-tracking branch 'origin/v3.0' 2021-03-01 13:07:33 +01:00
Adolfo Gómez García
388cb2644b fixing up service_multi 2021-03-01 13:07:31 +01:00
Adolfo Gómez García
5f30e083b1 Now machines does not locks forever.... 2021-03-01 13:06:41 +01:00
Adolfo Gómez García
bda4057173 Merge remote-tracking branch 'origin/v3.0' 2021-03-01 13:01:06 +01:00
Adolfo Gómez García
017aa46403 Now machines does not locks forever.... 2021-03-01 13:00:30 +01:00
Adolfo Gómez García
7aec9a116e added "post-login-as-sysadmin" possibility of run windows script 2021-03-01 12:13:28 +01:00
Adolfo Gómez García
f57fea4699 Merge remote-tracking branch 'origin/v3.0' 2021-03-01 11:47:02 +01:00
Adolfo Gómez García
a2a8f157e0 Updated translations 2021-03-01 11:45:59 +01:00
Adolfo Gómez García
d52bc68015 Merge remote-tracking branch 'origin/v3.0' 2021-03-01 11:42:14 +01:00
Adolfo Gómez García
eb8f300c0e fixed page not found redirections 2021-03-01 11:41:47 +01:00
Adolfo Gómez García
8ab1342775 merged chango of timeouts on 3.0 2021-03-01 11:14:02 +01:00
Adolfo Gómez García
f602d641a0 Merge remote-tracking branch 'origin/v3.0' 2021-03-01 10:42:34 +01:00
Adolfo Gómez García
9cd084a222 Fixed phisical machines skitTime 2021-03-01 10:41:35 +01:00
Adolfo Gómez García
3e07cf53e4 added remove control characters of an unicode string 2021-02-25 13:45:37 +01:00
Adolfo Gómez García
2968bc7d41 Merge remote-tracking branch 'origin/v3.0' 2021-02-25 10:39:53 +01:00
Adolfo Gómez García
6a209c0836 Added new resolutions for RDP display 2021-02-25 10:39:12 +01:00
Adolfo Gómez García
6b131681cd Added new resolutions for screens to RDP client 2021-02-25 10:38:35 +01:00
Adolfo Gómez García
9568a9b180 Merge remote-tracking branch 'origin/v3.0' 2021-02-24 15:18:04 +01:00
Adolfo Gómez García
d7a8a441ad Fixed locale 2021-02-24 15:17:47 +01:00
Adolfo Gómez García
91fcbe7336 Fixed "image" parameter for wake remote machine 2021-02-23 14:19:47 +01:00
Adolfo Gómez García
2fd5b40809 Fixed Phisical machines issues & updated macos screen calc algorithn 2021-02-22 14:25:27 +01:00
Adolfo Gómez García
4e161b15f4 Merge remote-tracking branch 'origin/v3.0' 2021-02-17 16:02:29 +01:00
Adolfo Gómez García
7985c0f9d0 Updated translations 2021-02-17 16:02:13 +01:00
Adolfo Gómez García
328d35a289 Merged 3.0 HTML5 RDP changes 2021-02-17 15:40:43 +01:00
Adolfo Gómez García
af52727862 Merge remote-tracking branch 'origin/v3.0' 2021-02-17 15:35:36 +01:00
Adolfo Gómez García
d474f02baf added support for "legacy" window override on html5 for UDS 2021-02-17 15:33:56 +01:00
Adolfo Gómez García
672897f828 fixed test redirect && fixed frequency 2021-02-16 13:17:10 +01:00
Adolfo Gómez García
073ce3df12 removed old unused code 2021-02-16 10:20:28 +01:00
Adolfo Gómez García
09125bb1fa Merge remote-tracking branch 'origin/v3.0' 2021-02-15 12:14:39 +01:00
Adolfo Gómez García
041ff932e4 added log to services.log on case of phisical machine connection test failure 2021-02-15 12:11:01 +01:00
Adolfo Gómez García
f3e7e21149 Added log in case of file access problems 2021-02-15 11:38:59 +01:00
Adolfo Gómez García
348258daf2 Merge remote-tracking branch 'origin/v3.0' 2021-02-14 22:11:27 +01:00
Adolfo Gómez García
d1f83e4ae4 fixed detection of iPad & iPhone 2021-02-14 22:02:24 +01:00
Adolfo Gómez García
49a6e01477 Merge remote-tracking branch 'origin/v3.0' 2021-02-11 09:43:15 +01:00
Adolfo Gómez
9f2354191c
Merge pull request #64 from glyptodon/simplify-config
Replace complex "udsfile" logic with simplified "uds-base-url" property.
2021-02-11 09:34:50 +01:00
Adolfo Gómez
6804982b0b
Merge pull request #63 from glyptodon/revalidate-data
Re-validate UDS data for each connection attempt.
2021-02-11 09:33:39 +01:00
Michael Jumper
857f8602b8 Replace complex "udsfile" logic with simplified "uds-base-url" property. 2021-02-10 16:58:03 -08:00
Michael Jumper
584dee9fcd Re-validate UDS data for each connection attempt. 2021-02-10 16:45:01 -08:00
Adolfo Gómez García
e7bf7b0258 added "hidden" mac address treatment to phisical machines 2021-02-10 14:43:36 +01:00
Adolfo Gómez García
a3ced4af30 fixed get tag from auth name 2021-02-09 13:42:57 +01:00
Adolfo Gómez García
46d056de5d Merge remote-tracking branch 'origin/v3.0' 2021-02-09 12:39:13 +01:00
Adolfo Gómez García
b6cae240a7 small comment fix 2021-02-09 12:27:37 +01:00
Adolfo Gómez García
92e13c48de Added support for linux environmenv var expansion on parameters for freerdp 2021-02-08 12:53:42 +01:00
Adolfo Gómez García
d93e5dc566 Merge remote-tracking branch 'origin/v3.0' 2021-02-05 14:32:10 +01:00
Adolfo Gómez García
99a96bf343 added environment variable expansion to rdp parameters 2021-02-05 14:31:43 +01:00
Adolfo Gómez García
0b8a9444d1 upgraded user gui 2021-02-05 10:59:23 +01:00
Adolfo Gómez García
cea271a2ce Added typing to scheduler 2021-02-01 12:53:34 +01:00
Adolfo Gómez García
d2d190e8a4 Retry scheduler cleanup in case of locked db 2021-01-29 11:54:48 +01:00
Adolfo Gómez García
5b8ff497fa Improved sql for scheduler main loop 2021-01-29 11:53:38 +01:00
Adolfo Gómez García
ae6d36b86a manually imported changes to v3.0 on spool names variables 2021-01-28 14:06:03 +01:00
Adolfo Gómez García
600f50f203 Merge remote-tracking branch 'origin/v3.0' 2021-01-28 14:00:31 +01:00
Adolfo Gómez García
04d0acb17e Fixed count & added new vars to service pools name 2021-01-28 13:56:57 +01:00
Adolfo Gómez García
caf1d5d825 Adding support for custom connection userServices data for RDP 2021-01-28 13:09:43 +01:00
Adolfo Gómez García
99d3393a33 Merge remote-tracking branch 'origin/v3.0' 2021-01-26 16:07:49 +01:00
Adolfo Gómez García
80bd2c2f9c Fixed headers for rest.py 2021-01-26 16:01:56 +01:00
Adolfo Gómez García
1d06bd02c0 fixing tunnel on privileges dropping 2021-01-25 15:19:49 +01:00
Adolfo Gómez García
41991590ca added support for running as root and drop to an user later 2021-01-25 14:58:50 +01:00
Adolfo Gómez García
4313368f78 small fixes for tunnel 2021-01-25 12:47:00 +01:00
Adolfo Gómez García
50660d92e5 fixed tunnel to allow sending to broker connection stats on termination 2021-01-25 11:12:10 +01:00
Adolfo Gómez García
c796f5aaac fixed sample tunnel configuration 2021-01-25 08:42:50 +01:00
Adolfo Gómez García
9e88ff5daa * Added "no compression" to ssl options for tunnel
* Updated headers & reformated rest.py
2021-01-23 21:50:40 +01:00
Adolfo Gómez García
cb5a6f2430 Fixed osDetector name 2021-01-22 09:01:52 +01:00
Adolfo Gómez
0f87c022f3 Headers & comments fix 2021-01-22 09:00:59 +01:00
Adolfo Gómez García
69f1c88c3d Fixed headers 2021-01-22 07:28:17 +01:00
Adolfo Gómez García
6fc6fa0fe1 Remove pycrypto and only using cryptopraphy 2021-01-22 07:17:18 +01:00
Adolfo Gómez García
f634d4ef1a Added .env files for vscode editing 2021-01-22 07:16:53 +01:00
Adolfo Gómez García
f933181369 Merge remote-tracking branch 'origin/v3.0' 2021-01-21 11:00:45 +01:00
Adolfo Gómez García
99e6ec8090 add sample custom download to configjs.py 2021-01-21 11:00:13 +01:00
Adolfo Gómez
f0b6726e19 Merge branch 'master' of https://github.com/dkmstr/openuds 2021-01-20 12:42:38 +01:00
Adolfo Gómez
8424c14052 added certifi certificates to CA list for Qt on UDS Client 2021-01-20 12:42:30 +01:00
Adolfo Gómez García
97f709bf52 fixed opengnsys connector callbacks. 2021-01-20 09:00:25 +01:00
Adolfo Gómez García
c26c8d9df9 Removed OLD template (code cleanup) 2021-01-20 08:48:21 +01:00
Adolfo Gómez García
9f81d0a066 Upgraded angular version of interfaces to v11 2021-01-19 09:13:07 +01:00
Adolfo Gómez García
bb626889fb Working on next OpenGnsys service provider release 2021-01-19 08:47:05 +01:00
Adolfo Gómez García
d8fb0deef2 Working on next OpenGnsys service provider release 2021-01-19 08:46:00 +01:00
Adolfo Gómez García
743773e256 Working on new tunnel, translating client mods to new tunnel server 2021-01-18 11:24:34 +01:00
Adolfo Gómez García
4adc058e1a Updating client logic to new gen tunnel server 2021-01-18 07:51:47 +01:00
Adolfo Gómez García
f364b283e6 added tunnel check 2021-01-18 06:45:50 +01:00
Adolfo Gómez García
7e4975be99 cleanup new tunnel 2021-01-18 06:04:59 +01:00
Adolfo Gómez García
a2df121e45 fixed a couple readmes 2021-01-18 05:51:34 +01:00
Adolfo Gómez García
f402dadb0a Advanced A LOT on new tunnel server & client. First test passed 2021-01-15 11:31:39 +01:00
Adolfo Gómez García
865601b3c8 Merge remote-tracking branch 'origin/v3.0' 2021-01-14 17:43:07 +01:00
Adolfo Gómez García
20f2e4fd27 small header changes 2021-01-14 17:40:44 +01:00
Adolfo Gómez García
0da51dda92 fixed log of tunnel 2021-01-14 10:05:58 +01:00
Adolfo Gómez García
7c9c510ca0 minor updates to texts 2021-01-14 08:23:34 +01:00
Adolfo Gómez García
7ae9df21a5 added new tunnel server client 2021-01-14 08:17:49 +01:00
Adolfo Gómez García
2fd1dc5fc9 Advancing on forwarder 2021-01-14 08:11:02 +01:00
Adolfo Gómez García
a4986d3b4d Advancing on forwarder 2021-01-14 08:10:46 +01:00
Adolfo Gómez García
40abfb6014 Advancing on forwarder 2021-01-14 08:10:28 +01:00
Adolfo Gómez García
d6a8639b18 new tunnel server ready for testing phase 2021-01-14 06:01:06 +01:00
Adolfo Gómez García
971e5984d9 Advancing on new tunneler 2021-01-13 10:04:26 +01:00
Adolfo Gómez García
e486d6708d added local uds_tunnel work to openuds 2021-01-13 04:42:59 +01:00
Adolfo Gómez
f0bd3782d7 Merge branch 'master' of https://github.com/dkmstr/openuds 2021-01-11 03:04:38 +01:00
Adolfo Gómez García
7e9dde66ac Merge remote-tracking branch 'origin/v3.0' 2021-01-11 03:02:38 +01:00
Adolfo Gómez García
68d7ded5bc Upgraded windows script to be compatible with python2.7 & python3 (for future 3.5 client compatibility) 2021-01-11 03:01:11 +01:00
Adolfo Gómez
fa05d9425e Fixed for python 3 on Windows 2021-01-11 02:50:30 +01:00
Adolfo Gómez
75221a4842 fixed python3 version for windows 2021-01-11 01:33:32 +01:00
Adolfo Gómez García
4cc11d783a Merge remote-tracking branch 'origin/v3.0' 2020-12-18 11:10:35 +01:00
Adolfo Gómez García
105a6af885 fixed windows access scripts 2020-12-18 11:08:05 +01:00
Adolfo Gómez García
e5a38a65ed updated actor toke user on re-registration 2020-12-17 14:04:19 +01:00
Adolfo Gómez García
dcdea31061 fixing minor possible issues with staff members && reformating code, adapting to type checking, etc... 2020-12-17 13:56:15 +01:00
Adolfo Gómez García
6b3d222a12 Merge remote-tracking branch 'origin/v3.0' 2020-12-15 16:42:02 +01:00
Adolfo Gómez García
8719896f62 Merge remote-tracking branch 'origin/v3.0' 2020-12-15 16:41:54 +01:00
Adolfo Gómez García
bb71dd1cd3 updated translations 2020-12-15 13:54:32 +01:00
Adolfo Gómez García
a95c69a77e Fix to gui 2020-12-09 12:19:55 +01:00
Adolfo Gómez García
57d8b01757 Fixed rdp_file url generation for mac audio 2020-12-04 13:37:07 +01:00
Adolfo Gómez García
66fb59a13b fixed tests for service on 3.5 actor 2020-12-01 11:36:01 +01:00
Adolfo Gómez García
78372e593a refactorization 2020-11-27 15:56:17 +01:00
Adolfo Gómez García
1d7c57eb2f Merge remote-tracking branch 'origin/v3.0' 2020-11-27 14:33:11 +01:00
Adolfo Gómez García
b1c4385090 Added multiple ip service maxDeployed calc 2020-11-27 14:32:49 +01:00
Adolfo Gómez García
501565c088 Reformated & minor updates for workers 2020-11-27 11:12:06 +01:00
Adolfo Gómez García
f2d55d6141 Merge remote-tracking branch 'origin/v3.0' 2020-11-26 18:43:03 +01:00
Adolfo Gómez
620e8fee94 Merge branch 'v3.0' of https://github.com/dkmstr/openuds into v3.0 2020-11-26 18:42:07 +01:00
Adolfo Gómez
933ba772d9 fixed proxy mistyping 2020-11-26 18:41:58 +01:00
Adolfo Gómez García
e9a4da5acc Merge remote-tracking branch 'origin/v3.0' 2020-11-26 11:52:21 +01:00
Adolfo Gómez García
45461844b1 Fixed SAML issues on logout redirections 2020-11-26 11:25:22 +01:00
Adolfo Gómez García
522a5ebfb7 Merge remote-tracking branch 'origin/v3.0' 2020-11-25 18:40:11 +01:00
Adolfo Gómez García
a70e7a269b Updated proxmox so reset invokes reset instead of stop vm 2020-11-25 18:37:40 +01:00
Adolfo Gómez García
6868e471c5 Merge remote-tracking branch 'origin/v3.0' 2020-11-20 14:40:18 +01:00
Adolfo Gómez García
4866b8947c restored = instead of ### for mac cord url 2020-11-20 10:08:00 +01:00
Adolfo Gómez García
9e4922ba79 adde future recording of guacamole 2020-11-19 12:14:52 +01:00
Adolfo Gómez García
7a377b0065 adapting UDS to new tunnel 2020-11-18 12:21:58 +01:00
Adolfo Gómez García
b830b0ee0a Merge remote-tracking branch 'origin/v3.0' 2020-11-17 17:09:15 +01:00
Adolfo Gómez García
dcf5ea8574 fixed tunnel for nx 3.5 2020-11-17 17:08:48 +01:00
Adolfo Gómez
2251618c69
Merge pull request #58 from glyptodon/migrate-extension
Convert "guacamole-tunnel" web application into an equivalent Apache Guacamole extension.
2020-11-17 00:28:12 +01:00
Michael Jumper
a6876de0b1 Convert "guacamole-tunnel" web application into an equivalent Apache Guacamole extension. 2020-11-16 14:18:41 -08:00
Adolfo Gómez García
58a70e368e * Small RDP fix (typo)
* Added secure ticket type
* Reformated sevice view
2020-11-16 19:45:54 +01:00
Adolfo Gómez García
50f3b79ee3 Merge remote-tracking branch 'origin/v3.0' 2020-11-16 14:45:24 +01:00
Adolfo Gómez García
38a625452b fixed x2goscript to tunnel (using direct by mistake) 2020-11-16 14:44:24 +01:00
Adolfo Gómez García
4183069cec Fixed help for mac ox on freerdp 2020-11-16 13:27:20 +01:00
Adolfo Gómez García
905b1e7589 refactoring code 2020-11-16 13:10:02 +01:00
Adolfo Gómez García
024bb5e748 Updated default wait-time && fixed mac access 2020-11-16 13:09:33 +01:00
Adolfo Gómez García
e4345dfefa fixed tunnel scripts for macosx 2020-11-15 22:48:17 +01:00
Adolfo Gómez García
6c54f8e75a Fixed cache bug intruduced on encoders module removal
Improbed type checking for REST (ongoing)
Optimized queries (using prefetch) for service pools listing
2020-11-13 11:23:22 +01:00
Adolfo Gómez García
45ca92b77e Removed encoders modules 2020-11-13 09:35:18 +01:00
Adolfo Gómez García
06b0f1396f reformated storage source 2020-11-13 08:43:55 +01:00
Adolfo Gómez García
c698300096 Merge remote-tracking branch 'origin/v3.0' 2020-11-13 08:30:45 +01:00
Adolfo Gómez García
482cc4b2ae Removing "encoders" uds module 2020-11-13 08:30:27 +01:00
Adolfo Gómez García
ed15178549 fixed typo on storage locator. (The bug is in a code that is not used, but maybe in a future...) 2020-11-13 08:29:19 +01:00
Adolfo Gómez García
2f67eacfb6 * Removing "encoders" module (nonsense and sometimes confusing. Helped on python 2.7, but now... :)
* Revised reports to improve type checking
2020-11-12 13:55:09 +01:00
Adolfo Gómez García
b8e7dc07c3 Refactoring models (without DB modification) to better type checking 2020-11-12 12:13:35 +01:00
Adolfo Gómez García
52f524eb61 * Fixed comms to not "annoy" with warnings
* Added generateUuid to allow pass in an object
* renamed "is_meta" to more convenient "is_owned_by_meta
* Fixed 2.x actor rest api small bug (not used that part right now anyway, but for future)
2020-11-12 11:48:42 +01:00
Adolfo Gómez García
637519a162 Upgrading models for pylance typechecking 2020-11-12 08:35:45 +01:00
Adolfo Gómez García
65b47686db updating type checking 2020-11-11 14:36:31 +01:00
Adolfo Gómez García
1ab534c3aa * Adding more type checking (pylance type checking works fin with theese new "checks")
* Removed redundant fields not used
2020-11-11 13:32:02 +01:00
Adolfo Gómez García
8cd5437429 removing unused ManyToManyField (it has already a relation class) 2020-11-11 11:24:13 +01:00
Adolfo Gómez García
a475d45b7b * Added better type checking on Handler
* Fixed exception of ticket store exception
* Added initial nitification for unamanged
2020-11-11 09:03:02 +01:00
Adolfo Gómez García
4f3792ced5 added typing to calendar actions pairs 2020-11-11 09:01:43 +01:00
Adolfo Gómez García
3e061275b4 Added some more typing checks 2020-11-11 09:00:34 +01:00
Adolfo Gómez García
22415b98cd Commented out fix for passwords. Do not apply to 3.x mechanics 2020-11-11 08:48:36 +01:00
Adolfo Gómez García
d5f84a4209 upgrade locales 2020-11-10 16:29:20 +01:00
Adolfo Gómez
302b9a85d5
Merge pull request #57 from danitorregrosa/escape-conflicting-chars-rdp-credential-redirection
fix for proper escaping of conflicting chars in rdp credential redire…
2020-11-10 14:20:59 +01:00
danitorregrosa
08038b5b90 fix for proper escaping of conflicting chars in rdp credential redirection 2020-11-10 14:05:56 +01:00
Adolfo Gómez García
6d9a6baa2a Merge remote-tracking branch 'origin/v3.0' 2020-11-10 09:20:16 +01:00
Adolfo Gómez García
f3e2338cfb updated translations 2020-11-10 09:19:43 +01:00
Adolfo Gómez
fb69866f89 Merge remote-tracking branch 'origin/v3.0' 2020-11-09 09:19:31 +01:00
Adolfo Gómez
cd4708296e Merge branch 'v3.0' of https://github.com/dkmstr/openuds into v3.0 2020-11-09 09:09:14 +01:00
Adolfo Gómez
c3915fd8fe Added no proxy for local requests on udsactor 2020-11-09 09:09:05 +01:00
Adolfo Gómez García
74ad50d7d8 working on allowing services to detect user login on unmanaged services 2020-11-08 19:17:29 +01:00
Adolfo Gómez García
00dc4c5a7b Changed default encrypt to AES 2020-11-07 08:20:08 +01:00
Adolfo Gómez García
a495f36c43 .gitignore update 2020-11-07 08:19:32 +01:00
Adolfo Gómez García
f69a9dbc82 Merge remote-tracking branch 'origin/v3.0' 2020-11-06 01:08:09 +01:00
Adolfo Gómez García
253896e995 fixed incorrectly removing service with token on edition of service and duplication of token 2020-11-05 09:28:32 +01:00
Adolfo Gómez García
65879f4bd3 fixed ignorables for mac client 2020-11-03 07:29:18 +01:00
Adolfo Gómez García
a094e1ebee fixed log name being bytes instead of string 2020-11-03 05:41:32 +01:00
admin
c35dc90264 added ignorable 2020-11-03 04:59:51 +01:00
Adolfo Gómez García
1be48b99d4 making some tests with nuitka 2020-11-02 08:45:20 +01:00
Adolfo Gómez García
cab09aea9c Fixing up mac os RDP transport support 2020-10-31 07:21:01 +01:00
Adolfo Gómez García
da23222f0f Working on supporting better clients on Mac 2020-10-30 09:44:55 +01:00
Adolfo Gómez García
5d604bb629 Merge remote-tracking branch 'origin/v3.0' 2020-10-29 09:36:45 +01:00
Adolfo Gómez García
9d19aebdf6 Fixed macosx CoRD pkg location 2020-10-29 09:17:11 +01:00
Adolfo Gómez García
13de581b80 Improbed session clear on user logout 2020-10-29 07:49:43 +01:00
Adolfo Gómez García
76f4df5aa1 Added admin access API restriction by IP 2020-10-29 06:23:09 +01:00
Adolfo Gómez García
8634ce50c6 Fixed so, if an invalid IP is configured on trusted source, it gets logged and ignored 2020-10-29 06:22:52 +01:00
Adolfo Gómez García
758f409372 Renamed module "openStack" to more convenient "openstack", and a couple of minor fixes related to it 2020-10-28 06:55:15 +01:00
Adolfo Gómez García
edd6714cd0 removed version dependency from requirements for cryptography 2020-10-28 01:37:42 +01:00
Adolfo Gómez
a7f9880816
Merge pull request #56 from dkmstr/dependabot/pip/server/cryptography-3.2
Bump cryptography from 2.9.2 to 3.2 in /server
2020-10-28 00:49:29 +01:00
dependabot[bot]
d9bbbb35eb
Bump cryptography from 2.9.2 to 3.2 in /server
Bumps [cryptography](https://github.com/pyca/cryptography) from 2.9.2 to 3.2.
- [Release notes](https://github.com/pyca/cryptography/releases)
- [Changelog](https://github.com/pyca/cryptography/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/2.9.2...3.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-27 22:53:01 +00:00
Adolfo Gómez García
5bf8e74018 Merge remote-tracking branch 'origin/v3.0' 2020-10-27 11:10:01 +01:00
Adolfo Gómez García
32c496e88a Increased AD path size to 256 for os manager 2020-10-27 11:02:27 +01:00
Adolfo Gómez García
f5b59889fc Merge remote-tracking branch 'origin/v3.0' 2020-10-27 07:57:48 +01:00
Adolfo Gómez García
538779e3c1 fixed usage on a day report 2020-10-27 07:55:32 +01:00
Adolfo Gómez García
6ced042153 upgraded debian build for actor and client 2020-10-23 08:34:10 +02:00
Adolfo Gómez García
e9f74d9ccc upgraded debian build for actor and client 2020-10-23 08:31:24 +02:00
Adolfo Gómez García
9815e21524 upgraded debian build 2020-10-23 08:28:02 +02:00
Adolfo Gómez García
666ae4e1d3 Added experimental support for L2 cache to Proxmox 2020-10-23 02:47:51 +02:00
Adolfo Gómez García
3e8a3efb75 Added L2 cache support for proxmox 2020-10-23 02:14:11 +02:00
Adolfo Gómez García
4094818ccc Merge remote-tracking branch 'origin/v3.0' 2020-10-22 11:14:04 +02:00
Adolfo Gómez García
6f5f17326e Fixed pools usage summary on emtpy pools 2020-10-22 11:13:41 +02:00
Adolfo Gómez García
43acedf7f6 small storage fix 2020-10-21 08:24:24 +02:00
Adolfo Gómez García
37f06617b8 Added dict-like storage management 2020-10-21 08:03:18 +02:00
Adolfo Gómez García
dd39bb4e64 Merge remote-tracking branch 'origin/v3.0' 2020-10-20 11:55:40 +02:00
Adolfo Gómez García
6dc6f5954b fixed typo on connection recovery 2020-10-20 11:29:46 +02:00
Adolfo Gómez García
bafd3bc6b3 Added support for configurable admin pagesizes 2020-10-20 11:11:52 +02:00
Adolfo Gómez García
48e0577e9f Merge remote-tracking branch 'origin/v3.0' 2020-10-20 11:10:20 +02:00
Adolfo Gómez García
61750f2f94 Improved services usage retrieval 2020-10-20 11:10:02 +02:00
Adolfo Gómez García
cb05113d88 Adding support for configurable page size of lists on admin 2020-10-20 09:19:10 +02:00
Adolfo Gómez García
afc4fd39ef Merge remote-tracking branch 'origin/v3.0' 2020-10-16 13:52:52 +02:00
Adolfo Gómez García
9c991fd8ef included sample code to allow use of css by tag (Authenticator tag) 2020-10-16 13:52:09 +02:00
Adolfo Gómez García
33502140cf Merge remote-tracking branch 'origin/v3.0' 2020-10-16 13:29:18 +02:00
Adolfo Gómez García
d840066468 Added config variable to allow some more modifications 2020-10-16 13:28:20 +02:00
Adolfo Gómez García
63280bf9cb Merge remote-tracking branch 'origin/v3.0' 2020-10-16 11:46:45 +02:00
Adolfo Gómez García
e8698316c6 Fixed calendar actions 2020-10-16 11:46:18 +02:00
Adolfo Gómez García
1d90f04245 Upgraded angualar version for user & admin 2020-10-15 04:40:32 +02:00
Adolfo Gómez García
a486e68e39 Removed old unused project files 2020-10-15 04:09:34 +02:00
Adolfo Gómez García
76e5aede37 Modified VERSION for future version release. Current stable is 3.0 2020-10-15 03:48:44 +02:00
Adolfo Gómez García
bbae1dca44 Fixed tags FULL removal 2020-10-14 17:55:20 +02:00
Adolfo Gómez García
1afe118481 Removed url redirection from html5. Now guacamole always closes window after end 2020-10-13 20:36:31 +02:00
Adolfo Gómez García
35c4e90be8 small fix for html5vnc 2020-10-13 20:32:57 +02:00
Adolfo Gómez García
b792c630c6 Fixed global removal concurrency check to speed up process 2020-10-09 13:43:54 +02:00
Adolfo Gómez García
958165c64f Fixed Opengnsys default max removing services 2020-10-09 13:41:57 +02:00
Adolfo Gómez García
2811521937 Removed old eclipse builders 2020-10-08 15:26:45 +02:00
Adolfo Gómez
792db7ba6c
Update TODO.txt
Outdated TODO. Leaving empty for now.
2020-10-08 15:25:13 +02:00
Adolfo Gómez García
5740ec7e3e fixed (c) of pam_uds 2020-10-08 15:22:38 +02:00
Adolfo Gómez García
3cbb0675a6 Removed outdated docs 2020-10-08 15:20:05 +02:00
Adolfo Gómez García
bfd5f12f82 Fixed scheduled action executor with removing & restrained pools 2020-10-07 12:39:02 +02:00
Adolfo Gómez García
b5b2d20c27 Fixed metapool usage && visualization 2020-10-05 16:50:38 +02:00
Adolfo Gómez García
cf2c984065 Fixed metapool usage && visualization 2020-10-05 16:03:49 +02:00
Adolfo Gómez García
e38c05286f Fixed loading autoattributes from python 2 2020-10-01 15:35:36 +02:00
Adolfo Gómez García
5355cc5a51 Fixed Hanged Removal of non os managed services 2020-09-30 14:05:27 +02:00
Adolfo Gómez García
1789aee1e7 Added "connection.close" to release used connections early" (fixed) 2020-09-29 16:16:47 +02:00
Adolfo Gómez García
e184961eba Added "connection.close" to release used connections early" (fixed) 2020-09-29 16:13:43 +02:00
Adolfo Gómez García
10b8f3418f Added "connection.close" to release used connections early" 2020-09-29 15:48:39 +02:00
Adolfo Gómez García
60b1fabcaf added number of service pools to transports list 2020-09-29 13:47:12 +02:00
Adolfo Gómez García
b492e7674c added "total" macro to display services 2020-09-25 14:13:53 +02:00
Adolfo Gómez García
3d0a9f758f Fixed dependencies for Fedora 32 & OpenSuse 2020-09-24 16:33:00 +02:00
Adolfo Gómez García
a2aef2fba0 Fixed service launcher & metapool launcher to correctly recognize http urls 2020-09-23 14:07:05 +02:00
Adolfo Gómez García
9d6fd8a1ab Updated translations 2020-09-22 16:24:33 +02:00
Adolfo Gómez García
547607452a Added variable launch time for plugin launcher 2020-09-22 16:22:56 +02:00
Adolfo Gómez García
25d24f8102 fixed user/userservice removal 2020-09-15 10:49:21 +02:00
Adolfo Gómez García
9e77934136 Fixed info on model utils
Added "allow_agent=False" to forwarded connection of UDS client
2020-09-10 13:53:05 +02:00
Adolfo Gómez García
78129c9569 Allow use of tag if DISALLOW_GLOBAL_LOGIN 2020-09-08 13:01:32 +02:00
Adolfo Gómez García
2c27061534 Fixed altClass group retrieval for regexldap 2020-09-08 12:21:18 +02:00
Adolfo Gómez García
d46c806ae3 Fixed ldap _altuser attributes adding 2020-09-07 12:49:48 +02:00
Adolfo Gómez García
b35ffbbf58 Fixed translation 2020-09-03 15:48:28 +02:00
Adolfo Gómez García
407dff41ea Fixed user interface typo 2020-09-03 15:45:59 +02:00
Adolfo Gómez García
2627f96499 Fixed calendar action "Remove all user services" 2020-09-03 11:35:54 +02:00
Adolfo Gómez García
a0ba19010c updated requirements 2020-09-01 15:11:28 +02:00
Adolfo Gómez García
7650f3239a Fixed configuration save logging when migration are onwards 2020-09-01 15:10:29 +02:00
Adolfo Gómez García
35f932e88d Fixed restrained on admin 2020-08-31 18:00:45 +02:00
Adolfo Gómez García
fc188b5b9c Changed the mechanics for launching an external url 2020-08-28 17:09:56 +02:00
Adolfo Gómez García
bbc211ac8c updated admin interfaces 2020-08-28 14:32:08 +02:00
Adolfo Gómez García
fbd3d36461 Fixed test of simpleldap 2020-08-27 18:50:26 +02:00
Adolfo Gómez García
a527ff326d * Updated dependency for rpms (pycrypto) for UDS
* Included "urllib.parse" as import (not all platforms includes it on "urllib" import)
* Fixed stupid "b" on tools
2020-08-27 14:13:27 +02:00
Adolfo Gómez García
6a9b764e1e fixed temp filename 2020-08-27 13:26:46 +02:00
Adolfo Gómez García
06b7b58dd2 Fixed port error on spice tunnel 2020-08-26 16:31:26 +02:00
Adolfo Gómez García
9560ee0699 Fixed X2go authorize script for vapp 2020-08-25 15:13:05 +02:00
Adolfo Gómez García
cf88eb4c4b added support for 2.2 for backwards for script send 2020-08-25 14:45:33 +02:00
Adolfo Gómez García
f9154b57a7 Final fixes for multi domain && tagged auth 2020-08-25 13:57:48 +02:00
Adolfo Gómez García
6e6384fb00 Fixed authentication multihost 2020-08-25 13:46:20 +02:00
Adolfo Gómez García
f0caabf814 Fixed authentication multihost 2020-08-25 13:42:27 +02:00
Adolfo Gómez García
110f1c23f1 Updated translations 2020-08-25 10:52:46 +02:00
Adolfo Gómez García
0d63dabe9f Fixed admin interface 2020-08-25 10:32:40 +02:00
Adolfo Gómez García
e1b4825726 Fixed meta service pool. Negative priorities not accepted 2020-08-25 10:30:01 +02:00
Adolfo Gómez García
5e4114c719 Fixed clipboard (partially) for guacamole 2020-08-20 14:45:21 +02:00
Adolfo Gómez García
5c5ddd147c Fixed port on simple ldap 2020-08-20 11:53:18 +02:00
Adolfo Gómez García
d46eebc581 small regex ldap fix 2020-08-19 15:15:25 +02:00
Adolfo Gómez García
4216d1553a Fixed Regex LDAP accepting altClass as secondary search 2020-08-19 14:44:33 +02:00
Adolfo Gómez García
1e42bf6cbb Fixed base random pass length
Removed "tunnelCheck" from legacy nx transport (not used anyway)
2020-08-19 13:44:55 +02:00
Adolfo Gómez García
416b5e738f Fixed random password complexity 2020-08-18 00:47:56 +02:00
Adolfo Gómez García
2529039f49 Fixed getIdle for all platforms 2020-08-11 15:28:47 +02:00
Adolfo Gómez García
0ba8e83588 Removed memory for now from proxmox. Not really used 2020-08-11 12:33:40 +02:00
Adolfo Gómez García
e58b3e52e9 fixed download actors display on small screens 2020-08-11 11:23:18 +02:00
Adolfo Gómez García
3e72f634d4 Fixed "true" 2020-08-11 10:59:38 +02:00
Adolfo Gómez García
b61fd61e0e added "rmp --addsig" to build script. Note that you musth have configured an rmp key, or ignore the error output (and dont get signed the .rpm) 2020-08-10 08:44:50 +02:00
Adolfo Gómez García
39cf5b1ff7 fixed config save on multiple save 2020-08-08 20:23:30 +02:00
Adolfo Gómez García
adfed4f89d added custom value to set filter on top or bottom 2020-08-08 20:15:59 +02:00
Adolfo Gómez García
27f867f71a adder renamer for opensuse-leap 2020-08-08 00:21:27 +02:00
Adolfo Gómez García
73445c516b Added VNC HTML5 experimental transport (disabled by default) 2020-08-07 09:20:39 +02:00
Adolfo Gómez García
247bb2e549 fixed javascript login 2020-08-07 06:46:28 +02:00
Adolfo Gómez García
4a8fdfe09d fixed sample config 2020-08-07 05:48:07 +02:00
Adolfo Gómez García
5a3a9e2e42 fixed sample config 2020-08-06 17:32:36 +02:00
Adolfo Gómez García
ff4ff7899c * Upgraded user interface
* Fixed visual name max length (to 32)
2020-08-06 12:47:19 +02:00
Adolfo Gómez García
a34e8c2c9d Updated admin interface 2020-08-06 08:27:39 +02:00
Adolfo Gómez García
9a9afae79a Added {use} macro to Short name, so the % of pool use could be shown on pool name 2020-08-05 15:08:07 +02:00
Adolfo Gómez García
a3c31bcfb7 Updated admin 2020-08-05 15:07:35 +02:00
Adolfo Gómez García
060b4fce98 now "joinDomain" executes "rename" and ignores most part 2020-08-05 10:40:30 +02:00
Adolfo Gómez García
fc090497cc fixed sample config file 2020-08-04 07:55:43 +02:00
Adolfo Gómez García
44456213f7 Added new report "Authenticators stats" 2020-08-03 13:05:13 +02:00
Adolfo Gómez García
5d76b3269b fixed calendar actions add/remove group/transport 2020-08-03 13:04:18 +02:00
Adolfo Gómez García
786242d1cd Small improvement to events 2020-08-02 17:16:02 +02:00
Adolfo Gómez García
fc856ad7fb Small improvement to counter 2020-08-02 17:09:06 +02:00
Adolfo Gómez García
aecd933c98 more fixes to stats counters 2020-07-31 13:39:36 +02:00
Adolfo Gómez García
5602cca2b5 Fixed getCounters to be a bit more flexible 2020-07-31 06:30:44 +02:00
Adolfo Gómez García
50fc172fd7 improved getCounter kwargs parameters read 2020-07-30 06:21:03 +02:00
Adolfo Gómez García
0664968352 Updated dashboard 2020-07-30 05:13:51 +02:00
Adolfo Gómez García
0333dbd51a Fixed non visible config values 2020-07-30 05:13:11 +02:00
Adolfo Gómez García
6e19d59bdf Small fixes (typing, name & string related) 2020-07-30 04:12:42 +02:00
Adolfo Gómez García
fe7bbe8799 added small comment in case someone wants to use UDS as main site and redirect / to somewhere else 2020-07-29 20:11:03 +02:00
Adolfo Gómez García
c53dbd6714 removed print, not commited real stats saver :) 2020-07-29 15:13:02 +02:00
Adolfo Gómez García
3e8757e908 added auth stats to stats collector & stats manager 2020-07-29 13:53:00 +02:00
Adolfo Gómez García
e1d66db7ea Merge branch 'master' of github.com:dkmstr/openuds 2020-07-28 09:43:41 +02:00
Adolfo Gómez García
c38a68f4f6 Moved __import__ to recommended "importlib.import_module"
Fixed guacamole 500 error on some cases
2020-07-28 09:43:33 +02:00
Adolfo Gómez
db373979c2 fixed unknown literal caps 2020-07-27 09:03:05 +02:00
Adolfo Gómez
606e65eea4 Added session type to login request 2020-07-27 08:53:05 +02:00
Adolfo Gómez
4e3dce37f7 Removed SENS from uds actor 3.0. Not needed 2020-07-23 09:14:19 +02:00
Adolfo Gómez García
668c26dd8f Fixed token being cleaned on managed machines on logout 2020-07-22 23:33:23 +02:00
Adolfo Gómez García
735a093b0b Fixed service_multi, so, in case a phisical machines got "stuck on db" forever, could be removed by editing the service (remove, save, readd and done) 2020-07-22 07:10:30 +02:00
Adolfo Gómez García
8a49e7c437 Fixed type of error returned by StorageAccess 2020-07-22 06:38:35 +02:00
Adolfo Gómez García
03e3517baf Added access to storage using dict-like item 2020-07-22 06:26:53 +02:00
Adolfo Gómez García
db5ac8b12e Upgraded user interface to angular 10 2020-07-21 18:13:44 +02:00
Adolfo Gómez García
78dbd966b1 Upgraded admin interface 2020-07-21 17:57:07 +02:00
Adolfo Gómez García
cff8977c63 Fixed latam for html5 2020-07-21 17:45:46 +02:00
Adolfo Gómez García
a648f5686e Updated to client for python 3 2020-07-20 13:15:00 +02:00
Adolfo Gómez García
2fbdef1739 fixed invalid cert error on python 3 2020-07-20 11:50:20 +02:00
Adolfo Gómez García
7d4243d72a Fixed spice bugs. Thanks to a-sh1 2020-07-15 14:06:55 +02:00
Adolfo Gómez García
c520a63800 Fixed HTML5 rdp netbios domain name
Fixed publication cleaning on persistent machines (Cache is now removed correctly)
2020-07-14 14:54:40 +02:00
Adolfo Gómez García
12ce031217 fixed f4 proxy request with domain and domain name on html5 if used NETBIOS name 2020-07-14 14:03:03 +02:00
Adolfo Gómez García
3ead78adb9 Updated guacamole dependency to 1.1 2020-07-12 07:03:10 +02:00
Adolfo Gómez García
b238bba7a4 Added new "future" url paths for some dispatchers 2020-07-12 01:42:25 +02:00
Adolfo Gómez García
416a11c0ed Removed _ from hostnames (no valid) 2020-07-08 19:39:37 +02:00
Adolfo Gómez García
c286beac9f Removed _ from hostnames (no valid) 2020-07-08 19:27:09 +02:00
Adolfo Gómez García
a31411fbf0 Fixed a couple of things on UDS 2020-07-08 18:48:46 +02:00
Adolfo Gómez García
675e335aa4 Added UDS Actor version to uds actor request user agent 2020-07-03 14:34:28 +02:00
Adolfo Gómez García
31ee1d2858 Fixed background "cleaners" 2020-07-02 15:39:14 +02:00
Adolfo Gómez García
19edf417ba *More fix & improvements on cleaner workers 2020-07-01 16:45:03 +02:00
Adolfo Gómez García
510b0cb32a * Fixed and improved AssignedAndUnused check time (from 1 minutes to 5, more than enough)
* Improved query to filter assignedAndUnused
* Added "destroy_after" check for stuck worker
* Improved query for stuck check
2020-07-01 16:11:47 +02:00
Adolfo Gómez García
f9ada8349f Fixed Auth limiting by hostname/label && fixed actor changeip method (is ipchange) 2020-07-01 12:00:51 +02:00
Adolfo Gómez García
5e177059fe Added parameter to add or not digits on random string 2020-06-29 13:48:40 +02:00
Adolfo Gómez García
df86e8742c Updated translations 2020-06-25 13:55:49 +02:00
Adolfo Gómez García
526229b9cf Fixed admin tooltip 2020-06-25 13:54:41 +02:00
Adolfo Gómez García
8d39728ede Fixed service information 2020-06-25 13:53:49 +02:00
Adolfo Gómez García
5bb2cfdf8a Fixed error detection on new service allocation 2020-06-24 12:51:58 +02:00
Adolfo Gómez García
640de2e7b7 Upgraded angular && small report fix 2020-06-24 05:53:13 +02:00
Adolfo Gómez García
2f615358e3 updated frontend 2020-06-24 05:20:52 +02:00
Adolfo Gómez García
7c5cbe6604 new translations 2020-06-24 05:16:44 +02:00
Adolfo Gómez García
7c4ebd90aa Fixing up clients 2020-06-24 05:07:38 +02:00
Adolfo Gómez García
2d2030f8d5 Added downloadables & legacy downloadables 2020-06-24 03:41:48 +02:00
Adolfo Gómez García
243c89eb6d Fixed package builder for actor on python3 2020-06-24 03:16:37 +02:00
Adolfo Gómez García
6de8ccb018 Created packages for udsclient for modern rh/suse based installar (python3) 2020-06-24 03:01:04 +02:00
Adolfo Gómez García
f52b224a38 template fixed for uds client for python3 2020-06-24 01:47:49 +02:00
Adolfo Gómez García
909e706bbd Fixed UDSActor for rpm based % python3 2020-06-24 01:37:13 +02:00
Adolfo Gómez García
0fcbf8dc6a Updated translations 2020-06-24 00:56:13 +02:00
Adolfo Gómez García
bda2232629 Added Custom External URL Launcher 2020-06-24 00:48:06 +02:00
Adolfo Gómez García
308a9c68ab Updated locales 2020-06-23 14:10:19 +02:00
Adolfo Gómez García
e7a403d60e updated user moodle launcher 2020-06-23 14:06:47 +02:00
Adolfo Gómez García
14ddcfe797 fixed moodle URL 2020-06-23 13:25:54 +02:00
Adolfo Gómez García
afcb96d9b7 small fix 2020-06-22 16:12:40 +02:00
Adolfo Gómez García
96945e7834 Added "autocomplete off" to forms 2020-06-22 16:00:59 +02:00
Adolfo Gómez García
fdd241194d Updated .gitignore 2020-06-22 14:43:02 +02:00
Adolfo Gómez García
0dc78fc376 * Working on FEDORA/RH/OpenSuse & rpm based uds actor for python3 packager 2020-06-22 14:36:15 +02:00
Adolfo Gómez García
4b3c3cc183 Added custom html info on login page 2020-06-19 15:09:19 +02:00
Adolfo Gómez García
69c4efe793 fixed comments 2020-06-17 12:49:04 +02:00
Adolfo Gómez García
3c85ba692e Independized "Multimedia sync" flag from sound 2020-06-17 10:38:41 +02:00
Adolfo Gómez García
7ce2ac8bd7 Fixed /multimedia (changed for /video) when tranport flag "Multimedia sync" 2020-06-17 10:33:24 +02:00
Adolfo Gómez García
062b02a409 removed unusefull "loginurl" config parameter 2020-06-16 14:47:27 +02:00
Adolfo Gómez García
e3cb1ffaf1 enlarged options for rdp linux clients text fields 2020-06-16 13:39:32 +02:00
Adolfo Gómez García
7312c1ee6b Fixed Settings sample 2020-06-15 15:10:21 +02:00
Adolfo Gómez García
d296761ada Fixed federated auth callback 2020-06-15 14:55:52 +02:00
Adolfo Gómez García
da8d885107 Fixed locales 2020-06-12 17:15:09 +02:00
Adolfo Gómez García
9d64f7a539 Fixed model so "name", "..." are also provided to Modules 2020-06-12 14:04:34 +02:00
Adolfo Gómez García
f01d4302cf Fixed comms for non suporting coms user services 2020-06-12 13:53:51 +02:00
Adolfo Gómez García
d9a948df38 Fixed types for proxmox (network) 2020-06-11 18:04:12 +02:00
Adolfo Gómez García
5df07875f9 Fixed admin text 2020-06-11 17:38:36 +02:00
Adolfo Gómez García
c23f95e903 Fixed several proxmox issues 2020-06-11 17:34:36 +02:00
Adolfo Gómez García
6f8b67f3b8 updated translations 2020-06-10 16:42:00 +02:00
Adolfo Gómez García
7a6476569d fixed admin 2020-06-10 15:01:05 +02:00
Adolfo Gómez García
1638243d84 Fixed html5 && actor v3 2020-06-10 02:14:18 +02:00
Adolfo Gómez García
74c5643bcf New messages update 2020-06-08 18:07:40 +02:00
Adolfo Gómez García
7bc87c39a7 fixed state date optimization 2020-06-08 17:44:42 +02:00
Adolfo Gómez García
bf4a6e24d2 Fixed service multi 2020-06-08 16:47:08 +02:00
Adolfo Gómez García
0aa65e71b4 fixed debian dependency (python-six instead of python3-six) for udsclient 2020-06-08 16:02:41 +02:00
Adolfo Gómez García
4985747c97 Fixed skipTimeOnFailure store && integer division on python 3 for client 2020-06-08 14:35:07 +02:00
Adolfo Gómez García
8d9b8d9234 Added support for openstack showing subnets 2020-06-05 14:51:31 +02:00
Adolfo Gómez García
7b623bd986 Several fixes for mitration from 2.2.1 2020-06-03 13:49:19 +02:00
Adolfo Gómez García
72efd559c4 Translations 2020-06-02 15:41:03 +02:00
Adolfo Gómez García
24f77d37d4 Fixed minor javascript visualizations 2020-06-02 15:38:36 +02:00
Adolfo Gómez García
a982d64190 Removed L2 cache from openstack (not really usefull right now) 2020-06-02 01:06:00 +02:00
Adolfo Gómez García
56eefa10a9 updated locales 2020-05-30 20:56:53 +02:00
Adolfo Gómez García
779dfe1fc4 Added mor info to pools usage summary 2020-05-30 20:55:21 +02:00
Adolfo Gómez García
d0e7dde571 fixed user save 2020-05-29 15:22:49 +02:00
Adolfo Gómez García
7ee137b00e check permisions on users/groups administration 2020-05-29 14:46:36 +02:00
Adolfo Gómez García
1a42daa8e3 fixed rdp script signatures 2020-05-29 14:16:46 +02:00
Adolfo Gómez García
a630f1fc14 fixed over fixes xd (small "beauty") 2020-05-29 14:15:11 +02:00
Adolfo Gómez García
9454b9f63f Fixed linux rdp scripts 2020-05-29 14:10:01 +02:00
Adolfo Gómez García
b48bea14d2 Now ensures setReady does not steals, on error, the machine to the user 2020-05-29 04:48:14 +02:00
Adolfo Gómez García
1959051fe4 added cache for checking liveness on multiple ip 2020-05-29 03:43:36 +02:00
Adolfo Gómez García
6faf6ceaca Updated default input field length to 64. Fixed actor to allow unmanaged new methods. Fixed admin interface 2020-05-28 13:58:28 +02:00
Adolfo Gómez García
7ec2197634 improving actor to better support unmanaged hosts 2020-05-28 04:29:13 +02:00
Adolfo Gómez García
7a9dbc3edd added logging capabilites to Provider & Services Class. Added info on provider log when a machine is not accesible on phisical 2020-05-28 02:13:00 +02:00
Adolfo Gómez García
944bc0041b Fixed rdp netbios domain being swapped with username 2020-05-26 21:36:52 +02:00
Adolfo Gómez García
a7b33bb992 Fixed calendar actions 2020-05-26 18:34:40 +02:00
Adolfo Gómez García
06f4c933ed updated translations 2020-05-26 16:22:39 +02:00
Adolfo Gómez García
b1e1aebdf0 Added por check for phisical machines multi 2020-05-26 16:03:49 +02:00
Adolfo Gómez García
36609eaff3 remove empty ips from phisical machines on save 2020-05-26 14:32:57 +02:00
Adolfo Gómez García
71d6e389ea fingerprints is a comma separated string 2020-05-26 11:52:00 +02:00
Adolfo Gómez García
1983a218cb fixed typo on forward 2020-05-26 11:37:54 +02:00
Adolfo Gómez García
2fea5d1526 fixed typo on forward 2020-05-26 11:36:41 +02:00
Adolfo Gómez García
cede2c48e9 added forward checking fingerprints capability 2020-05-26 11:21:35 +02:00
Adolfo Gómez García
f306449b0e Fixed meta pool prefetch & configuration save 2020-05-25 12:55:05 +02:00
Adolfo Gómez García
786e419b27 Removed last focos of possible slowness showing services 2020-05-22 18:57:37 +02:00
Adolfo Gómez García
6ff997b054 fixed refactored var 2020-05-22 13:15:40 +02:00
Adolfo Gómez García
e0a512eefb More improvements on getServices 2020-05-22 12:43:41 +02:00
Adolfo Gómez García
fcea278d2f fixed certificate message 2020-05-22 10:56:17 +02:00
Adolfo Gómez García
aee16dd075 Improved user services queries a LOT :) 2020-05-22 03:18:04 +02:00
Adolfo Gómez García
42b06ff688 fixed metapools access 2020-05-20 14:04:32 +02:00
Adolfo Gómez García
158564552e Fixed pushing menus after dialog 2020-05-20 13:00:13 +02:00
Adolfo Gómez García
5b9fe17353 fixed prefetchs on some methods 2020-05-19 18:05:30 +02:00
Adolfo Gómez García
5ea3949d4c Improved service pool listing on high numbers... 2020-05-19 17:08:40 +02:00
Adolfo Gómez García
aa3744094b fixed pools usage summary report 2020-05-18 21:53:15 +02:00
Adolfo Gómez García
222ed0e9b0 Added new report (summary of pools usage between dates) 2020-05-18 15:37:32 +02:00
Adolfo Gómez García
cf76d7ae76 fixed log comments 2020-05-15 14:24:26 +02:00
Adolfo Gómez García
4dec86fe9d Several fixes:
* Loglevel now more "readable" for actor
* Added "remove delete protection" for cloned machine to template on proxmox
* Fixed bug on textbox
2020-05-15 14:08:32 +02:00
Adolfo Gómez García
62313ae67f fixed texbox default values 2020-05-14 14:51:46 +02:00
Adolfo Gómez García
aba2995371 moved several logs out of info level 2020-05-13 12:12:34 +02:00
Adolfo Gómez García
66e3dc11ea Fixed IP Proxy 2020-05-11 15:09:52 +02:00
Adolfo Gómez García
f1e8011f42 fixed comms for certificate checking 2020-05-11 14:16:11 +02:00
Adolfo Gómez García
616df1f0f2 Fixed translations && updated staff showing info 2020-05-11 14:06:33 +02:00
Adolfo Gómez García
65bb91c449 fixed xss && fixed configjs 2020-05-11 13:35:28 +02:00
Adolfo Gómez García
c69512bf8b fixed issue with actor certificates creation 2020-05-09 08:51:14 +02:00
Adolfo Gómez García
1e03a5cf6e fixed issue with actor certificates creation 2020-05-09 08:48:43 +02:00
Adolfo Gómez García
8c3ca38b3d updated translations 2020-05-07 11:53:38 +02:00
Adolfo Gómez García
cb8461b06c Fixed Admin by translations 2020-05-07 10:55:04 +02:00
Adolfo Gómez García
559c5c76ff fixed literals & typo 2020-05-07 10:37:26 +02:00
Adolfo Gómez García
a5b164930e updated translations 2020-05-06 13:53:18 +02:00
Adolfo Gómez García
92b4e2c898 Changed shadow default for xcp from 4 to 1 2020-05-06 13:51:03 +02:00
Adolfo Gómez García
eba6a7be7a renamed CrOs SO to Chrome OS 2020-05-05 16:32:25 +02:00
Adolfo Gómez García
b824c5431b updated client to allow some more customizations from dashboard 2020-05-05 12:35:57 +02:00
Adolfo Gómez García
f409b2986c fixing up stuff 2020-05-04 14:12:36 +02:00
Adolfo Gómez
ad4ea61613
Merge pull request #52 from shaba/devel
ovirt -> proxmox in Proxmox service
2020-04-30 09:25:55 +02:00
a8d0081fd1 ovirt -> proxmox in Proxmox service 2020-04-29 17:31:43 +03:00
Adolfo Gómez García
cdd3cd546f fixed names 2020-04-29 11:28:58 +02:00
Adolfo Gómez García
3d2423f0bf added warning capture && fixed cert issuer name 2020-04-29 08:05:25 +02:00
Adolfo Gómez García
612d05a408 generating certificates with criptography lib && added alt subject 2020-04-29 07:16:00 +02:00
Adolfo Gómez García
ab84330c7b added "strip" to IP list 2020-04-28 15:57:36 +02:00
Adolfo Gómez García
bd28300324 fixed redirection for custom auth if default 2020-04-28 11:54:06 +02:00
Adolfo Gómez García
e758ec36ff Several fixes:
* Extended windows domain OU
* Addded certification check in connections to UDS clients
* Removed empty paths from REST api
2020-04-28 11:02:36 +02:00
Adolfo Gómez García
c1adf35c99 added "initializeUnmanaged", but right now its unused" 2020-04-28 07:44:39 +02:00
Adolfo Gómez García
9aaab57a6a Fixed typo on opengnsys 2020-04-27 12:57:03 +02:00
Adolfo Gómez García
e38151a349 Added udsclient for python3 for debian/ubuntu based 2020-04-27 11:46:07 +02:00
Adolfo Gómez García
0b61e6096f done python3 client installer 2020-04-27 11:27:45 +02:00
Adolfo Gómez García
2e9b7046ff Updated OpenGnsys working 2020-04-27 10:46:37 +02:00
Adolfo Gómez García
4b3840f9c3 fixed an invalid reverse 2020-04-24 12:33:35 +02:00
Adolfo Gómez García
44632a497e fixed admin interface 2020-04-24 10:18:27 +02:00
Adolfo Gómez García
e5967b7ff3 moved uds.js to different location for admin and user 2020-04-24 10:02:18 +02:00
Adolfo Gómez García
57bc347625 Updated translations 2020-04-23 11:05:25 +02:00
Adolfo Gómez García
54bd713de6 updated usage by pool report 2020-04-22 11:45:06 +02:00
Adolfo Gómez García
2d3b3af978 removed invalid code from xen 2020-04-22 10:51:14 +02:00
Adolfo Gómez García
7ea139163d removed again local SRs because its possible to mark a local storage as "shared" on non cluster xen 2020-04-21 12:25:05 +02:00
Adolfo Gómez García
e93f2951be Updated usage by pool report 2020-04-21 11:58:50 +02:00
Adolfo Gómez García
7c37d37418 added "remove all assigned user services" as an action 2020-04-21 10:58:39 +02:00
Adolfo Gómez García
aee5b4501a fixed admin interface 2020-04-20 11:06:41 +02:00
Adolfo Gómez García
c597b307b5 fixed publication full persistent 2020-04-20 10:57:20 +02:00
Adolfo Gómez García
4c77d1ac78 fixed non full persistent 2020-04-20 10:20:34 +02:00
Adolfo Gómez García
40a820e770 re-added shared check 2020-04-16 21:20:39 +02:00
Adolfo Gómez García
1c6d58a53d allow local storage 2020-04-16 10:35:35 +02:00
Adolfo Gómez García
b2727e700b fixed typo on Xen check 2020-04-16 10:05:59 +02:00
Adolfo Gómez García
0de8ce3000 pep fix 2020-04-16 08:44:13 +02:00
Adolfo Gómez García
9e32996fa8 Added FIXED & Optional openstack Project ID & region for platforms that do not expose user apis 2020-04-16 06:55:35 +02:00
Adolfo Gómez García
addf24a30a Merge branch 'master' of github.com:dkmstr/openuds 2020-04-14 09:51:37 +02:00
Adolfo Gómez García
25d36a64fa added missing dep on debian 3.0 client 2020-04-14 09:51:23 +02:00
Adolfo Gómez
cc9326fc95
Merge pull request #51 from shaba/devel
add renamer for ALT
2020-04-14 07:41:25 +02:00
72a6c28549 add renamer for ALT 2020-04-14 03:27:49 +03:00
Adolfo Gómez García
d7e30d149c fixed proxmox tooltips && fixed error page redirection 2020-04-13 10:35:23 +02:00
Adolfo Gómez García
b8c37b279a fixes for open urls on new window if requested 2020-04-07 15:27:55 +02:00
Adolfo Gómez García
06bd7bb736 added setting support for "force on new window" 2020-04-07 15:23:35 +02:00
Adolfo Gómez García
c1a128335c fixed interface 2020-04-03 14:08:52 +02:00
Adolfo Gómez García
f9163b4e10 updated admin interface 2020-04-02 00:01:34 +02:00
Adolfo Gómez García
359857b9b3 fixed actor logout persistent & x2go authorize script 2020-04-01 14:08:49 +02:00
Adolfo Gómez García
43fbfdab3d fixes for udsadctor on script exec 2020-04-01 13:35:21 +02:00
Adolfo Gómez García
173caa250e fixed urls for auths 2020-03-30 18:16:45 +02:00
Adolfo Gómez García
5e971db73f added password encription for UDS 2020-03-30 18:11:02 +02:00
Adolfo Gómez García
aaa2ce825e updated admin interface && changed default end dato to "today" 2020-03-11 14:51:20 +01:00
Adolfo Gómez García
663c8f762a first tests with python 3 client went fine.. :) 2020-03-10 16:23:38 +01:00
Adolfo Gómez García
6ead895bdf created fork of client for python3 version 2020-03-10 14:04:27 +01:00
Adolfo Gómez García
7f0e3f0541 Fixed client message 2020-03-09 15:24:09 +01:00
Adolfo Gómez García
fd90648874 removed old js apps 2020-03-09 14:48:15 +01:00
Adolfo Gómez García
3e67852d8a * added os type verify to ticketing auth
* fixed getType method
2020-03-06 10:54:54 +01:00
Adolfo Gómez García
099a9ba3c1 fixed error shown to user 2020-03-02 18:58:24 +01:00
Adolfo Gómez García
1d807784d2 Fixed translations 2020-02-28 09:37:05 +01:00
Adolfo Gómez García
69085f28da fixed translation from angular 2020-02-28 09:34:05 +01:00
Adolfo Gómez García
15cfa45f69 Fixed doLog type hints 2020-02-28 09:07:54 +01:00
Adolfo Gómez García
f9a5b32993 Fixed small actor bug
Fixed logging in windows domain os manager
2020-02-27 10:21:13 +01:00
Adolfo Gómez García
e84965bb84 Fixed required fields for checkbox 2020-02-26 12:57:52 +01:00
Adolfo Gómez García
a8e58db3bd Updated translations 2020-02-25 15:42:39 +01:00
Adolfo Gómez García
7c384409f7 Addad HA to proxmox 2020-02-25 15:40:32 +01:00
Adolfo Gómez García
ff64d21137 Fixed url 2020-02-25 15:40:13 +01:00
Adolfo Gómez García
d6019384ef fixed actions & admin & gui small bugs 2020-02-25 14:47:42 +01:00
Adolfo Gómez García
92b4aadfbb Added experimental features flag for turning on/off highly experimenal features not intended for production environments 2020-02-25 01:17:39 +01:00
Adolfo Gómez García
52437afcf8 Proxmox is now working 2020-02-24 17:02:33 +01:00
Adolfo Gómez García
56492ccd2d initial deployment 2020-02-24 02:28:51 +01:00
Adolfo Gómez García
23bbda845c proxmox publications works (but not functional yet) 2020-02-24 01:49:16 +01:00
Adolfo Gómez García
b3c9f07d36 Creating proxmox connector (not working right now, started from ovirt as template) 2020-02-23 17:56:28 +01:00
Adolfo Gómez García
a86cbe46d6 Fixed default copy* info && renamed "test" class to "Test" as it should be 2020-02-21 10:46:09 +01:00
Adolfo Gómez García
8e73d38ea3 fixed unamanged windows actor reference 2020-02-20 12:02:16 +01:00
Adolfo Gómez García
841d088f6a added support for actor for static machine pool of ips 2020-02-20 11:59:10 +01:00
Adolfo Gómez García
f33987e62e Updated translations 2020-02-20 11:38:57 +01:00
Adolfo Gómez García
273e394937 Added small delay on login failure on web 2020-02-20 01:55:54 +01:00
Adolfo Gómez García
1df17f99ec Updated gui 2020-02-20 01:48:57 +01:00
Adolfo Gómez García
8a090049c7 upgraded web user ui 2020-02-19 15:32:58 +01:00
Adolfo Gómez García
2b912b035d * Added, as fallback "hostnamectl set-hostname" for actor renamers for linux
* Upgraded OpenNebula service to better check hostname
* added versatile hostname validator for hostnames
* Fixed sample settings.py
2020-02-19 15:30:35 +01:00
Adolfo Gómez García
34d47bdda9 added unamanaged actor for Linux 2020-02-19 12:06:21 +01:00
Adolfo Gómez García
06b0e86a39 updated admin 2020-02-18 18:54:50 +01:00
Adolfo Gómez García
c7c685865e fixed pools performance report typo error 2020-02-18 18:17:21 +01:00
Adolfo Gómez García
9bdaf4eab1 upgraded user interface to angular 9 2020-02-18 17:40:56 +01:00
Adolfo Gómez García
0282086065 Fixed client logou due to idle log 2020-02-18 17:40:34 +01:00
Adolfo Gómez García
5e7502f221 Added "idle" info on logout for actor 2020-02-18 14:54:53 +01:00
Adolfo Gómez García
ffeabe15ee fixed unmanaged 2020-02-18 14:32:21 +01:00
Adolfo Gómez García
3bc08d6b86 Updated crypto manager to use cryptography instead of pyCrypto 2020-02-18 01:46:24 +01:00
Adolfo Gómez García
2b4a0113a2 Fixing actor for unmanaged 2020-02-17 13:07:33 +01:00
Adolfo Gómez García
ac0be2f4aa Fixing linux for unmanaged hosts 2020-02-17 12:51:43 +01:00
Adolfo Gómez García
e13c8a93b3 Fixed makefile 2020-02-17 12:01:48 +01:00
Adolfo Gómez García
d33e5e3a1e Unmanaged for Linux 2020-02-13 09:49:30 +01:00
Adolfo Gómez García
8b991eae12 updated windowsos manager to include unmanaged actor 2020-02-11 18:56:50 +01:00
Adolfo Gómez
d11ffbd401 Updated rest to check own_token 2020-02-11 15:01:27 +01:00
Adolfo Gómez
903ccf2e0a fixed service login/logout 2020-02-11 14:43:10 +01:00
Adolfo Gómez García
b0d4be83a4 added actor configuration for unmanaged actors 2020-02-10 13:07:42 +01:00
Adolfo Gómez
efe7bb2a53 adapting actor to support unmanaged hosts 2020-02-10 12:01:38 +01:00
Adolfo Gómez García
56376ecd56 Updating v3 actor so we can honor service tokens for some kind of actions 2020-02-08 20:35:43 +01:00
Adolfo Gómez García
4ecb520496 fixed max length on text fields 2020-02-07 12:49:15 +01:00
Adolfo Gómez García
5b8e346788 added "log" method to userservice model 2020-02-06 21:43:46 +01:00
Adolfo Gómez García
211b227105 fixing actor & actor methods 2020-02-06 18:01:33 +01:00
Adolfo Gómez García
ac03d142d9 Updated OS Manager base methods "loggedIn" and "loggedOut" to be status, so they can be more usable, and finished v3 "notify" method 2020-02-06 09:30:10 +01:00
Adolfo Gómez García
8549f3cfa8 fixed issue whith transport allowing add of service pools that do not supports the transport protocol from transport add/edit 2020-02-05 10:46:36 +01:00
Adolfo Gómez García
cef382a1df Added actor tokens 2020-02-03 14:03:24 +01:00
Adolfo Gómez García
f47b208c33 added custom message per-pool for calendar access denied 2020-01-31 13:16:23 +01:00
Adolfo Gómez García
63824cdeee updated translations & basic fix 2020-01-31 12:17:55 +01:00
Adolfo Gómez García
907402229e updated translations & basic fix 2020-01-31 12:16:21 +01:00
Adolfo Gómez García
929903342f added "Experimental" to proxies title so it can be identified 2020-01-29 15:03:26 +01:00
Adolfo Gómez
f9b284ff8e fixed actor_client 2020-01-29 14:36:39 +01:00
Adolfo Gómez
138f97e317 Changed default from debug to info on uds actor 2020-01-29 14:33:11 +01:00
Adolfo Gómez García
6385e24e18 Fixed ticket related stuff & REST login with root user 2020-01-29 14:32:25 +01:00
Adolfo Gómez
dcc87b5f8c Merge branch 'master' of https://github.com/dkmstr/openuds 2020-01-28 16:06:24 +01:00
Adolfo Gómez García
08c15b6f60 fixed literal 2020-01-28 16:05:37 +01:00
Adolfo Gómez García
3fafef3b41 fix actor config 2020-01-28 16:03:49 +01:00
Adolfo Gómez García
49f76a5def fixed auth for REST api 2020-01-28 15:56:11 +01:00
Adolfo Gómez García
501ed22ae6 fixed login/logout for easier use 2020-01-28 13:48:26 +01:00
Adolfo Gómez
de827f6bd5 Update log.py
Fixed typo on var typing
2020-01-28 13:20:10 +01:00
Adolfo Gómez García
820ba906f0 Fixing tickets for v3 actors && changing path for "join" registry key for join domain on 2 steps 2020-01-28 13:05:50 +01:00
Adolfo Gómez García
9fd3ac280b fixed client early client hostname notify 2020-01-27 14:59:27 +01:00
Adolfo Gómez García
9b2dd802d7 fixed uds actor parameters 2020-01-27 14:01:53 +01:00
Adolfo Gómez García
1518cc0294 fixed udsactor pre command parameters 2020-01-27 13:33:00 +01:00
Adolfo Gómez García
d8826c2841 fixed admin visualization error of user service state 2020-01-27 13:17:42 +01:00
Adolfo Gómez García
8678fa8f79 fixing service 2020-01-23 14:42:13 +01:00
Adolfo Gómez García
5229caead5 Fixed Thin Version of UDS Client 2020-01-22 15:38:45 +01:00
Adolfo Gómez García
142f7122fc Fixed so now UDSClient can run with python 2 or python 3 2020-01-22 14:41:09 +01:00
Adolfo Gómez García
26e429019e fixing actor on exit 2020-01-20 17:42:33 +01:00
Adolfo Gómez García
dcf9e0137a fixing actor on exit 2020-01-20 17:38:01 +01:00
Adolfo Gómez García
525fa6e71c fixing actor on exit 2020-01-20 17:33:10 +01:00
Adolfo Gómez García
45429027bf fixes for service 2020-01-20 17:18:48 +01:00
Adolfo Gómez García
7cc6c6d3b8 fixed timeout on actor (too high) 2020-01-20 16:55:06 +01:00
Adolfo Gómez García
b3324eec91 Removed a couple of "DEBUG" and fixed remote logging
"
2020-01-20 14:13:11 +01:00
Adolfo Gómez García
099c0d9861 Fixed calendar actions typo & added calencat action "ignore unused" 2020-01-16 11:54:02 +01:00
Adolfo Gómez García
f888d1da61 Improvements
* Added taskmanager foreground exec method
* catch checkState exceptions (not expected anyway) and mark pubs as errored
2020-01-09 11:10:10 +01:00
Adolfo Gómez García
69c4fd6325 Fixed actor for linux 2020-01-08 14:38:19 +01:00
Adolfo Gómez García
a4353dde86 Fixed login url 2019-12-26 12:52:51 +01:00
Adolfo Gómez García
ddc2699774 Fixed oVirt jobs & aasigned an unused worker 2019-12-26 11:54:55 +01:00
Adolfo Gómez García
8cded2bca7 fixing upg 2019-12-26 10:08:32 +01:00
Adolfo Gómez García
fb3808991d Importing and upgrading packages generation for linux actors 2019-12-26 09:58:17 +01:00
Adolfo Gómez García
c2da7211c3 renamed actors to legacy_actors for. Will be removed on next release 2019-12-26 09:40:30 +01:00
Adolfo Gómez García
8e76c1d733 fixed ticket_store cleanup times 2019-12-23 13:20:34 +01:00
Adolfo Gómez García
c8839ed2a5 fixes for 3.0 2019-12-23 12:31:36 +01:00
Adolfo Gómez García
52208d18ae Fixed about 2019-12-23 11:22:13 +01:00
Adolfo Gómez García
a66a14a63e fix small error for django 3.0 2019-12-23 10:49:26 +01:00
Adolfo Gómez García
7801cf85c0 Fixed opennebula mac retrieval (moved to a later stage, just after "power on" vm) 2019-12-20 16:18:35 +01:00
Adolfo Gómez
7bfa539e70 fixed for windows & rest client api 2019-12-19 13:32:09 +01:00
Adolfo Gómez García
cf40396211 Merge branch 'master' of github.com:dkmstr/openuds 2019-12-19 13:06:25 +01:00
Adolfo Gómez García
faa7c37336 fixed actor config opening on "advanced" tab 2019-12-19 13:06:06 +01:00
Adolfo Gómez
4d2f7c1b95 fixed default loglevel to error 2019-12-19 13:04:55 +01:00
Adolfo Gómez García
7483a6f04f Added test configuration for uds actor & fixed some texts 2019-12-19 12:54:30 +01:00
Adolfo Gómez García
3e905381ff Added "test" method for actor v3 2019-12-19 12:54:08 +01:00
Adolfo Gómez
9150e71840 Fixed deadline & idle check 2019-12-18 08:36:31 +01:00
Adolfo Gómez
33d2dbbc52 Merge branch 'master' of https://github.com/dkmstr/openuds 2019-12-17 12:35:28 +01:00
Adolfo Gómez
fcb252deae added icon for windows apps 2019-12-17 12:35:21 +01:00
Adolfo Gómez García
93b1e71440 client execute bit 2019-12-17 12:29:52 +01:00
Adolfo Gómez
293cb129ed Fixing actor issues 2019-12-17 12:26:55 +01:00
Adolfo Gómez García
65d4b0b409 merged from windows 2019-12-17 06:23:38 +01:00
Adolfo Gómez García
12f39853e4 upgraded angular user gui version 2019-12-17 06:20:08 +01:00
Adolfo Gómez García
fb297d05c3 fixed admin issues 2019-12-17 06:19:16 +01:00
Adolfo Gómez García
97e84c968a added idle checking 2019-12-16 12:27:00 +01:00
Adolfo Gómez
0ac3fa1987 fixing client for windows 2019-12-12 15:36:34 +01:00
Adolfo Gómez García
633671d12c fixing message 2019-12-12 10:01:35 +01:00
Adolfo Gómez García
1ed4c1ad57 added support for message to actor 2019-12-12 08:35:02 +01:00
Adolfo Gómez García
2509f41c85 advancing on actor 2019-12-11 13:05:10 +01:00
Adolfo Gómez García
91272fcbb8 Refactoring comms part of user service manager and adding screenshot request capability 2019-12-10 21:17:46 +01:00
Adolfo Gómez García
0895d2feaf Added screenshot capability 2019-12-10 20:20:43 +01:00
Adolfo Gómez García
ff5601ce12 Client is advancing 2019-12-10 12:31:58 +01:00
Adolfo Gómez García
b78a41f0d3 uds actor advance 2019-12-05 09:40:06 +01:00
Adolfo Gómez García
6402106d85 Fixed windows getIdle 2019-12-04 14:59:46 +01:00
Adolfo Gómez García
3ed5d26245 advancing 2019-12-04 14:10:26 +01:00
Adolfo Gómez
72efa3221f fixing uds actor service for windows 2019-12-03 17:43:19 +01:00
Adolfo Gómez García
aabb08cad4 * Updated admin
* Updated actor
2019-12-03 15:22:45 +01:00
Adolfo Gómez García
78953ef5d9 Advanced a lot on actor 2019-12-03 10:36:23 +01:00
Adolfo Gómez García
a6cb350454 Implementing new IPC mechanics 2019-12-02 14:38:51 +01:00
Adolfo Gómez García
20bceadda9 fixed Admin interface 2019-12-01 20:46:19 +01:00
Adolfo Gómez García
4231eb5b9d Now actor start to work. A lot of work ahead, but first part seems fine :) 2019-12-01 20:26:20 +01:00
Adolfo Gómez García
d53d092483 Advanced on v2 api for actor 3.0 2019-12-01 13:32:17 +01:00
Adolfo Gómez García
371cc3d14b fixes 2019-11-30 22:41:57 +01:00
Adolfo Gómez García
8052809e86 Fixed typo 2019-11-30 22:37:12 +01:00
Adolfo Gómez García
ced7226f81 advancing on new v3 actor 2019-11-30 22:34:05 +01:00
Adolfo Gómez García
a8b94325e5 Fixed mistake (using owntoken as secret, and we should not... 2019-11-29 09:34:06 +01:00
Adolfo Gómez García
79f61098af Advancing on actor 2019-11-29 09:14:49 +01:00
Adolfo Gómez García
e5b4fb393f Actor v3 2019-11-29 02:23:56 +01:00
Adolfo Gómez García
6f3f573f61 Advancing on actor 2019-11-28 14:11:55 +01:00
Adolfo Gómez García
cf6a03b585 updating linux actor 2019-11-28 11:05:42 +01:00
Adolfo Gómez García
4cdbe5abae udsactor/linux/renamer/common.py 2019-11-28 11:04:08 +01:00
Adolfo Gómez
2c8963ba5f Updating new UDS Actor 2019-11-27 14:00:43 +01:00
Adolfo Gómez García
e76df6349d Advancing on new UDS Actor 2019-11-27 12:09:50 +01:00
Adolfo Gómez
282816b4eb Advancing on new UDS actor 2019-11-26 15:13:07 +01:00
Adolfo Gómez García
e967d994b1 Advancing on new v2 actor 2019-11-26 11:44:58 +01:00
Adolfo Gómez García
45b827e9e9 fixed admin issue on osmanagers for service pools 2019-11-22 13:56:09 +01:00
Adolfo Gómez
9e66503f0e Update rest.py 2019-11-22 13:53:39 +01:00
Adolfo Gómez García
52335b6e31 Added computername to actortoken db 2019-11-22 11:01:41 +01:00
Adolfo Gómez
d6691a4098 Fixing Config parameters 2019-11-22 10:56:05 +01:00
Adolfo Gómez García
bef9776a6b Updated udsacotr config tool 2019-11-22 09:36:16 +01:00
Adolfo Gómez
07d337364d Actor work 2019-11-22 08:43:25 +01:00
Adolfo Gómez García
2cf869150f advancing on new actor 2019-11-21 14:00:28 +01:00
Adolfo Gómez García
4df7c18ddc Updating new actor configuration tool 2019-11-21 12:34:02 +01:00
Adolfo Gómez García
09000f8b00 advancing on actor 2019-11-21 00:59:14 +01:00
Adolfo Gómez García
f517f73a0b working on new actor 2019-11-20 13:29:12 +01:00
Adolfo Gómez
04d204883b Setting up new actor based ofc on old one 2019-11-20 09:23:35 +01:00
Adolfo Gómez
37229e92e7 Initializing new uds actor 2019-11-20 02:11:28 +01:00
Adolfo Gómez García
c7dc116980 new experimental actor 2019-11-20 01:57:41 +01:00
Adolfo Gómez García
ede5d4b790 Ported to python >= 3.7 (needs already fixes, but most work done!! :) 2019-11-19 13:59:23 +01:00
Adolfo Gómez García
4a5669bdef cleaning for 3.0 2019-11-19 11:18:10 +01:00
Adolfo Gómez García
ef7bbebec8 cleaning for 3.0 2019-11-19 11:16:32 +01:00
Adolfo Gómez García
7e034a9de1 Fixed Xen 2019-11-18 14:50:15 +01:00
Adolfo Gómez García
8d680ad32d Renaming Xen provider 2019-11-18 09:53:31 +01:00
Adolfo Gómez García
76c47f7c76 fixes for ovirt & opennebula 2019-11-18 07:53:09 +01:00
Adolfo Gómez García
03e31f31b1 Fixes 2019-11-15 13:24:22 +01:00
Adolfo Gómez García
d67a1cd70c Merge branch 'master' of github.com:dkmstr/openuds 2019-11-14 13:18:36 +01:00
Adolfo Gómez García
dc381565cf Fixes for providers 2019-11-14 13:18:26 +01:00
Adolfo Gómez
dc0511045b
Update README.md 2019-11-14 10:32:14 +01:00
Adolfo Gómez
b78bcbd726
Update README.md 2019-11-14 10:30:24 +01:00
Adolfo Gómez García
6038f93189 Fixing up services 2019-11-14 09:27:26 +01:00
Adolfo Gómez García
ee42653cea fixed edit fields 2019-11-13 13:56:06 +01:00
Adolfo Gómez García
eb2ad9da19 Adding "manual assignements" for UDS 2019-11-11 13:27:33 +01:00
Adolfo Gómez García
928360444b Fixes 2019-11-11 10:01:27 +01:00
Adolfo Gómez García
5d26833779 updating ip machine access 2019-11-11 09:11:23 +01:00
Adolfo Gómez García
d00057a03d Fixed oVirt and OpenStack for 3.x 2019-11-11 08:42:31 +01:00
Adolfo Gómez García
6da8d2057e Upgraded OpenStack 2019-11-08 12:13:24 +01:00
Adolfo Gómez García
103ad93cdf Upgrade OpenNebula 2019-11-08 11:29:12 +01:00
Adolfo Gómez García
ce91840622 upgrading OpenNebula connector 2019-11-07 14:42:18 +01:00
Adolfo Gómez García
99fe68608c Fixed OpenGnsys Provider 2019-11-06 13:01:29 +01:00
Adolfo Gómez García
2dc1634004 small fixes on tasks 2019-11-06 11:40:52 +01:00
Adolfo Gómez García
9cb9fc6de1 Added "delayed cancel" for some kind of services that are specially difficult to "cancel" while running... 2019-11-04 12:40:42 +01:00
Adolfo Gómez García
19754f7ed7 Fixed small admin glich 2019-10-28 07:34:34 +01:00
Adolfo Gómez García
6706866174 Upgraded admin interface 2019-10-25 10:55:36 +02:00
Adolfo Gómez García
ba40b38998 Updated serialize/deserialize 2019-10-24 14:37:20 +02:00
Adolfo Gómez García
4e647c1d7a Fixed GroupsManager import position 2019-10-23 12:51:55 +02:00
Adolfo Gómez García
b02e8e1f30 fixed allowCacheDecorator to take kwargs also into account 2019-10-23 12:02:41 +02:00
Adolfo Gómez García
7aee4efb15 * Added snackbar with progress info on new/edit, so if loading of for example, provider information, is slow, the user knows that "something is going on
* Small type check for user interface
2019-10-20 12:29:07 +02:00
Adolfo Gómez García
4c9ad55d99 Added types to providers & transports
fixed allowCache generic decorator
2019-10-17 13:19:19 +02:00
Adolfo Gómez García
a2dd2cccc9 added sqlite file to ignores 2019-10-16 13:25:04 +02:00
Adolfo Gómez García
de5411d153 Updated frontend & admin guis 2019-10-14 13:47:06 +02:00
Adolfo Gómez García
d916d9ea1f fixed delayed task typo 2019-10-14 13:24:19 +02:00
Adolfo Gómez
015cde5301
Merge pull request #46 from glyptodon/dead-keys
Leverage Guacamole.InputSink for dead key support.
2019-10-14 09:18:50 +02:00
Adolfo Gómez García
3f88884a82 Fixed log recovery for user services
Fixed taskManager stop & start identify
2019-10-14 09:07:02 +02:00
Michael Jumper
fea0f6aa34 Leverage Guacamole.InputSink for dead key support.
The Guacamole.InputSink object was added to guacamole-common-js as part
of the 1.0.0 release of Apache Guacamole, allowing composed key events
to be handled with Guacamole.Keyboard as any other keys would:

http://guacamole.apache.org/releases/1.0.0/#improved-keyboard-handling--support-for-dead-keys
2019-10-13 19:32:25 -07:00
Adolfo Gómez García
a393e0b5a3 fixed oVirt for 3.7 2019-10-03 15:45:32 +02:00
Adolfo Gómez García
fbff259691 Fixing up OVirt and related 2019-10-03 14:56:18 +02:00
Adolfo Gómez García
8908d1de9d If logging write to file fails, continue without it 2019-10-03 12:23:55 +02:00
Adolfo Gómez García
f53fa4a304 Removed ov user/password sender 2019-10-03 07:53:51 +02:00
Adolfo Gómez García
db2a43afc8 Added ov user/password sender 2019-10-03 07:17:00 +02:00
Adolfo Gómez García
66f498e7ed Added ov user/password sender 2019-10-03 07:11:42 +02:00
Adolfo Gómez García
a32bb87a78 sample provider moved to 3.7 2019-10-02 10:51:43 +02:00
Adolfo Gómez García
d48e71cfd3 fixing up sample service 2019-10-01 14:01:52 +02:00
Adolfo Gómez García
76a17b19df typing on generators 2019-10-01 01:47:10 +02:00
Adolfo Gómez García
c2b2cab228 Updated locales 2019-09-30 11:50:04 +02:00
Adolfo Gómez García
fdb630dc8e updated user inteface 2019-09-30 10:15:17 +02:00
Adolfo Gómez García
5abd8184dc Fixing up things for 3.7. providers part 2019-09-27 13:23:18 +02:00
Adolfo Gómez García
7b4563b359 Fixed publication typo (setstate for setState 2019-09-26 13:13:27 +02:00
Adolfo Gómez García
3c4f026a21 Updating gui versions 2019-09-25 12:17:32 +02:00
Adolfo Gómez García
e11009332e Fixed admin interface 2019-09-25 12:10:58 +02:00
Adolfo Gómez García
a06fc617f0 Fixed "has_key" and other issues 2019-09-24 10:02:05 +02:00
Adolfo Gómez García
917dd33349 updated signatures for scripts 2019-09-23 14:44:39 +02:00
Adolfo Gómez García
bdc6f2efb2 *Fixed x2go for python 3.7
* Removed remaining user preferences
* Small nx typo fix
2019-09-23 12:35:56 +02:00
Adolfo Gómez García
346c3a3d33 Fixed SPICE transport an typo on RDP transport 2019-09-23 11:31:41 +02:00
Adolfo Gómez García
99bfae10ad Small fixes for rdp transport 2019-09-23 08:33:50 +02:00
Adolfo Gómez García
01317df1f7 added ?stamp to javascripts for admin 2019-09-20 13:17:05 +02:00
Adolfo Gómez García
3e51037160 removed "test" from networks 2019-09-20 12:53:50 +02:00
Adolfo Gómez García
ccea5e64d3 checked basename + lenname in every provider that needs it 2019-09-20 12:52:25 +02:00
Adolfo Gómez García
ce5251178b * Fixed errors view
* Removed "downloads" from non staff users
2019-09-20 11:10:15 +02:00
Adolfo Gómez García
7be3838e41 Fixed old data transformation (squashed). To migrate to 3.0 we will need first to go thouth 2.x versions 2019-09-20 10:04:22 +02:00
Adolfo Gómez García
a0ef9c8cbe updated scripts signatures 2019-09-19 12:17:40 +02:00
Adolfo Gómez García
a25d33a615 Fixed RDP for python 3.7 2019-09-19 12:00:36 +02:00
Adolfo Gómez García
b955d0327d Fixed NX Transport for python 3.7 (anyway, this transport is now marked as deprecated) 2019-09-19 11:06:32 +02:00
Adolfo Gómez García
6ae4380cf2 Fixed html5rds for latam keyboard for next guacamole 2019-09-19 08:18:57 +02:00
Adolfo Gómez García
e69497c8cb * A couple of fixes for service pool model & user service model for typing check
* Small fix on linux random pass
* Fixed HTML5RDP for python 3.7 (improved, not failing in fact)
2019-09-18 11:02:46 +02:00
Adolfo Gómez García
c736f82697 small code fixes 2019-09-18 10:12:35 +02:00
Adolfo Gómez García
56367c58f4 Fixed Simple LDAP for python 3.7 2019-09-18 09:57:20 +02:00
Adolfo Gómez García
ebbdbedaf6 Fixed SampleAuth form python 3.7 2019-09-18 09:26:46 +02:00
Adolfo Gómez García
b6391b10a5 Fixed Regex LDAP Auth 2019-09-18 08:38:35 +02:00
Adolfo Gómez García
ce71a2e6e7 fixed regexldap auth for python 3.7 2019-09-17 10:36:10 +02:00
Adolfo Gómez García
69e456822e fixed ip auth for python 3.7 2019-09-17 09:59:48 +02:00
Adolfo Gómez García
0afcdc3bd0 fixed ip auth for python 3.7 2019-09-17 09:58:42 +02:00
Adolfo Gómez García
3850b2e01f fixed internaldb auth for python 3.7 2019-09-17 09:46:40 +02:00
Adolfo Gómez García
265578409e Fixes for authenticators & decorators 2019-09-16 12:08:41 +02:00
Adolfo Gómez García
bde6ac422b fixed REST user_services for python 3.x 2019-09-13 11:00:29 +02:00
Adolfo Gómez García
4a8a2d05ee fixed REST transports for python 3.x 2019-09-13 10:24:25 +02:00
Adolfo Gómez García
85ef989a4c fixed REST system & tickets for python 3.x 2019-09-13 10:20:23 +02:00
Adolfo Gómez García
2d05062241 *fixed providers, services, .. for REST API
fixed admin 1 item menus
2019-09-13 09:24:43 +02:00
Adolfo Gómez García
f43a8a3bf4 Fixed REST services_pools for python 3.x 2019-09-12 13:38:43 +02:00
Adolfo Gómez García
7f9b4c9274 Fixed REST services_pool_groups for python 3.x 2019-09-12 13:11:06 +02:00
Adolfo Gómez García
061ac326df fixed handler "admin check" and reports from REST 2019-09-12 13:01:51 +02:00
Adolfo Gómez García
899df5a6a6 fixing up REST exceptions: notSupported 2019-09-12 12:47:23 +02:00
Adolfo Gómez García
29cb8b6a39 fixing up REST exceptions: invalidItemException 2019-09-12 12:45:30 +02:00
Adolfo Gómez García
18826708c8 fixing up REST exceptions: invalidMethodException 2019-09-12 12:43:49 +02:00
Adolfo Gómez García
726cc33320 fixing up REST exceptions 2019-09-12 12:42:08 +02:00
Adolfo Gómez García
ecdc4fa606 Fixed REST proxies for python 3.x 2019-09-12 12:18:28 +02:00
Adolfo Gómez García
72df9b2275 request middleware improved. Fixed base model types & migrated providers to 3.x python 2019-09-12 12:16:24 +02:00
Adolfo Gómez García
145ab9b865 addad old requests deletion in case of exceptions on server 2019-09-12 10:50:22 +02:00
Adolfo Gómez García
d758aecd1e Fixed REST permissions for python 3.x 2019-09-12 08:36:01 +02:00
Adolfo Gómez García
fd6db8d618 Fixed REST osmanagers for python 3.x 2019-09-11 13:41:56 +02:00
Adolfo Gómez García
6867a278bd Fixed REST calendars operations for python 3.x 2019-09-11 13:36:47 +02:00
Adolfo Gómez García
572e2b9a51 Fixed REST networks for python 3.x 2019-09-11 13:20:27 +02:00
Adolfo Gómez García
ce04b3949d Fixed REST metapools members for python 3.x 2019-09-11 13:18:26 +02:00
Adolfo Gómez García
4cd051f50a mendfixed REST metapools for python 3.x 2019-09-11 12:51:54 +02:00
Adolfo Gómez García
6eccb757ad mendfixed REST login-logout for python 3.x 2019-09-11 12:39:46 +02:00
Adolfo Gómez García
51b16ce895 mendfixed REST images for python 3.x 2019-09-11 12:27:47 +02:00
Adolfo Gómez García
fbcf635a60 mendfixed REST calendars for python 3.x 2019-09-11 11:28:07 +02:00
Adolfo Gómez García
da0df6d407 fixed REST calendars for python 3.x 2019-09-11 11:27:12 +02:00
Adolfo Gómez García
060e2cd023 fixed REST authenticator for python 3.x 2019-09-11 08:42:11 +02:00
Adolfo Gómez García
420e491196 fixing REST for python 3.x 2019-09-11 07:56:04 +02:00
Adolfo Gómez García
fbd2bd937c advancing a lot with REST part 2019-09-09 12:08:48 +02:00
Adolfo Gómez García
79f41b3e1a fixes for python 3.7 on REST 2019-09-05 11:29:57 +02:00
Adolfo Gómez García
f464d78f99 fixed stats reports & related 2019-09-04 11:25:36 +02:00
Adolfo Gómez García
6e7b5229d1 fixed list reports & related 2019-09-04 10:38:56 +02:00
Adolfo Gómez García
446a4a3cb4 fixed duplicate "show transports" on pools edit 2019-09-04 10:03:44 +02:00
Adolfo Gómez García
f5278aa57f fixed remmendeded by tomas lobo 2019-09-03 16:16:22 +02:00
Adolfo Gómez García
83726be209 Removed support for ovirt 3.x on UDS 3.x 2019-09-03 12:43:49 +02:00
Adolfo Gómez García
bada5ed2af fully ported openstack provider to python 3.x 2019-09-03 12:37:11 +02:00
Adolfo Gómez García
75f244be2e fixes on RDP transport 2019-09-03 10:33:48 +02:00
Adolfo Gómez García
a42ccd0ca6 fixes 2019-09-03 10:00:47 +02:00
Adolfo Gómez García
9464e1794e fixed autoattributes on python3 2019-09-02 10:44:29 +02:00
Adolfo Gómez García
c502127aa5 Fixed Base order 2019-09-02 10:22:44 +02:00
Adolfo Gómez García
97e5ff1b6a fixed initialization order for IPMachinesDeployed 2019-09-02 10:17:50 +02:00
Adolfo Gómez García
a69bda8673 updated transports signatures 2019-09-02 09:20:10 +02:00
Adolfo Gómez García
b233e26a52 upgraded os managers and typo fix 2019-08-20 11:04:25 +02:00
Adolfo Gómez García
2b733c0e9e refactorizing & fixing Linux os manager 2019-08-19 12:42:45 +02:00
Adolfo Gómez García
da0a2401f3 refactorizing uds.core.transports and uds.core.util filenames & some fixes 2019-08-19 12:20:33 +02:00
Adolfo Gómez García
22b079cf53 refactorizing uds.core.setransports: lenames & some fixes 2019-08-19 11:51:14 +02:00
Adolfo Gómez García
23834328dd refactorizing uds.core.services filenames & some fixes 2019-08-19 11:46:36 +02:00
Adolfo Gómez García
a8f2dcb03d Refactoring manager filenames -- UserPrefsManager & UserServiceManager 2019-08-16 11:43:57 +02:00
Adolfo Gómez García
80591c541b Refactoring manager filenames -- UserPrefsManager 2019-08-16 11:30:45 +02:00
Adolfo Gómez García
beb09115c2 Refactoring manager filenames & some fixes for python 3.7 conversion 2019-08-16 11:26:48 +02:00
Adolfo Gómez García
9a9eee9d5e refactorizing uds.core.managers filenames & some fixes 2019-08-16 10:40:14 +02:00
Adolfo Gómez García
5ffc66a71e refactorized uds.core.auth filenames 2019-08-16 10:26:34 +02:00
Adolfo Gómez García
104eeac53c Refactorized uds.core.ui and several fixes 2019-08-15 12:11:47 +02:00
Adolfo Gómez García
c980d42b1e refactorized worker filenames 2019-08-15 11:49:39 +02:00
Adolfo Gómez García
909ff33851 refactoryzed cryptoManager access 2019-08-15 11:24:56 +02:00
Adolfo Gómez García
be7d177bdc refactoryzed cryptoManager access 2019-08-15 11:22:20 +02:00
Adolfo Gómez García
6e39c1a2dc refactorized uds.core.jobs 2019-08-15 11:07:10 +02:00
Adolfo Gómez García
d5ac86cfba more fixes an refactoring for 3.7 2019-08-15 10:54:19 +02:00
Adolfo Gómez García
e836a142fe refactoring and updating models for python 3.7 2019-08-14 12:31:13 +02:00
Adolfo Gómez García
1b3e1d9bcc refactoring and updating models for python 3.7 2019-08-14 12:16:49 +02:00
Adolfo Gómez García
882a8ad2c9 fixes for 3.7 (random found ones) 2019-08-14 11:00:21 +02:00
Adolfo Gómez García
171b5f5a48 refactoring and updating models for python 3.7 -- StatsCounters, StatsEvents, Storage, Tag, TicketStore, UniqueId and Removed DeployedService in favor of ServicePool 2019-08-14 10:55:59 +02:00
Adolfo Gómez García
e2d1d17fa9 refactoring and updating models for python 3.7 -- ServicePoolPublication 2019-08-14 09:55:35 +02:00
Adolfo Gómez García
217a51728e renamed ServicesPoolGroup to ServicePoolGroup 2019-08-14 09:52:10 +02:00
Adolfo Gómez García
bec85b5463 renamed DeployedServicePublication to ServicePoolPublication 2019-08-14 09:46:37 +02:00
Adolfo Gómez García
1110a5bd63 renamed DeployedService to ServicePool 2019-08-14 09:25:41 +02:00
Adolfo Gómez García
ffc3d14daf refactoring and updating models for python 3.7 -- ServicesPool 2019-08-14 09:11:15 +02:00
Adolfo Gómez García
c9c4a8f578 refactoring and updating models for python 3.7 -- Service 2019-08-13 12:13:33 +02:00
Adolfo Gómez García
2b06813176 refactoring and updating models for python 3.7 -- Proxy & Scheduler 2019-08-13 11:48:32 +02:00
Adolfo Gómez García
49fd063e90 refactoring and updating models for python 3.7 -- Provider 2019-08-13 11:35:45 +02:00
Adolfo Gómez García
75b470a7d1 refactoring and updating models for python 3.7 -- os_manager & permissions 2019-08-13 11:28:33 +02:00
Adolfo Gómez García
377b4542d7 refactoring and updating models for python 3.7 -- Network & Transport 2019-08-13 11:22:57 +02:00
Adolfo Gómez García
ee34f6c624 refactoring and updating models for python 3.7 -- MetaPool & Log 2019-08-13 11:14:15 +02:00
Adolfo Gómez García
4be27489ad refactoring and updating models for python 3.7 -- Image 2019-08-13 11:10:24 +02:00
Adolfo Gómez García
e3912276f4 refactoring and updating models for python 3.7 -- UserPreference 2019-08-13 11:07:34 +02:00
Adolfo Gómez García
b4a09a4c10 refactoring and updating models for python 3.7 -- ManagedObjectModel 2019-08-13 11:03:42 +02:00
Adolfo Gómez García
77c6857973 refactoring and updating models for python 3.7 -- UUIDModel 2019-08-13 11:01:26 +02:00
Adolfo Gómez García
c13da05baa refactoring and updating models for python 3.7 -- Util, User & Group 2019-08-13 10:43:04 +02:00
Adolfo Gómez García
d108de9720 refactoring and updating models for python 3.6 -- DBFile and delayed_task 2019-08-13 10:09:47 +02:00
Adolfo Gómez García
1ace92083e refactoring for name improvements - config model 2019-08-12 15:04:37 +02:00
Adolfo Gómez García
fb32c8b86a refactoring for name improvements - cache, calendar, calendar_access, calendar_rule models 2019-08-12 15:01:24 +02:00
Adolfo Gómez García
efbca0bf92 refactoring for name improvements - account model 2019-08-12 14:52:58 +02:00
Adolfo Gómez García
1c9ba0738a refactoring for name improvements 2019-08-12 14:50:11 +02:00
Adolfo Gómez García
445c890209 more upgrading models for 3.7 2019-08-12 14:34:56 +02:00
Adolfo Gómez García
1072e1f883 more upgrading models for 3.7 2019-08-12 14:07:38 +02:00
Adolfo Gómez García
1e789132a5 more upgrading models for 3.7 2019-08-12 13:32:29 +02:00
Adolfo Gómez García
a6bf2c4cfc upgrading models for 3.7 2019-08-12 11:20:16 +02:00
Adolfo Gómez García
642009425f more 3.7 fixes 2019-08-09 17:57:16 +02:00
Adolfo Gómez García
a992246203 a lot of more fixes for 3.7 2019-08-09 13:22:50 +02:00
Adolfo Gómez García
52054ae45b fixed workers for 3.7 2019-08-08 13:42:22 +02:00
Adolfo Gómez García
064423413b latests fixes for uds.core.utils for 3.7 2019-08-06 14:44:21 +02:00
Adolfo Gómez García
de24aaab93 More fixes for uds.core.utils for 3.7 2019-08-06 14:08:35 +02:00
Adolfo Gómez García
b55669d910 More fixes for uds.core.utils for 3.7 2019-08-06 13:03:32 +02:00
Adolfo Gómez García
6fac308d80 fixed util.stats & util.states for python 3.7 2019-08-06 11:49:08 +02:00
Adolfo Gómez García
e103fb02d2 fixed user interface 2019-08-05 21:24:06 +02:00
Adolfo Gómez García
72a93e774d no themes on 3.0, just angular and custom deploys 2019-08-05 21:13:16 +02:00
Adolfo Gómez García
e484c31b38 upgrades for 3.7 2019-08-05 21:04:36 +02:00
Adolfo Gómez García
5157dce173 fixed admin 2019-08-05 13:26:54 +02:00
Adolfo Gómez García
cc7fbbf5f1 typo fix 2019-08-05 10:05:38 +02:00
Adolfo Gómez García
4f35ba2cca refactorized reports && more 3.7 upgrades 2019-08-02 13:27:08 +02:00
Adolfo Gómez García
45b2a3b66f BaseReport to 3.7 2019-08-02 12:21:14 +02:00
Adolfo Gómez García
bbb6792961 refactorying some file names 2019-08-02 11:58:45 +02:00
Adolfo Gómez García
3588ea20f4 3.7 advances 2019-08-02 11:49:49 +02:00
Adolfo Gómez García
999a23fb6d Updating to 3.7
refactoring portions
2019-08-02 11:17:28 +02:00
Adolfo Gómez García
47721db3f5 fixes for 3.7 and some improvements 2019-08-01 16:35:05 +02:00
Adolfo Gómez García
5fb7c830b2 fixes for 3.7 2019-07-31 11:41:25 +02:00
Adolfo Gómez García
82ef65a26c fixes for python 3.7 2019-07-29 13:13:49 +02:00
Adolfo Gómez García
a948188187 pep fix 2019-07-25 12:10:07 +02:00
Adolfo Gómez García
54110f5425 Fixed opennebula provider for python 3.7 && updated setting to nonpersistant (moved to end of image clone process) 2019-07-25 11:49:40 +02:00
Adolfo Gómez García
7d66d92f85 Merge branch 'master' of github.com:dkmstr/openuds 2019-07-18 13:03:56 +02:00
Adolfo Gómez García
c8831b1bba fixed cryptomanager 2019-07-18 13:03:47 +02:00
Adolfo Gómez García
c6b9bd4643 small fixes for mypy 2019-07-18 12:28:52 +02:00
Adolfo Gómez García
15f4db636e fixed notifications 2019-07-18 11:11:30 +02:00
Adolfo Gómez
668cd82d9e
Merge pull request #45 from shaba/devel
Fix Error 500: Plaintext too large on Tools/Configure page.
2019-07-17 21:02:48 +02:00
dae085dc6a Fix Error 500: Plaintext too large on Tools/Configure page.
ERROR 2019-07-17 17:48:11,302 __init__ dispatch 163 Error processing request
Traceback (most recent call last):
  File "/usr/share/openuds/uds/REST/__init__.py", line 143, in dispatch
    response = operation()
  File "/usr/share/openuds/uds/REST/methods/config.py", line 61, in get
    for cfg in CfgConfig.enumerate():
  File "/usr/share/openuds/uds/core/util/Config.py", line 210, in enumerate
    val = Config.section(cfg.section).valueCrypt(cfg.key)
  File "/usr/share/openuds/uds/core/util/Config.py", line 185, in valueCrypt
    return Config.value(self, key, default, True, **kwargs)
  File "/usr/share/openuds/uds/core/util/Config.py", line 199, in value
    return Config.Value(section, key, default, crypt, longText, **kwargs)
  File "/usr/share/openuds/uds/core/util/Config.py", line 82, in __init__
    self._default = CryptoManager.manager().encrypt(default)
  File "/usr/share/openuds/uds/core/managers/CryptoManager.py", line 98, in encrypt
    return encoders.encode((self._rsa.encrypt(value, b'')[0]), 'base64', asText=True)
  File "/usr/lib64/python3/site-packages/Crypto/PublicKey/RSA.py", line 158, in encrypt
    return pubkey.pubkey.encrypt(self, plaintext, K)
  File "/usr/lib64/python3/site-packages/Crypto/PublicKey/pubkey.py", line 75, in encrypt
    ciphertext=self._encrypt(plaintext, K)
  File "/usr/lib64/python3/site-packages/Crypto/PublicKey/RSA.py", line 233, in _encrypt
    raise ValueError("Plaintext too large")
ValueError: Plaintext too large

Fixes: #44
2019-07-17 20:43:28 +03:00
Adolfo Gómez García
30e041b34b fixed admin & dbgroup info data 2019-07-15 14:37:56 +02:00
Adolfo Gómez García
38d6a7e6c6 removed cleanUDS theme reset 2019-07-15 11:26:20 +02:00
Adolfo Gómez García
e7fb7064e3 fixes for x2go & uds actor on python3 2019-07-11 11:08:46 +02:00
Adolfo Gómez García
45aa2e92ac updated changelog to 3.0 on debian actor 2019-07-10 10:17:22 +02:00
Adolfo Gómez García
7cf4659f5f fixed httpserver python 3.x issue 2019-07-09 13:26:44 +02:00
Adolfo Gómez García
45db8592b7 upgraded amin 2019-07-08 10:15:44 +02:00
Adolfo Gómez
e9f03f2075
Update client-ui.js
Changed connectionName
2019-07-04 13:18:19 +02:00
Adolfo Gómez García
59f0b1c572 upgrade frontend to angular 8 2019-06-29 18:11:41 +02:00
Adolfo Gómez García
bae405d082 fixes 2019-06-29 17:24:53 +02:00
Adolfo Gómez García
e76695e583 fixed versions 2019-06-17 12:01:35 +02:00
Adolfo Gómez García
1e74c55d2b more fixes 2019-06-14 17:44:20 +02:00
Adolfo Gómez García
70ec9ab3ea more typing checking 2019-06-14 14:08:36 +02:00
Adolfo Gómez García
a5929a0af3 adding type checking to better control source 2019-06-13 08:28:54 +02:00
Adolfo Gómez García
f343368da9 Merge remote-tracking branch 'origin/v2.2' 2019-06-11 05:35:27 +02:00
Adolfo Gómez García
7dd57cd778 Merge branch 'master' of github.com:dkmstr/openuds 2019-06-11 05:33:33 +02:00
Adolfo Gómez García
6309047a34 fixes for python 3.x 2019-06-11 05:33:25 +02:00
Adolfo Gómez
1b3ff5661b
Merge pull request #41 from Jarli01/patch-1
Chore: Verbiage updates - translation corrections, typos and capitali…
2019-06-10 23:41:35 +02:00
Adolfo Gómez
8f0da29a99
Merge pull request #42 from Jarli01/patch-2
Chore: Typos, capitalization and thought clarification
2019-06-10 23:40:48 +02:00
Dustin B
bdc92052ae
Chore: Typos, capitalization and thought clarification
Updated the translations a bit as some of this didn't really work in English, fixed a few typos and capitalization issues.
2019-06-10 17:07:09 -04:00
Dustin B
1df42462fd
Chore: Verbiage updates - translation corrections, typos and capitalization
Fixed a few types, attempted to clarify your thought at the time and fixed some capitalization issues.
2019-06-10 17:03:38 -04:00
Adolfo Gómez García
0b97c15ca8 fixes for python 3.x 2019-06-10 14:43:03 +02:00
Adolfo Gómez García
feeeaed1a9 fixes for python 3.x 2019-06-10 11:23:38 +02:00
Adolfo Gómez García
ccdedb9126 fixes for python 3.x 2019-06-10 08:40:37 +02:00
Adolfo Gómez García
64ddba25f4 continues fixes for python 3.x and removal of 2.7 stuff 2019-06-06 10:41:26 +02:00
Adolfo Gómez García
36794ec5cf fixes for python 3.x and removal of 2.7 stuff 2019-06-06 08:38:11 +02:00
Adolfo Gómez García
89515dce33 more 3.7 fixes 2019-06-05 09:29:31 +02:00
Adolfo Gómez García
613f4efd31 fixes for python3 & type hinting 2019-06-05 08:14:45 +02:00
Adolfo Gómez García
2baac2f532 Added "extra module" for getting extra groups on ldap. Fix passing "self" 2019-05-29 05:16:27 +02:00
Adolfo Gómez García
37ae7af508 Added "extra module" for getting extra groups on ldap 2019-05-29 05:15:44 +02:00
Adolfo Gómez García
d068bcef60 fixed os_state on backend 2019-05-21 15:36:35 +02:00
Adolfo Gómez García
7540ca977f Fixed passwd 2019-05-20 10:57:49 +02:00
Adolfo Gómez García
a3bbd00531 Merge branch 'master' of github.com:dkmstr/openuds 2019-05-16 08:36:23 +02:00
Adolfo Gómez García
6ab3bad34b Some cleanups on unused stuff 2019-05-16 08:35:41 +02:00
Adolfo Gómez
bb6f21248b
Update TODO.txt 2019-05-14 14:16:03 +02:00
Adolfo Gómez
39a75bfcc0
Update README.md 2019-05-14 14:15:33 +02:00
Adolfo Gómez García
20ff8cafdc Restrained mode now do not allows new machines to be created even on
user demand
2019-05-14 11:54:06 +02:00
Adolfo Gómez García
41b849c1f5 Merge remote-tracking branch 'origin/v2.2' 2019-05-14 08:34:32 +02:00
Adolfo Gómez García
4c001b044f security for PAM 2019-05-14 08:33:58 +02:00
Adolfo Gómez García
a9b4798155 added security extra to pam 2019-05-14 08:31:08 +02:00
Adolfo Gómez García
7c92d8ad5c restricted PAM to only 1 "id" on params 2019-05-14 08:22:11 +02:00
Adolfo Gómez García
8a7ceb926d imported pam_http fix 2019-05-13 17:19:44 +02:00
Adolfo Gómez García
70141ae972 fixing up pam_http 2019-05-13 17:11:12 +02:00
Adolfo Gómez García
20ead2954b fixing up pam_http 2019-05-13 16:56:19 +02:00
Adolfo Gómez García
8331c886de Set "tbr" to none always. It's a non useful parameter 2019-05-10 10:10:36 +02:00
Adolfo Gómez García
14da66291e Merge remote-tracking branch 'origin/v2.2' 2019-05-10 10:01:47 +02:00
Adolfo Gómez García
3415cb8604 fixing up things 2019-05-10 10:01:34 +02:00
Adolfo Gómez García
66c217a988 Backport of random fixes 2019-05-10 09:56:07 +02:00
Adolfo Gómez García
d6935d0210 fixed cache 2 -> 1 2019-05-08 11:34:55 +02:00
Adolfo Gómez García
a1866fb56c added RDP keyboards 2019-05-07 09:31:07 +02:00
Adolfo Gómez García
c47501e3e6 Fixed guacamole audio & video 2019-05-06 21:38:32 +02:00
Adolfo Gómez
a18f85b4f1
Merge pull request #39 from glyptodon/correct-av-mimetypes
Use Guacamole.AudioPlayer and Guacamole.VideoPlayer to query the audio/video mimetypes supported by the Apache Guacamole client.
2019-05-06 21:33:20 +02:00
Michael Jumper
9a816edcc0 Use Guacamole.AudioPlayer and Guacamole.VideoPlayer to query the audio/video mimetypes supported by the Apache Guacamole client. 2019-05-06 12:10:47 -07:00
Adolfo Gómez García
3568f43fc8 added "launcher" for ticketing auth 2019-05-06 10:49:46 +02:00
Adolfo Gómez García
3b05a06336 fixed missing include 2019-05-03 11:58:01 +02:00
Adolfo Gómez García
dfa6fe04cc Updated request middelware to work with nginx 2019-04-30 12:44:00 +02:00
Adolfo Gómez García
111660b396 Improves security of random strings 2019-04-29 13:59:52 +02:00
Adolfo Gómez García
c517e746da Fixed NX Transport for new mechanics 2019-04-29 08:28:51 +02:00
Adolfo Gómez García
68f63a02f3 updated transport signatures 2019-04-24 09:35:18 +02:00
Adolfo Gómez García
4dc4c27925 fixed RDP transport for 3.0 2019-04-24 09:31:58 +02:00
Adolfo Gómez García
363d247c8b Fixed tunnel rdp for 3.0 2019-04-23 15:11:41 +02:00
Adolfo Gómez García
842595be95 clientfix 2019-04-23 14:39:06 +02:00
Adolfo Gómez García
b248a284bb clientfix 2019-04-23 14:07:43 +02:00
Adolfo Gómez García
31d2775f4d clientfix 2019-04-23 14:05:09 +02:00
Adolfo Gómez García
bb84b64eb2 clientfix 2019-04-23 14:01:36 +02:00
Adolfo Gómez García
a7116b9e2e fixes 2019-04-23 13:44:37 +02:00
Adolfo Gómez García
2b9d625b5d testing client 2019-04-23 08:00:37 +02:00
Adolfo Gómez García
d16cc757af testing client 2019-04-23 07:45:23 +02:00
Adolfo Gómez García
1a43ce16e4 testing client 2019-04-23 07:43:55 +02:00
Adolfo Gómez García
deff947b03 Several
upgraded uds client projects
fixed admin js
rdp transport work
2019-04-23 07:28:29 +02:00
Adolfo Gómez García
436fe43098 fixes from 2.2 2019-04-15 11:51:11 +02:00
Adolfo Gómez García
7a2bd7dcf5 actor fix 2019-04-15 11:49:12 +02:00
Adolfo Gómez García
3caa49705e * update of cryptomanager Xor
* Fix config command
2019-04-10 08:17:52 +02:00
Adolfo Gómez García
6ab3fd5559 fixes for translations 2019-04-04 11:30:34 +02:00
Adolfo Gómez García
d6d6a4b44b fix 2019-04-04 11:11:10 +02:00
Adolfo Gómez García
b1a8d9b84c fixed translations 2019-04-04 11:09:57 +02:00
Adolfo Gómez García
272588f306 upgraded frontend 2019-04-04 10:32:35 +02:00
Adolfo Gómez García
87e7f1ca3c fixed double removal check 2019-04-03 21:50:00 +02:00
Adolfo Gómez García
d655b0f41a Added controls on how UDS works with domain controllers for machin/group accounts 2019-04-03 08:16:55 +02:00
Adolfo Gómez García
5422dcf78d Fixed 404 & 500 templates for new
* Try ssl before non ssl on domain os manager connections
2019-04-02 23:23:12 +02:00
Adolfo Gómez García
09eb130b11 fix commnet 2019-04-02 10:43:43 +02:00
Adolfo Gómez García
952322556c removed nonused tool 2019-04-02 07:49:27 +02:00
Adolfo Gómez García
194e232252 removed nonused tool 2019-04-02 07:48:55 +02:00
Adolfo Gómez García
9fee4adcc2 Merge remote-tracking branch 'origin/v2.2' 2019-03-28 12:22:15 +01:00
Adolfo Gómez García
ea11a25c52 Final fix 2019-03-28 12:17:27 +01:00
Adolfo Gómez García
f79f659711 Added so if ipc is closed, and logout is sent (if already logged in ofc) 2019-03-28 11:58:28 +01:00
Adolfo Gómez García
9130a12e52 Merge remote-tracking branch 'origin/v2.2' 2019-03-22 10:36:52 +01:00
Adolfo Gómez García
fddc69e0ea Fixed UDS actor postins 2019-03-22 10:36:35 +01:00
Adolfo Gómez García
30c445bef0 fixes 2019-03-22 10:36:07 +01:00
Adolfo Gómez García
47d234e1c5 small fixex 2019-03-15 13:20:48 +01:00
Adolfo Gómez García
83290f0a29 Merge remote-tracking branch 'origin/v2.2' 2019-03-08 10:34:19 +01:00
Adolfo Gómez García
b795260e4d Fixed access from MAC 2019-03-06 10:08:04 +01:00
Adolfo Gómez García
ea6d68ee93 fixes 2019-03-01 12:57:40 +01:00
Adolfo Gómez García
3fdb089b48 Re-added simple ldap 2019-02-27 11:13:33 +01:00
Adolfo Gómez García
ebf794cb67 Merge remote-tracking branch 'origin/v2.2' 2019-02-27 07:37:16 +01:00
Adolfo Gómez García
45bf24ecdd added check user on vm access, to avoid concurrency problems 2019-02-27 07:37:13 +01:00
Adolfo Gómez García
66464df043 small fix. Now checks the ownership of a machine before letting an user access it 2019-02-26 16:50:12 +01:00
Adolfo Gómez García
5d4e05309a re-added simple ldap 2019-02-26 12:54:16 +01:00
Adolfo Gómez García
a288dd4df3 Removed optimizes (nonsense with innodb) 2019-02-26 12:27:41 +01:00
Adolfo Gómez García
6156f2c6f6 Fix 2019-02-25 10:08:37 +01:00
Adolfo Gómez García
27a29d92e0 Several improvements
* Improved database saving model
* Code cleanup improvement :)
2019-02-24 12:15:12 +01:00
Adolfo Gómez García
6a7d10bf1d Merge remote-tracking branch 'origin/v2.2' 2019-02-24 11:49:14 +01:00
Adolfo Gómez García
6ec73b336d fixes 2019-02-24 11:48:38 +01:00
Adolfo Gómez García
b1f3407299 Fixes 2019-02-24 11:47:50 +01:00
Adolfo Gómez García
2b653b8b05 upgrades 2019-02-24 11:30:44 +01:00
Adolfo Gómez García
cd7beac87e Fixes 2019-02-24 11:24:54 +01:00
Adolfo Gómez García
6d50f99ad6 pydev 2019-02-24 11:01:16 +01:00
Adolfo Gómez García
f4f297a1e4 Merge remote-tracking branch 'origin/v2.2' 2019-02-24 11:00:43 +01:00
Adolfo Gómez García
dbee05d1bc More fixes 2019-02-24 10:59:47 +01:00
Adolfo Gómez García
cbfa9516bf Merge remote-tracking branch 'origin/v2.2' 2019-02-24 10:52:52 +01:00
Adolfo Gómez García
7910327a8a Removed non used deployed service method "assignTouser" 2019-02-24 10:51:12 +01:00
Adolfo Gómez García
9f01f2c368 Fix 2019-02-24 10:40:02 +01:00
Adolfo Gómez García
9e26580af5 Fixed several concurrency issues (very rare, btw, but possible :) ) 2019-02-24 10:16:50 +01:00
Adolfo Gómez García
f5abeb0a94 merged 2019-02-22 16:46:30 +01:00
Adolfo Gómez García
689b20ce2f A few more fixes for concurrency 2019-02-22 16:29:22 +01:00
Adolfo Gómez García
bac0b9755e Improved concurrency check on cache assignation 2019-02-22 15:37:42 +01:00
Adolfo Gómez García
33d2ca4ece Improved concurrency 2019-02-22 15:23:40 +01:00
Adolfo Gómez García
4e0c3b0c5d Updates 2019-02-21 14:52:44 +01:00
Adolfo Gómez García
d4aa2cc8e8 Upgraded web components 2019-02-20 07:45:29 +01:00
Adolfo Gómez García
c7c1103ed1 Fixed installed apps 2019-02-19 12:10:47 +01:00
Adolfo Gómez García
083b1f21fd Fixed Xen to work correctly with 3.7 2019-02-14 11:36:50 +01:00
Adolfo Gómez García
d7ac1f590a Updated to compatibility to python 3.7 (sync is a reserveed word) 2019-02-13 17:07:30 +01:00
Adolfo Gómez García
d523ae6001 upgrading environment 2019-02-12 11:26:04 +01:00
Adolfo Gómez García
581b13e70e Added new system info 2019-02-12 07:51:11 +01:00
Adolfo Gómez García
6889098ec8 Fixed pkexec
Removed "optimizeTable" for stats (nonsense...)
"
2019-02-11 11:13:12 +01:00
Adolfo Gómez García
683728fbc1 Locales & admin fix 2019-02-08 11:03:33 +01:00
Adolfo Gómez García
30ed88aefa Updating logic to remove table locking for some operations 2019-02-08 10:03:30 +01:00
Adolfo Gómez García
7b30f58750 Fixed services marshallers/unmarshallers for python 3.5 (correct usage
of binary data)
2019-02-07 11:20:44 +01:00
Adolfo Gómez García
0155f6c7fd * Added assigned services to meta pools (admin)
* Fixed serialization of oVirt
* Advanced a lot on meta pools (maybe they are yet usable?)
* minor fixex
2019-02-06 13:31:30 +01:00
Adolfo Gómez García
4509400605 * Advancing on metapools
* Removed non used old code
2019-02-05 13:52:51 +01:00
Adolfo Gómez García
e88256a892 Simplified code. Removed "assignedUserService" logic because pools will
allow only one userService per user, so everything can be located using
"pool"
2019-02-05 07:25:06 +01:00
Adolfo Gómez García
64faeec13c Updated translations (machine translation right now)
Fixed urls to new format
2019-02-04 10:00:15 +01:00
Adolfo Gómez García
b5352596e8 Updated grans method 2019-02-04 09:44:01 +01:00
Adolfo Gómez García
c1e8f6afe1 Updated to new admin interface 2019-02-04 09:15:46 +01:00
Adolfo Gómez García
2641fbbfcc fix 2019-01-30 09:43:01 +01:00
Adolfo Gómez García
923dbcc45b Removed old admin interface and added the new one based on Angular & Material 2019-01-30 06:40:36 +01:00
Adolfo Gómez García
0d4f2122c6 fixes on configuration administration section 2019-01-29 13:39:03 +01:00
Adolfo Gómez García
b55c9756e8 Added permissions for accounts & metapools 2019-01-24 07:27:15 +01:00
Adolfo Gómez García
cc1d022f40 fixed about 2019-01-22 09:19:59 +01:00
Adolfo Gómez García
d501d6037f Fix typo 2019-01-21 11:52:27 +01:00
Adolfo Gómez García
5353573ca3 Added "webLogoutHook" so we can, on authenticators, do some corrections
to response from authenticators
2019-01-21 11:48:10 +01:00
Adolfo Gómez García
26af865483 Upgraded javascript 2019-01-21 07:29:36 +01:00
Adolfo Gómez García
2bd4f3d8e5 Merge remote-tracking branch 'origin/v2.2'
# Conflicts:
#	server/src/uds/REST/methods/op_calendars.py
2019-01-18 08:34:47 +01:00
Adolfo Gómez García
efb3965d76 Fixed calendar action can create "empty" actions 2019-01-17 18:20:51 +01:00
Adolfo Gómez García
1a0c27f23c Fixes for new administration interface 2019-01-16 10:04:21 +01:00
Adolfo Gómez García
1b0f406de4 fixes for python 3.5 2019-01-14 10:34:51 +01:00
Adolfo Gómez García
21a5f4de09 Merge remote-tracking branch 'origin/v2.2' 2019-01-11 05:58:36 +01:00
Adolfo Gómez García
4778f5f931 fix translations 2019-01-11 05:57:51 +01:00
Adolfo Gómez García
29d0c242f7 Merge remote-tracking branch 'origin/v2.2' 2019-01-10 12:41:32 +01:00
Adolfo Gómez García
78656ed4a2 fixed 2019-01-10 12:40:23 +01:00
Adolfo Gómez García
c9a08cf1a1 Merge remote-tracking branch 'origin/v2.2' 2019-01-10 11:10:11 +01:00
Adolfo Gómez García
278bcb87de Fixed translations 2019-01-10 11:06:38 +01:00
Adolfo Gómez García
690fd7c9cc Added datepicker for chinese 2019-01-09 20:16:25 +01:00
Adolfo Gómez García
7b51bb7985 Added chinese lang to translations on sample file 2019-01-09 20:10:16 +01:00
Adolfo Gómez García
6f81892324 renamed chinese to zh_hans (traditional chinese) 2019-01-09 20:03:41 +01:00
Adolfo Gómez García
f603bd6c8f Merge remote-tracking branch 'origin/v2.2' 2019-01-09 13:53:28 +01:00
Adolfo Gómez García
a496fd97f1 added autotrasnlations for chinesse 2019-01-09 13:53:07 +01:00
Adolfo Gómez García
77bf401bd5 added eu autotranslations 2019-01-09 13:31:29 +01:00
Adolfo Gómez García
812e863e7f translations 2019-01-09 12:29:39 +01:00
Adolfo Gómez García
cd2d529524 Fixed IOS crash 2019-01-08 10:04:37 +01:00
Adolfo Gómez
445bbc6ee6
Merge pull request #37 from m-khan-glyptodon/Safari-Crash-Fix
IOS Safari crash fix
2019-01-08 09:54:33 +01:00
m-khan-glyptodon
cc9cf15c69 Added further documentation to max width and max height functions 2019-01-07 16:45:55 -08:00
m-khan-glyptodon
42ded5c382 Added documentation for the max height and max width functions 2019-01-07 16:45:55 -08:00
m-khan-glyptodon
8df513fbd3 Added scroll height and scroll width cap to fix ios safari crash 2019-01-07 15:08:42 -08:00
Adolfo Gómez García
164654143d Merge remote-tracking branch 'origin/v2.2' 2018-12-21 13:55:32 +01:00
Adolfo Gómez García
d9ad218e41 Merge remote-tracking branch 'origin/v2.2' 2018-12-21 13:55:20 +01:00
Adolfo Gómez García
8f76363b27 realname fixed on creation 2018-12-21 13:53:52 +01:00
Adolfo Gómez García
6a05403464 Added realname 2018-12-21 10:52:42 +01:00
Adolfo Gómez García
ac0eefc683 Merge remote-tracking branch 'origin/v2.2' 2018-12-20 16:46:07 +01:00
Adolfo Gómez García
43398cd125 Fixed user edition (user assignation) 2018-12-20 16:38:00 +01:00
Adolfo Gómez García
1da058cec6 Upgrading to new admin interface 2018-12-19 12:43:38 +01:00
Adolfo Gómez García
c5d1702758 Fixes for python 3 2018-12-18 10:52:03 +01:00
Adolfo Gómez García
fb818f06a5 fixes 2018-12-10 11:42:23 +01:00
Adolfo Gómez García
eae79364b8 Merge remote-tracking branch 'origin/v2.2' 2018-12-03 10:49:21 +01:00
Adolfo Gómez García
49564147a3 fixed on user services rest 2018-12-03 10:49:15 +01:00
Adolfo Gómez García
481eca7d16 Removed unused imports 2018-12-03 10:46:05 +01:00
Adolfo Gómez García
e382bfa19b Removed transaction from calendar actions execution. Not needed in fact. 2018-12-03 10:45:31 +01:00
Adolfo Gómez García
9094547f22 Testing windows 8 idle 2018-12-03 08:27:02 +01:00
Adolfo Gómez García
c2bd664545 translations 2018-11-29 10:18:59 +01:00
Adolfo Gómez García
04b68401cf minor fixes 2018-11-28 07:12:35 +01:00
Adolfo Gómez García
6300da4697 Merge remote-tracking branch 'origin/v2.2' 2018-11-27 11:59:40 +01:00
Adolfo Gómez García
8b4485d533 translations 2018-11-27 11:57:22 +01:00
Adolfo Gómez García
94501b1106 Merge remote-tracking branch 'origin/v2.2' 2018-11-27 11:18:24 +01:00
Adolfo Gómez García
696ad047a3 Merge remote-tracking branch 'origin/v2.2' 2018-11-27 11:18:14 +01:00
Adolfo Gómez García
682ce422b6 Translations 2018-11-27 11:17:49 +01:00
Adolfo Gómez García
906824cafc Fixups 2018-11-26 13:44:48 +01:00
Adolfo Gómez García
6f6633b819 Merge remote-tracking branch 'origin/v2.2' 2018-11-26 11:44:39 +01:00
Adolfo Gómez García
eb6065b203 Fixed so now services with no transports are not provided to template 2018-11-26 11:44:07 +01:00
Adolfo Gómez García
9451889bb3 Removed execution of "reg", using "winreg" instead (_winreg on 2.7) 2018-11-23 11:39:45 +01:00
Adolfo Gómez García
8120ae5c92 Final fix for no check redirections 2018-11-23 11:09:06 +01:00
Adolfo Gómez García
d1bb018dff Added "no warning for redirections' to remote connection 2018-11-23 11:07:58 +01:00
Adolfo Gómez García
694d60cb88 Some minor fixes 2018-11-23 10:55:00 +01:00
Adolfo Gómez García
a2a43fd041 Merge remote-tracking branch 'origin/v2.2' 2018-11-22 12:10:28 +01:00
Adolfo Gómez García
43cb02b177 Now on access error, reloads page 2018-11-22 12:09:58 +01:00
Adolfo Gómez García
01cc3eb147 Merge remote-tracking branch 'origin/v2.2' 2018-11-20 11:04:14 +01:00
Adolfo Gómez García
3e3ea59261 Updated translations 2018-11-20 11:02:58 +01:00
Adolfo Gómez García
462e53efea Merge remote-tracking branch 'origin/v2.2' 2018-11-20 11:00:42 +01:00
Adolfo Gómez García
589b12f490 new modern index && typo fix 2018-11-20 10:51:34 +01:00
Adolfo Gómez García
688a91325c Added servicepool add/remove from groups/transports 2018-11-20 10:50:18 +01:00
Adolfo Gómez García
3c905e8bc4 added spinner on app loading 2018-11-14 06:57:10 +01:00
Adolfo Gómez García
97e8c42b2f Fix on None notifyComms 2018-11-13 20:12:04 +01:00
Adolfo Gómez García
e814c47a24 Another fix for actor 2018-11-13 19:46:15 +01:00
Adolfo Gómez García
9fb19c6b9d Fix actor typ 2018-11-13 19:28:03 +01:00
Adolfo Gómez García
4375ee6d50 Fixups for actor 2018-11-13 18:38:35 +01:00
Adolfo Gómez García
de45c24bbc small fixes for updating 2018-11-13 13:18:19 +01:00
Adolfo Gómez García
ff2f508240 Fix on windows actor to check if lastInputInfo is valid or not... 2018-11-13 10:52:11 +01:00
Adolfo Gómez
f2ff09a882
Removed finished tasks 2018-11-12 16:27:58 +01:00
Adolfo Gómez García
68a58b7c73 removed /compression from freerdp (used -compression now) 2018-11-08 10:41:08 +01:00
Adolfo Gómez García
4441286c89 removed /compression from freerdp (used -compression now) 2018-11-08 10:40:14 +01:00
Adolfo Gómez García
0d97831b71 removed fontawesome not used anymore 2018-11-07 12:14:16 +01:00
Adolfo Gómez García
db7d3ef0e3 Updated gui to angular 7 2018-11-07 12:12:39 +01:00
Adolfo Gómez García
d0c9ca6234 Fixes for new admin gui 2018-11-06 10:08:09 +01:00
Adolfo Gómez García
857be90128 Merge remote-tracking branch 'origin/v2.2' 2018-11-05 11:28:44 +01:00
Adolfo Gómez García
c9410fbbac fixed removing user on case of error 2018-11-05 11:28:19 +01:00
Adolfo Gómez García
5a26063233 fixed dependency 2018-10-29 23:54:05 +01:00
Adolfo Gómez García
a68152fee3 Merge remote-tracking branch 'origin/v2.2' 2018-10-26 13:22:28 +02:00
Adolfo Gómez García
43157d722f Fixed Calendar Actions L2 2018-10-26 13:20:16 +02:00
Adolfo Gómez García
5bade926b1 Merge remote-tracking branch 'origin/v2.2' 2018-10-24 09:17:09 +02:00
Adolfo Gómez García
861258532d Python3 compat 2018-10-24 08:35:08 +02:00
Adolfo Gómez García
869f1d7031 Merge remote-tracking branch 'origin/v2.2' 2018-10-23 14:13:55 +02:00
Adolfo Gómez García
ba45e4c6d6 Fixed bug on case of exception on service saving 2018-10-23 14:13:36 +02:00
Adolfo Gómez García
ff3d27ad42 Fixed typo 2018-10-23 11:35:16 +02:00
Adolfo Gómez García
8088efa225 Some adjustements to OpenStack connector 2018-10-23 09:28:05 +02:00
Adolfo Gómez García
2b6a0ee449 imports 2018-10-22 12:30:06 +02:00
Adolfo Gómez García
300f2f3333 Fixed OpenStack for newer versions. Now has 2 providers for "legacy" and for "new" versions 2018-10-22 12:28:26 +02:00
Adolfo Gómez García
259bfc31c4 Merge remote-tracking branch 'origin/v2.2' 2018-10-22 10:56:35 +02:00
Adolfo Gómez García
c1e2e12dd9 Fixed "meta group" pools on information 2018-10-22 10:54:24 +02:00
Adolfo Gómez García
dc0d96c83a removed user template 2018-10-17 10:34:22 +02:00
Adolfo Gómez García
579b86c527 removed user template 2018-10-17 10:33:24 +02:00
Adolfo Gómez García
4bfcac0307 Merge remote-tracking branch 'origin/v2.2' 2018-10-15 10:56:46 +02:00
Adolfo Gómez García
265d2d8702 translations 2018-10-15 10:55:48 +02:00
Adolfo Gómez García
95e99670ee Changed names on openstack for older releases 2018-10-15 10:47:23 +02:00
Adolfo Gómez García
e33a6e4712 updated requirements 2018-10-11 05:43:56 +02:00
Adolfo Gómez García
73be005f6a changed error message on case of change user password error 2018-10-05 12:41:23 +02:00
Adolfo Gómez García
4c30e9d45e actor fix for python3/ubuntu16 (due to requests/json) 2018-10-04 13:08:26 +02:00
Adolfo Gómez García
68fbaf7ae0 removev python3-prctl as dependency and marqued as "recommended" 2018-10-04 12:54:49 +02:00
Adolfo Gómez García
78731b2e51 fixed requirements.txt to latest django 2018-10-04 08:29:01 +02:00
Adolfo Gómez García
b2cda46cc0 Merge remote-tracking branch 'origin/v2.2' 2018-10-03 13:45:22 +02:00
Adolfo Gómez García
cf7e8f19e2 updated translations 2018-10-03 13:45:05 +02:00
Adolfo Gómez García
879457db4e Merge remote-tracking branch 'origin/v2.2' 2018-10-03 13:44:49 +02:00
Adolfo Gómez García
256a7f2584 Now RDP defaults credssp to "TRUE" 2018-10-03 13:43:58 +02:00
Adolfo Gómez García
22b3aa848e Finished metepools admin part 2018-10-03 11:09:24 +02:00
Adolfo Gómez García
7d5ce53317 Finished metepools admin part 2018-10-03 11:08:24 +02:00
Adolfo Gómez García
f995903056 Merge remote-tracking branch 'origin/v2.2' 2018-10-02 15:26:51 +02:00
Adolfo Gómez García
7f1a776f69 Upgraded debian actor to python 3 2018-10-02 15:24:34 +02:00
Adolfo Gómez García
0169c64354 fixes 2018-10-02 13:12:34 +02:00
Adolfo Gómez García
d5be31f1d9 * Fixed version
* Moved actors to python3
2018-10-02 13:08:13 +02:00
Adolfo Gómez García
8968ada03b Adding metapools to UDS 2018-10-01 14:08:13 +02:00
Adolfo Gómez García
816dde8aca Preparing meta pools 2018-09-28 12:09:17 +02:00
Adolfo Gómez García
a47df49ca8 Changed order so now on mac CorD is tried first 2018-09-28 10:03:04 +02:00
Adolfo Gómez García
2e0972b71e Added loging on action over service pool 2018-09-24 18:57:11 +02:00
Adolfo Gómez García
b4e672bb43 Merge remote-tracking branch 'origin/v2.2' 2018-09-24 15:54:47 +02:00
Adolfo Gómez García
ee9a062201 added log in case of max services reached on service pool 2018-09-24 15:54:08 +02:00
Adolfo Gómez García
74ebf0dd30 Merge remote-tracking branch 'origin/v2.2' 2018-09-24 11:30:34 +02:00
Adolfo Gómez García
8384a43699 Updated trans, need revision already 2018-09-24 11:24:05 +02:00
Adolfo Gómez García
8c882852db added assigned service edition. Now we can change the onwership of a machine 2018-09-24 11:12:36 +02:00
Adolfo Gómez García
cbdd61cfa8 Small fixes 2018-09-21 11:07:39 +02:00
Adolfo Gómez García
e642f4df18 Updated about 2018-09-21 07:56:36 +02:00
Adolfo Gómez García
b8eda0cbc4 cleaning stuff for new interface 2018-09-20 14:12:37 +02:00
Adolfo Gómez García
ce3c1e3861 Merge remote-tracking branch 'origin/v2.2' 2018-09-19 07:28:16 +02:00
Adolfo Gómez García
8c85639dfe Fixed so UDS now works correctly with versiones newer that OCATA 2018-09-18 23:40:16 +02:00
Adolfo Gómez García
5c27b521af removing unused clusters part 2018-09-17 19:04:19 +02:00
Adolfo Gómez García
33a02ee8f3 cleaning for new angular interface 2018-09-14 05:50:26 +02:00
Adolfo Gómez García
44feef783b Merge remote-tracking branch 'origin/v2.2' 2018-09-13 10:21:29 +02:00
Adolfo Gómez García
5fbdb6834d fixed so concurrent creation storm is better handled now 2018-09-13 10:17:28 +02:00
Adolfo Gómez García
39877dacd9 fixes 2018-09-12 13:35:30 +02:00
Adolfo Gómez García
c8b1d0cb22 Mograting to modern user gui 2018-09-12 09:41:53 +02:00
Adolfo Gómez García
442a2cc72a Merge remote-tracking branch 'origin/v2.2' 2018-09-10 11:11:47 +02:00
Adolfo Gómez García
6bcf8a832f updated translations 2018-09-10 11:11:27 +02:00
Adolfo Gómez García
f0903ee505 fixed unique id 2018-09-10 11:02:25 +02:00
Adolfo Gómez García
9ffced6365 fixing up things 2018-09-10 10:40:34 +02:00
Adolfo Gómez García
4561e6c0fe Merge remote-tracking branch 'origin/v2.2' 2018-09-07 04:11:49 +02:00
Adolfo Gómez García
aa4bbcbeb3 Removed simple ldap from authenticators list. Its not used and its use
is very limited
2018-09-07 04:11:09 +02:00
Adolfo Gómez García
89f77dbbc6 Merge remote-tracking branch 'origin/v2.2' 2018-09-06 13:48:16 +02:00
Adolfo Gómez García
5863962e8a Added "display connection bar" option to transport 2018-09-06 13:45:21 +02:00
Adolfo Gómez García
afe5f0c965 fixed user groups assignation 2018-09-04 12:49:56 +02:00
Adolfo Gómez García
82c362b2b6 Fixed LDAP regex user search 2018-09-04 12:45:46 +02:00
Adolfo Gómez García
58886b00fa towards v3 2018-09-03 10:13:27 +02:00
Adolfo Gómez García
966d61fda1 Working towards new gui 2018-08-31 09:15:07 +02:00
Adolfo Gómez García
7a06279601 advancing on modern gui 2018-08-30 09:29:32 +02:00
Adolfo Gómez García
cb0150391a Added compat between new-future templates and existing ones 2018-08-22 05:52:54 +02:00
Adolfo Gómez García
121f5a6fa6 Merge remote-tracking branch 'origin/v2.2' 2018-08-20 13:48:54 +02:00
Adolfo Gómez García
c2a95711da Fixed trying to remove VM when LCM_STATE was "boot" or prior for
OpenNebula
2018-08-20 13:38:54 +02:00
Adolfo Gómez García
bc04f9c30f fixed password field
Updated requirements to django 2.1
2018-08-19 23:32:44 +02:00
Adolfo Gómez García
eb3188c6c1 Changed AES to CBC 2018-08-02 11:13:37 +02:00
Adolfo Gómez García
34b8902c71 Added AEScrypt y AESdecrypt 2018-08-02 01:58:49 +02:00
Adolfo Gómez García
3f76f6c1ab Some refactoring to easy indentify algorithm 2018-08-02 01:00:24 +02:00
Adolfo Gómez García
34028b99e7 Fixes from merge 2018-07-31 23:59:59 +02:00
Adolfo Gómez García
8867ef7036 Merge remote-tracking branch 'origin/v2.2' 2018-07-31 23:54:10 +02:00
Adolfo Gómez García
6cee32d680 fix lambda 2018-07-31 23:53:58 +02:00
Adolfo Gómez García
cce00adc51 Fixed string for "access denied" on logon 2018-07-26 12:52:08 +02:00
Adolfo Gómez García
e37b929adc merged from 2.2 2018-07-23 09:54:35 +02:00
Adolfo Gómez García
4b75be2f02 fully fixed password issue on HTML5 2018-07-19 21:14:08 +02:00
Adolfo Gómez García
34046c8a7e removed unsecure logging on exception on code 2018-07-19 11:22:04 +02:00
Adolfo Gómez García
f177b98c78 Fixed tickets auth 2018-07-18 23:11:55 +02:00
Adolfo Gómez García
4777b7e8f9 Fixes for passwords 2018-07-18 22:44:23 +02:00
Adolfo Gómez García
fbbdc529fe Fixes & DEBUG log fix 2018-07-17 21:16:17 +02:00
Adolfo Gómez García
e9f61b6a94 fixed single quote on passwords 2018-07-17 12:03:03 +02:00
Adolfo Gómez García
367a1779f5 fixed requirements 2018-07-13 07:02:48 +02:00
Adolfo Gómez García
99f834c41f fixed requirements 2018-07-13 06:54:53 +02:00
Adolfo Gómez García
2b868a71ba fixed paramiko dep 2018-07-13 06:54:21 +02:00
Adolfo Gómez García
1a0a1d17dc Merge remote-tracking branch 'origin/v2.2' 2018-07-02 14:10:56 +02:00
Adolfo Gómez García
f333f2f71f Fixed "keep on new publication" 2018-07-02 13:28:28 +02:00
Adolfo Gómez García
6c2a7ff6e6 Added basic metadata info to openstack server 2018-06-29 14:15:06 +02:00
Adolfo Gómez García
1936a02cf7 * Fixed get name from authCallback
* added convenient "comments" to some parts
* Fixed login, to cicly session only when logged in
2018-06-27 11:12:08 +02:00
Adolfo Gómez García
d8eb440b34 Advanced a lot on azure ad integration 2018-06-26 17:20:05 +02:00
Adolfo Gómez García
4570d79645 Added "hint" return type for managers helpers 2018-06-25 09:35:20 +02:00
Adolfo Gómez García
6936f6994d Updated random uuid method 2018-06-25 09:32:20 +02:00
Adolfo Gómez García
d60f1d82db Fixed datetime.now 2018-06-21 12:55:17 +02:00
Adolfo Gómez García
c72a6a32dc Fixed cache geting local datetime instead of 2018-06-21 12:47:20 +02:00
Adolfo Gómez García
757151c71a Merge remote-tracking branch 'origin/v2.2' 2018-06-12 13:28:52 +02:00
Adolfo Gómez García
7bdb3d77ba Fixed LogManager so now "cuts" correctly before writing log text
Removed debug that was "anoying
2018-06-12 13:25:54 +02:00
Adolfo Gómez García
f211f3482f small fixes & added open link on new window instead of current 2018-06-11 13:33:50 +02:00
Adolfo Gómez García
e52cec2ce7 Merge remote-tracking branch 'origin/v2.2' 2018-06-11 01:33:15 +02:00
Adolfo Gómez García
ff226dd8e5 included decorator 2018-06-11 01:30:32 +02:00
Adolfo Gómez García
574de727d3 Merge remote-tracking branch 'origin/v2.2' 2018-06-08 01:45:23 +02:00
Adolfo Gómez García
b0268346e5 Created Azure publication 2018-06-08 01:36:35 +02:00
Adolfo Gómez García
db87dd101b Merge remote-tracking branch 'origin/v2.2' 2018-06-06 15:30:14 +02:00
Adolfo Gómez García
9906b80702 Added russian 2018-06-06 15:29:52 +02:00
Adolfo Gómez García
be4a4a5b09 Fixed non asceii characters on user home for windows 2018-06-05 14:06:32 +02:00
Adolfo Gómez García
070088909e Fixed "idle checker" logout 2018-05-31 12:20:14 +02:00
Adolfo Gómez García
2066f4050c Merge remote-tracking branch 'origin/v2.2' 2018-05-28 09:55:14 +02:00
Adolfo Gómez García
9cbb297330 advances 2018-05-28 09:55:01 +02:00
Adolfo Gómez García
e9d23cf170 * Added "HIDDEN_FIELD" and "READ_ONLY_FIELD" to Configuration
* Added a "default" UDS Server (cluster) ID, so we can use it for a lot
of things :)
2018-05-28 09:54:23 +02:00
Adolfo Gómez García
9f98fc6f6d Merge remote-tracking branch 'origin/v2.2' 2018-05-18 12:03:50 +02:00
Adolfo Gómez García
b5ebd1f1fb Added RDP option to allow only "new local drives" from windows 2018-05-18 10:55:47 +02:00
Adolfo Gómez García
2ed4bf07cd Working on next-gen user id 2018-05-18 09:44:29 +02:00
Adolfo Gómez García
df17aa8687 Merge remote-tracking branch 'origin/v2.2' 2018-05-16 13:39:50 +02:00
Adolfo Gómez García
04e900bd8e work in progress, will log later 2018-05-16 13:39:44 +02:00
Adolfo Gómez García
0e99f53f0d Added "early client IP log" on dashboard 2018-05-16 13:36:17 +02:00
Adolfo Gómez García
af53a574f5 simple uds tags fixes 2018-05-11 12:06:00 +02:00
Adolfo Gómez García
15e4c949d3 Now the machine removal on windows takes care of child nodes.. (We have
noticed that Hyperv server 2016 creates a "node" behind machines on
domain)
2018-05-10 12:32:10 +02:00
Adolfo Gómez García
962d28b484 Merge remote-tracking branch 'origin/v2.2' 2018-05-10 12:21:22 +02:00
Adolfo Gómez García
2bbc74a87c Fixed domain deletion when a machine has child nodes 2018-05-10 12:19:54 +02:00
Adolfo Gómez García
ac5d3ebe14 Removed non used "moderm" stuff 2018-05-10 08:34:43 +02:00
Adolfo Gómez García
0e4e1e860d Now we can add/remove transports from an scheduled action 2018-05-09 08:14:39 +02:00
Adolfo Gómez García
0b201eada9 removed debug from xenserver 2018-05-09 00:24:51 +02:00
Adolfo Gómez García
73139094dc Merge remote-tracking branch 'origin/v2.2' 2018-05-09 00:24:36 +02:00
Adolfo Gómez García
9e270f6f7e fixed requirements 2018-05-09 00:22:30 +02:00
Adolfo Gómez García
81a358e4e2 Adding scheduled action on transports
Fixed PUT for detail items
2018-05-07 16:47:19 +02:00
Adolfo Gómez García
eead0d282c Merge remote-tracking branch 'origin/v2.2' 2018-05-02 10:46:18 +02:00
Adolfo Gómez García
ba09bab8a1 fix Actor for newer Oss 2018-05-02 10:40:57 +02:00
Adolfo Gómez García
ac24acc52d Merge remote-tracking branch 'origin/v2.2' 2018-04-27 16:54:22 +02:00
Adolfo Gómez García
4c4a54e50b Fixed debian to use first freerdp2 instead freerdp. Also, removed rdesktop 2018-04-27 16:52:09 +02:00
Adolfo Gómez García
5f44798fe6 Merge branch 'master' of github.com:dkmstr/openuds 2018-04-27 11:21:47 +02:00
Adolfo Gómez García
5b7d02964d Now AD search on full path instead of OU 2018-04-27 11:01:08 +02:00
Adolfo Gómez García
912c4d3d05 Merge remote-tracking branch 'origin/v2.2' 2018-04-27 10:55:42 +02:00
Adolfo Gómez García
0648a27daf Fixed for machine deletion on ou change 2018-04-27 10:53:04 +02:00
Adolfo Gómez García
496e5fb60d Removed all pycha references from project. All charts are now created
using matplotlib
2018-04-25 12:15:05 +02:00
Adolfo Gómez García
1406b036f7 Fixed another report (removed pycha) 2018-04-24 13:41:43 +02:00
Adolfo Gómez García
51cc23b223 * Fixed sample setting file
* Working on removal of pycha of reports
2018-04-24 11:27:51 +02:00
Adolfo Gómez García
2ad3517bcd Fixing up, removing pycha and using matplotlib instead 2018-04-23 15:08:58 +02:00
Adolfo Gómez García
52e703f9c2 Fixes 2018-04-20 10:39:26 +02:00
Adolfo Gómez García
2ce130786a Autcompletes 2018-04-18 12:25:20 +02:00
Adolfo Gómez García
9b2e9000e7 pep related fixes 2018-04-18 10:07:16 +02:00
Adolfo Gómez García
0021fd5ff9 pep related fixes 2018-04-18 01:06:06 +02:00
Adolfo Gómez García
f74b0b0fe9 pep related fixes 2018-04-18 00:44:21 +02:00
Adolfo Gómez García
62abc85191 pep related fixes 2018-04-18 00:38:59 +02:00
Adolfo Gómez García
429eead46d Fixes for python 3 (pep related, code warns, etc...) 2018-04-17 18:29:13 +02:00
Adolfo Gómez García
6293c09ca8 Fixed intragrations from 2.2 2018-04-14 19:15:44 +02:00
Adolfo Gómez García
6db1fdb86d Added content type to error responses on REST api 2018-04-14 18:53:26 +02:00
Adolfo Gómez García
af9e372d6b Merge remote-tracking branch 'origin/v2.2' 2018-04-12 13:11:01 +02:00
Adolfo Gómez García
b1223f623b Fixed RDP connection 2018-04-12 13:02:24 +02:00
Adolfo Gómez García
e72698e1da Merge remote-tracking branch 'origin/v2.2' 2018-03-30 19:00:50 +02:00
Adolfo Gómez García
22a78d8e69 addedd freerdp2-x11 as optional dependency 2018-03-30 19:00:24 +02:00
Adolfo Gómez García
04f532065a Merge remote-tracking branch 'origin/v2.2' 2018-03-28 12:43:37 +02:00
Adolfo Gómez García
39b6a59538 Fixed end date 2018-03-28 12:42:50 +02:00
Adolfo Gómez García
1d45fef879 Merge remote-tracking branch 'origin/v2.2' 2018-03-28 12:03:33 +02:00
Adolfo Gómez García
772a31da37 added fix for shotname 2018-03-28 12:02:57 +02:00
Adolfo Gómez García
cc95427e05 Merge remote-tracking branch 'origin/v2.2' 2018-03-26 12:34:24 +02:00
Adolfo Gómez García
0070b1618b Fixed for getByAttr1 to return FIRST element in case of error 2018-03-26 12:34:12 +02:00
Adolfo Gómez García
d3c5f47ac2 Merge remote-tracking branch 'origin/v2.2' 2018-03-23 10:53:02 +01:00
Adolfo Gómez García
3b04e2a180 translations 2 2018-03-23 10:52:54 +01:00
Adolfo Gómez García
838cedf7e2 Merge remote-tracking branch 'origin/v2.2' 2018-03-23 10:43:01 +01:00
Adolfo Gómez García
5d43c1dbff translations 1 2018-03-23 10:42:34 +01:00
Adolfo Gómez García
f3e8d98ae6 Merge remote-tracking branch 'origin/v2.2' 2018-03-23 10:40:16 +01:00
Adolfo Gómez García
9c65db5c25 X2go fixes 2018-03-23 10:39:34 +01:00
Adolfo Gómez García
a6397e9ff6 Fixed X2Go 2018-03-22 18:36:43 +01:00
Adolfo Gómez García
187d417eec Merge remote-tracking branch 'origin/v2.2' 2018-03-21 18:41:21 +01:00
Adolfo Gómez García
5909533161 Fixed "smooth fonts".Now works on linux xfreerdp clients also. 2018-03-21 18:40:32 +01:00
Adolfo Gómez García
cbaf42af26 Merge remote-tracking branch 'origin/v2.2' 2018-03-16 10:57:21 +01:00
Adolfo Gómez García
f3420a50ac translations 2018-03-16 10:56:57 +01:00
Adolfo Gómez García
f6eab2f3b2 Fixed migrations from 2.2 2018-03-16 10:02:14 +01:00
Adolfo Gómez García
6bbd8d1321 Merge remote-tracking branch 'origin/v2.2' 2018-03-16 09:53:49 +01:00
Adolfo Gómez García
1bd56debb9 Added reset to vdi 2018-03-16 09:51:55 +01:00
Adolfo Gómez García
83ad9141a8 Merge remote-tracking branch 'origin/v2.2' 2018-03-16 09:50:29 +01:00
Adolfo Gómez García
a1ed512453 fixes from merge 2018-03-16 09:43:01 +01:00
Adolfo Gómez García
4641fde008 Added reset to vdi 2018-03-16 09:37:04 +01:00
Adolfo Gómez García
1d3d79c562 fix for "reset" capacity 2018-03-16 06:15:19 +01:00
Adolfo Gómez García
33600bda6e Fixed rootless 2018-03-14 15:23:44 +01:00
Adolfo Gómez García
e4807cf648 sets "allow_users_reset" to false on save if service does not supports
it.
2018-03-14 09:51:17 +01:00
Adolfo Gómez García
b9cb82c054 Merge remote-tracking branch 'origin/v2.2' 2018-03-14 08:18:06 +01:00
Adolfo Gómez García
92de41d410 * Added support for "reset" services that support it.
Right now, we will test on enterprise this feature.
2018-03-14 08:03:23 +01:00
Adolfo Gómez García
ee72b65534 Merge from master guacamole updates 2018-03-12 07:21:22 +01:00
Adolfo Gómez
ca24954e8d
Merge pull request #20 from glyptodon/update-guac-version
Update to 0.9.14 version of Apache Guacamole APIs.
2018-03-12 07:17:45 +01:00
Michael Jumper
b30f9334c5 Automatically reconnect after network errors (see upstream commit apache/guacamole-client@ecf506e). 2018-03-11 21:58:20 -07:00
Michael Jumper
a8e384cb43 Add error strings for status codes added upstream via GUACAMOLE-208 (see upstream commits apache/guacamole-client@dd6964a and apache/guacamole-client@ee4f8cf). 2018-03-11 21:55:47 -07:00
Michael Jumper
5136d013c2 Update to 0.9.14 version of Apache Guacamole APIs. 2018-03-11 21:33:30 -07:00
Adolfo Gómez García
374c35ea8c Merge remote-tracking branch 'origin/v2.2' 2018-03-09 11:19:17 +01:00
Adolfo Gómez García
dba5e4267a Fixed translations 2018-03-09 11:19:01 +01:00
Adolfo Gómez García
fb757fc1fd Merge remote-tracking branch 'origin/v2.2' 2018-03-08 20:33:21 +01:00
Adolfo Gómez García
f6d78201cb fixed cache in case of use in middle of "lock tables"... 2018-03-08 20:29:28 +01:00
Adolfo Gómez García
952cb1c3f7 Merge remote-tracking branch 'origin/v2.2' 2018-03-06 11:08:58 +01:00
Adolfo Gómez García
8162230f23 Fixed lazy trans on os managers 2018-03-06 11:06:40 +01:00
Adolfo Gómez García
f73de2f4c3 Merge remote-tracking branch 'origin/v2.2' 2018-03-05 13:59:40 +01:00
Adolfo Gómez García
bfb96b6d9f Translations 2018-03-05 13:59:20 +01:00
Adolfo Gómez García
f9316b230b Merge remote-tracking branch 'origin/v2.2' 2018-03-05 13:41:33 +01:00
Adolfo Gómez García
b37c87afb5 Added new "on logout" state 2018-03-05 13:38:40 +01:00
Adolfo Gómez García
8913d152e7 cosmetic 2018-03-05 13:37:33 +01:00
Adolfo Gómez García
8141d3bbdb Updated go fontawasome 5 2018-03-04 02:38:48 +01:00
Adolfo Gómez García
05f2f816e0 a couple of fixes for grunt-copy on user space template 2018-03-03 10:53:39 +01:00
Adolfo Gómez García
0c1313af8f Merge remote-tracking branch 'origin/v2.2' 2018-03-02 18:36:43 +01:00
Adolfo Gómez García
df98efc2da translations 2018-03-02 18:35:02 +01:00
Adolfo Gómez García
7320ba0e6d Added to "use" log the serviceName & the pool name 2018-03-02 18:09:12 +01:00
Adolfo Gómez García
9f89cc1482 Merge remote-tracking branch 'origin/v2.2' 2018-03-02 06:01:30 +01:00
Adolfo Gómez García
4271be9340 Added a couple of logs due to the fact that maybe in some moment we
change a datetime from db/uds and may "force" tasks
2018-03-02 06:00:04 +01:00
Adolfo Gómez García
8904cc9bc0 fixing migrations from 2.2 2018-03-02 05:47:17 +01:00
Adolfo Gómez García
e1efa5d5ed fixing migrations from 2.2 2018-03-02 05:46:56 +01:00
Adolfo Gómez García
b56b3ef6d8 Fixed & remove "auto_add_time" etc.. 2018-03-02 05:25:42 +01:00
Adolfo Gómez García
eacffbe20b Merge remote-tracking branch 'origin/v2.2' 2018-03-02 01:02:08 +01:00
Adolfo Gómez García
5f74c7fca8 * Changed the "persitent" management on case of new publication.
Now, if a machine is considered "persistent", on a new publication, UDS
Will not remove assigned services, nor will remove services of old
publications on logout.
2018-03-02 00:51:16 +01:00
Adolfo Gómez García
4a171b6aa5 Merge remote-tracking branch 'origin/v2.2' 2018-02-28 19:50:48 +01:00
Adolfo Gómez García
0bd09e70bf fixed README.txt 2018-02-28 19:50:27 +01:00
Adolfo Gómez García
52345d6970 Forgot the moderm folder :) 2018-02-26 07:30:22 +01:00
Adolfo Gómez García
697a07dda8 Working on templates 2018-02-26 07:11:59 +01:00
Adolfo Gómez García
ccd2215cf6 Finally, we are going to try translation to typescript, at least on user space for now. 2018-02-25 09:05:02 +01:00
Adolfo Gómez García
c2e5b705a7 Advanced a bit 2018-02-24 23:48:42 +01:00
Adolfo Gómez García
30006b90d4 Advancing on base template dev environment 2018-02-24 10:10:26 +01:00
Adolfo Gómez García
9d2abc83bf Added by now the bootstrap-select picerk beta. To be replace with stable & npm package when stable 2018-02-24 10:09:44 +01:00
Adolfo Gómez García
9e86df21e5 advancing on base templates. 2018-02-24 09:09:14 +01:00
Adolfo Gómez García
367b9ca26f Advancing on auto builders 2018-02-24 08:45:45 +01:00
Adolfo Gómez García
3be93f2dcf Testing aroung with typescripy/javascript. For now, will keep coffeescript, too many changes for using typescript and no time ;-) 2018-02-24 06:21:13 +01:00
Adolfo Gómez García
5d8a63e729 base empty template for user html 2018-02-24 05:38:23 +01:00
Adolfo Gómez García
f9886cae3b Replacing coffeescripy by typescript 2018-02-24 05:24:26 +01:00
Adolfo Gómez García
f9e10b8daf Updated 2018-02-23 09:40:14 +01:00
Adolfo Gómez García
b386839bdc started template for new user interface, using bootstrap 4 2018-02-23 09:00:59 +01:00
Adolfo Gómez García
32053627ad Merge remote-tracking branch 'origin/v2.2' 2018-02-20 14:32:51 +01:00
Adolfo Gómez García
9e991eebb2 Locales to date 2018-02-20 14:29:59 +01:00
Adolfo Gómez García
579092bac6 Merge remote-tracking branch 'origin/v2.2' 2018-02-20 13:27:16 +01:00
Adolfo Gómez García
ab8faf3ebb Small 2.2 fixes 2018-02-20 13:11:46 +01:00
Adolfo Gómez García
17e573dc14 First tests with mssql. With a couple of fixes, seems to work properly for "testing" porposes at least... 2018-02-16 06:15:21 +01:00
Adolfo Gómez García
bd267d7cd1 On Mysql, unsigned smalint can cover till 65536. Seems that on MS SQL
does not support this range (instead, supports only till 32768).
Also, due to something i do not understand, cannot change the type of
"level" field because it gas a constraint. So, as long as int and
smallint are compatibles at query leve, we have changed it on initial
creation to "PsotiveInteger" and shoudl be fine. (The already created
database will not suffer from this change)
2018-02-16 05:37:47 +01:00
Adolfo Gómez García
18d6a24631 fixes for django 2.x 2018-02-13 01:20:32 +01:00
Adolfo Gómez García
86a2c7c544 Small fix & debug info removal 2018-02-13 01:02:28 +01:00
Adolfo Gómez García
733522d574 * Added new squashed migration for next release
* Fixed several issues with django 2.x
2018-02-13 00:38:15 +01:00
Adolfo Gómez García
92a0c840a5 updated requirements with current neede versions 2018-02-12 22:03:48 +01:00
Adolfo Gómez García
92639b6771 preparing debian package for next release (just upgrading version numbers right now...) 2018-02-12 21:40:40 +01:00
Adolfo Gómez García
7b6d7df38b UDS 3.0 will be only python 3 compatible. We have upgrade django to 2.x, so we need python 3 to use it 2018-02-12 21:34:58 +01:00
Adolfo Gómez García
1ea2054d60 UDS 3.0 will be only python 3 compatible. We have upgrade django to 2.x, so we need python 3 to use it 2018-02-12 21:29:35 +01:00
Adolfo Gómez García
96721487de Fixed workers autoloader for python3 2018-02-12 19:22:57 +01:00
Adolfo Gómez García
c9075bfa0f Merge remote-tracking branch 'origin/v2.2' 2018-02-12 11:04:53 +01:00
Adolfo Gómez García
752b84a17a added xscreensaver dependencie to udsactor 2018-02-12 10:49:44 +01:00
Adolfo Gómez García
4ffdd4b882 Removed check of systray existance... 2018-02-12 10:43:34 +01:00
Adolfo Gómez García
ca0fc6a61d Updating windowmain to be functional on python2 & python3 2018-02-09 06:10:50 +01:00
Adolfo Gómez García
54136ae077 Upgraded reporting to weasyprint & python3.
Caution!!. pycha does not supports python3. Right now, we have patched
pycha on our servers, and will look for an updated alternative.
2018-02-08 08:05:18 +01:00
Adolfo Gómez García
8f38ae8f4a Fixed fields order not being returned correctly 2018-02-08 07:02:08 +01:00
Adolfo Gómez García
49654d9afe Removed duplicate password for testing (nonsense... :P) 2018-02-08 07:01:33 +01:00
Adolfo Gómez García
225bf75770 advancing on a reporting system compatible with python2 & python3 2018-02-07 21:38:17 +01:00
Adolfo Gómez García
a9844fc8b4 Merge remote-tracking branch 'origin/v2.2' 2018-02-07 16:43:35 +01:00
Adolfo Gómez García
d59661eb05 Fix report 2018-02-07 16:42:59 +01:00
Adolfo Gómez García
babcf53ea3 removing old geraldo reports and adding much more conveninet weasyprint 2018-02-07 11:53:31 +01:00
Adolfo Gómez García
a395847b32 Merge remote-tracking branch 'origin/v2.2' 2018-02-07 10:26:21 +01:00
Adolfo Gómez García
7c54eba78c Merge branch 'master' of github.com:dkmstr/openudt mes 2018-02-07 10:26:07 +01:00
Adolfo Gómez García
766786715d Removing geraldo reports/reportlabs in favor of weasyprint 2018-02-07 10:25:50 +01:00
Adolfo Gómez García
c81fc17593 Removing geraldo reports/reportlabs in favor of weasyprint 2018-02-07 10:25:22 +01:00
Adolfo Gómez García
a03f86f031 Fixed report to blob generation 2018-02-07 10:21:46 +01:00
Adolfo Gómez García
c9bea9cf78 Merge remote-tracking branch 'origin/v2.2' 2018-02-06 15:19:40 +01:00
Adolfo Gómez García
cc033105e2 fixed translations 2018-02-06 15:19:21 +01:00
Adolfo Gómez García
a665c72c25 Updated simpleldap authenticator to be python2 & python3 compatible 2018-02-01 07:06:25 +01:00
Adolfo Gómez García
dcf1ea7cac merge from 2.2 and fix 2018-02-01 05:25:17 +01:00
Adolfo Gómez García
9e293905b6 merge from 2.2 and fix 2018-02-01 05:23:36 +01:00
Adolfo Gómez García
a1bf0b92bb Enhanced "search user/groups" response on too many results 2018-02-01 04:59:20 +01:00
Adolfo Gómez García
bce764f0d3 Fixied unique generators for not using "lock tables" (towards full use of galer mariadb cluster) 2018-01-31 08:09:04 +01:00
Adolfo Gómez García
a4288b991d Removed "lock" from UniqueIdGenerator for future release 2018-01-29 12:45:18 +01:00
Adolfo Gómez García
c2a1e310ef Merge remote-tracking branch 'origin/v2.2' 2018-01-29 09:26:55 +01:00
Adolfo Gómez García
b6e5aeac29 Fixed string translation from coffeescript 2018-01-26 10:32:08 +01:00
Adolfo Gómez García
a6474101b4 small info fix 2018-01-25 08:34:01 +01:00
Adolfo Gómez García
8a06132b1a Updated LDAP REGEX to be compatible with python2 & pytohn3 2018-01-24 10:28:26 +01:00
Adolfo Gómez García
789084d3ed py3 2018-01-18 10:46:05 +01:00
Adolfo Gómez García
fab976fd8f Merge remote-tracking branch 'origin/v2.2' 2018-01-18 08:36:39 +01:00
Adolfo Gómez García
3420ac44be Fixed net to use only integers on py3 2018-01-18 08:32:16 +01:00
Adolfo Gómez García
42631f39da python 3.x 2018-01-16 12:37:56 +01:00
Adolfo Gómez García
c6003536ae python3.x 2018-01-16 11:30:04 +01:00
Adolfo Gómez García
5c3505856a Merge remote-tracking branch 'origin/v2.2' 2018-01-16 10:39:31 +01:00
Adolfo Gómez García
d0fb880880 Removed annoying debug 2018-01-16 10:38:23 +01:00
Adolfo Gómez García
e597381005 Merge remote-tracking branch 'origin/v2.2' 2018-01-16 10:37:11 +01:00
Adolfo Gómez García
f43a65e026 Fixed connection for not checking connections 2018-01-16 10:33:51 +01:00
Adolfo Gómez García
0d63c25f27 Common ldaputil for all ldap access, so py2 & py3 compat will be easier 2018-01-16 08:35:18 +01:00
Adolfo Gómez García
37c65c14e6 Fixing for python3.x 2018-01-15 23:38:00 +01:00
Adolfo Gómez García
6d5b154f3c Fixes for python3.x 2018-01-15 23:33:21 +01:00
Adolfo Gómez García
ea0727993e legacy bug, in a methond not in fact used (but maybe usable) 2018-01-15 23:32:55 +01:00
Adolfo Gómez García
61b8c270c4 Fixing up things for python 3.x compat 2018-01-15 17:02:33 +01:00
Adolfo Gómez García
b491c4a2c0 Merge remote-tracking branch 'origin/v2.2' 2018-01-12 11:53:01 +01:00
Adolfo Gómez García
8d00883213 Added "Chrome OS", and fixed the "unknown os" bug 2018-01-12 11:51:08 +01:00
Adolfo Gómez García
8ad77c736d Set that unknown os to be recognized right now as android 2018-01-12 11:25:24 +01:00
Adolfo Gómez García
f5325e47f7 Merge remote-tracking branch 'origin/v2.2' 2018-01-12 11:18:37 +01:00
Adolfo Gómez García
bfb65ccdb6 towerds python 3.x 2018-01-12 10:37:32 +01:00
Adolfo Gómez García
178bb12b62 Working on python3 compat, an fixing 2.2 merge issues :) (a couple only) 2018-01-12 10:03:05 +01:00
Adolfo Gómez García
0801bd0cfb * Fixed cache for invalidate it fi "pickle" protocol is mismatched (for
python3/python2 compat)
* Fixed BaseModule to return icon in "unicode" instead of "bytes"
2018-01-12 07:55:46 +01:00
Adolfo Gómez García
5fae347440 Fixing up for 3.x compatibility 2018-01-12 06:46:07 +01:00
Adolfo Gómez García
34ff0259ce Fixed icon for service inside providers (on dashboard) 2018-01-10 12:18:28 +01:00
Adolfo Gómez García
b4ba79cad2 Fixed look up user names on Windows Actor on lowercase 2018-01-10 12:10:53 +01:00
Adolfo Gómez García
5a13f52d8f Fixed translations 2018-01-09 22:50:46 +01:00
Adolfo Gómez García
3e8b681dae Merge remote-tracking branch 'origin/v2.2' 2018-01-09 22:36:59 +01:00
Adolfo Gómez García
0242eaaa54 fixed a couple of literals 2018-01-09 22:36:26 +01:00
Adolfo Gómez García
f2149c594e Merge remote-tracking branch 'origin/v2.2' 2018-01-09 14:35:58 +01:00
Adolfo Gómez García
7ec92d6005 translations 2018-01-09 14:35:42 +01:00
Adolfo Gómez García
1518be047c Merge remote-tracking branch 'origin/v2.2' 2018-01-09 14:33:46 +01:00
Adolfo Gómez García
dbc2bc1754 Fixed string 2018-01-09 14:33:38 +01:00
Adolfo Gómez García
4932fe37f7 Merge remote-tracking branch 'origin/v2.2' 2018-01-08 18:50:13 +01:00
Adolfo Gómez García
18f75ecb37 Updated translations 2018-01-08 18:48:41 +01:00
Adolfo Gómez García
61b147f450 Merge remote-tracking branch 'origin/v2.2' 2018-01-06 19:32:36 +01:00
Adolfo Gómez García
033a6265a8 Fixed ticket validity description on HTML5 2018-01-06 19:29:46 +01:00
Adolfo Gómez García
02ab1a8c7c Removed unused field 2018-01-06 19:27:17 +01:00
Adolfo Gómez García
8c6833f420 Several fixes
* Added missing migration
* More fixes towards python3 full compatibility (now it runs, but has
lots of unicode/bytes problems :) )
* Several minor fixes found during updating
2018-01-05 14:46:14 +01:00
Adolfo Gómez García
9726cd7858 Fixing up things for future python 3.x (advancing fast)) 2018-01-05 00:28:05 +01:00
Adolfo Gómez García
a81e08d3cd Fixed migrations to work on python3 2018-01-04 22:55:41 +01:00
Adolfo Gómez García
fa1dfea181 small fix for migrations 2018-01-04 22:43:52 +01:00
Adolfo Gómez García
b59067a20e Fixing up things for python3 near future upgrade 2018-01-04 22:16:21 +01:00
Adolfo Gómez García
fc2f8b8a37 Merge remote-tracking branch 'origin/v2.2' 2018-01-04 14:46:14 +01:00
Adolfo Gómez García
89155d6db9 HTML5 addin so we can define the duration of HTML5 tickets (for
disconnections, or F5 allowance)
2018-01-04 14:44:31 +01:00
Adolfo Gómez García
9b35224fc5 Removed "storage_type" from 4.1. It's not used, so not needed 2018-01-04 14:43:40 +01:00
Adolfo Gómez García
161c277ec6 Merge remote-tracking branch 'origin/v2.2' 2017-12-21 19:10:55 +01:00
Adolfo Gómez García
3694f10fff Merge remote-tracking branch 'origin/v2.2' 2017-12-21 19:05:33 +01:00
Adolfo Gómez García
42ac0d6b03 Merge remote-tracking branch 'origin/v2.2' 2017-12-20 12:29:02 +01:00
Adolfo Gómez García
30ef566bef merged from v2.2 2017-12-20 12:28:38 +01:00
Adolfo Gómez García
85db53e619 Merge remote-tracking branch 'origin/v2.2' 2017-12-19 22:44:32 +01:00
Adolfo Gómez García
1a1a4e84b2 Merged from 2.2. 2017-12-19 22:41:26 +01:00
Adolfo Gómez García
6756142e44 Merged from 2.2 2017-12-15 12:41:50 +01:00
Adolfo Gómez García
49862699f2 Merged 2017-12-14 15:28:34 +01:00
Adolfo Gómez García
afbbc342ba Merged v2.2 & fixed typo 2017-12-14 10:52:55 +01:00
Adolfo Gómez García
5e0d71042d Merge remote-tracking branch 'origin/v2.2' 2017-11-20 15:30:35 +01:00
Adolfo Gómez García
3a42fb599c Merge remote-tracking branch 'origin/v2.2' 2017-11-15 15:39:41 +01:00
Adolfo Gómez García
4c87d96cd3 Merge remote-tracking branch 'origin/v2.2' 2017-11-15 13:27:44 +01:00
Adolfo Gómez García
7fd7f48ee8 Mergin 2.2 changes into master 2017-11-14 15:19:32 +01:00
Adolfo Gómez García
dcfc5357aa Merge remote-tracking branch 'origin/v2.2' 2017-11-09 08:20:24 +01:00
Adolfo Gómez García
86b12f82bf Merge remote-tracking branch 'origin/v2.2' 2017-11-07 11:10:01 +01:00
Adolfo Gómez García
5360864aed Merge remote-tracking branch 'origin/v2.2' 2017-11-06 15:03:12 +01:00
Adolfo Gómez García
b8042f5aa7 Merged changes from 2.2 2017-10-26 14:02:07 +02:00
Adolfo Gómez García
09d6001ef1 Merged changes from 2.2 2017-10-26 14:01:44 +02:00
Adolfo Gómez García
9e2a5d8b07 Merge remote-tracking branch 'origin/v2.2' 2017-10-25 13:31:58 +02:00
Adolfo Gómez García
3f1f2066b4 Merged 2.2 2017-10-19 14:31:16 +02:00
Adolfo Gómez García
6b88209a93 Coding style related 2017-10-17 14:16:00 +02:00
Adolfo Gómez García
eb7773fb74 Merge remote-tracking branch 'origin/v2.2' 2017-10-17 13:24:23 +02:00
Adolfo Gómez García
1519d7b8a1 Merge remote-tracking branch 'origin/v2.2' 2017-10-17 13:15:17 +02:00
Adolfo Gómez García
528d1d3acc Code slyling related 2017-10-16 19:24:28 +02:00
Adolfo Gómez García
f1158b9d42 Merge remote-tracking branch 'origin/v2.2' 2017-10-16 19:08:18 +02:00
Adolfo Gómez García
8a87c2e057 Fixes 2017-10-16 19:08:14 +02:00
Adolfo Gómez García
97dde33c48 Merge remote-tracking branch 'origin/v2.2' 2017-10-16 18:51:59 +02:00
Adolfo Gómez García
953d4ac0c9 ¡ 2017-10-13 13:09:15 +02:00
Adolfo Gómez García
b8c09f48db Code style related fixes (a lot!!! :) ) 2017-10-13 13:06:27 +02:00
Adolfo Gómez García
a890a957c8 Merge remote-tracking branch 'origin/v2.2' 2017-10-13 12:17:11 +02:00
Adolfo Gómez García
64ed0a9a1f Merge branch 'master' of github.com:dkmstr/openuds 2017-10-13 12:16:59 +02:00
Adolfo Gómez García
1ac61edebe small fixes 2017-10-12 02:54:56 +02:00
Adolfo Gómez García
6eaa3fd450 PEP & related 2017-10-12 02:28:43 +02:00
Adolfo Gómez García
81ce78bbbd PEP & related 2017-10-12 02:05:44 +02:00
Adolfo Gómez García
a1478a04d8 Fixing up PEP related 2017-10-12 01:27:26 +02:00
Adolfo Gómez García
76ff66661d Merge remote-tracking branch 'origin/v2.2' 2017-10-11 17:55:46 +02:00
Adolfo Gómez García
5ebd081ff3 Merge remote-tracking branch 'origin/v2.2' 2017-10-09 09:21:38 +02:00
Adolfo Gómez García
71f04e46be from 2.2 2017-10-05 11:11:35 +02:00
Adolfo Gómez García
cbb6d48cfb Merge remote-tracking branch 'origin/v2.2' 2017-10-05 11:09:42 +02:00
Adolfo Gómez García
04a862840c Updating from 2.2 2017-10-05 11:05:18 +02:00
Adolfo Gómez García
9f386a8d01 Merge remote-tracking branch 'origin/v2.2' 2017-10-02 10:44:54 +02:00
Adolfo Gómez García
ac8a661182 Merge remote-tracking branch 'origin/v2.2' 2017-10-02 10:44:14 +02:00
Adolfo Gómez García
a071ce5e3e Merge remote-tracking branch 'origin/v2.2' 2017-09-21 15:50:07 +02:00
Adolfo Gómez García
cd19eae182 Merge remote-tracking branch 'origin/v2.2' 2017-09-20 10:16:22 +02:00
Adolfo Gómez García
3c7d0f0e71 Merge remote-tracking branch 'origin/v2.2' 2017-09-19 16:32:16 +02:00
Adolfo Gómez García
a3eb1f6e3f Fixing up things for 2.5 2017-09-18 09:46:00 +02:00
Adolfo Gómez García
b9634bfd10 Merged 2.2 2017-09-18 08:35:16 +02:00
Adolfo Gómez García
5091b69219 Merge remote-tracking branch 'origin/v2.2' 2017-09-13 14:32:33 +02:00
Adolfo Gómez García
167eb1861c Merge remote-tracking branch 'origin/v2.2' 2017-09-01 13:06:03 +02:00
Adolfo Gómez García
0d13156edf Merge remote-tracking branch 'origin/v2.2' 2017-08-04 15:20:12 +02:00
Adolfo Gómez García
b5887ad1df Merged & fixed 2.2 changes 2017-08-02 16:29:47 +02:00
Adolfo Gómez García
9f441c6b22 merged from 2.1 update 1 changes 2017-07-17 13:15:08 +02:00
Adolfo Gómez
1e96bd2c13 Update README.md 2017-07-01 17:30:07 +02:00
Adolfo Gómez García
65d4e8f316 Fix so POSTs bodys of UDSActor are never empty 2017-06-27 10:40:15 +02:00
Adolfo Gómez García
876e9ee3b5 Merge remote-tracking branch 'origin/v2.1' 2017-06-20 08:18:36 +02:00
Adolfo Gómez García
59e670f44e Merge remote-tracking branch 'origin/v2.1' 2017-06-08 11:34:12 +02:00
Adolfo Gómez García
2117433f8f Merge remote-tracking branch 'origin/v2.1' 2017-06-08 11:17:57 +02:00
Adolfo Gómez García
7d39e15c18 removed checkpoints 2017-06-06 13:17:55 +02:00
Adolfo Gómez García
77c7d71a96 Merge remote-tracking branch 'origin/v2.1' 2017-06-06 13:16:20 +02:00
Adolfo Gómez García
ca877e513f Merge remote-tracking branch 'origin/v2.1' 2017-06-06 13:09:46 +02:00
Adolfo Gómez García
648aad97ea Merge remote-tracking branch 'origin/v2.1' 2017-06-01 11:38:24 +02:00
Adolfo Gómez García
e8ecf3d057 Merged changes to 2.1 2017-06-01 11:36:07 +02:00
Adolfo Gómez García
d8fa71c326 Merge remote-tracking branch 'origin/v2.1' 2017-05-18 12:39:42 +02:00
Adolfo Gómez García
aa4a96663c * Fixed a bug with removal/checkForRemoval on UserServiceManager that,
in case of a publication that finishes instantly (no one before 2.5
version), the valid services got into error instead of removal process.
* Added OpenGnsys, now works correctly (needs to do real tests against)
* Fixed template getting from adm interface for django >1.10
2017-05-18 12:31:03 +02:00
Adolfo Gómez García
8dc0239548 * Added "fake" opengnsys server
* Advanced with provider & service for Opengnsys
2017-05-17 13:55:38 +02:00
Adolfo Gómez García
0d02dcb83b Merge remote-tracking branch 'origin/v2.1' 2017-05-16 09:37:38 +02:00
Adolfo Gómez García
e5a770345b Merge remote-tracking branch 'origin/v2.1' 2017-05-16 09:32:03 +02:00
Adolfo Gómez García
922659d284 Merge remote-tracking branch 'origin/v2.1' 2017-05-13 18:37:13 +02:00
Adolfo Gómez García
c846bae301 Fixed report generation on 2.5 2017-05-10 10:48:37 +02:00
Adolfo Gómez García
bdefd11ade Fixing up proxy 2017-05-10 09:50:49 +02:00
Adolfo Gómez García
e8888afd22 Merge remote-tracking branch 'origin/v2.1' 2017-05-09 10:20:14 +02:00
Adolfo Gómez García
58d0f10eb0 Merge remote-tracking branch 'origin/v2.1' 2017-05-09 09:42:18 +02:00
Adolfo Gómez García
72eedd8978 Merge remote-tracking branch 'origin/v2.1' 2017-05-08 09:33:42 +02:00
Adolfo Gómez García
b2851b3c65 Merge remote-tracking branch 'origin/v2.1' 2017-05-08 09:31:32 +02:00
Adolfo Gómez García
b8e1e17735 Merge remote-tracking branch 'origin/v2.1' 2017-04-19 08:23:44 +02:00
Adolfo Gómez García
06d4909447 Merge remote-tracking branch 'origin/v2.1' 2017-04-18 00:32:44 +02:00
Adolfo Gómez
498a1a51eb Merge pull request #6 from glyptodon/update-glypto-copyright
Update Glyptodon copyright notice in applicable files.
2017-04-18 00:24:31 +02:00
Adolfo Gómez
3862605e3a Merge pull request #4 from glyptodon/remove-unused
Remove unused portions of legacy Guacamole UI.
2017-04-18 00:23:41 +02:00
Adolfo Gómez
b713ac9172 Merge pull request #5 from glyptodon/check-window-objects
Verify existence of localStorage / opener before attempting to reference.
2017-04-18 00:23:30 +02:00
Michael Jumper
1e96917c27 Remove unused CSS files. 2017-04-17 14:42:50 -07:00
Michael Jumper
5adc47fab8 Remove old, commented-out code. 2017-04-17 14:42:50 -07:00
Michael Jumper
2ca3b7ba25 Update copyright notice in applicable files. 2017-04-17 14:42:14 -07:00
Michael Jumper
8af8c91e2e Do not attempt to reference opener unless it is actually defined. 2017-04-17 14:41:57 -07:00
Michael Jumper
c7ba6e84b9 Do not attempt to reference localStorage unless it has been verified to exist. 2017-04-17 14:41:57 -07:00
Adolfo Gómez García
469fbaacda Merge remote-tracking branch 'origin/v2.1' 2017-04-17 23:11:59 +02:00
Michael Jumper
ba53a37d6f Remove unused GuacUI interface component classes. 2017-04-17 13:28:15 -07:00
Michael Jumper
d7006264ad Remove unused GuacUI utility functions. 2017-04-17 13:28:15 -07:00
Michael Jumper
3acda2fa28 Remove legacy code driving non-existant administration UI. 2017-04-17 13:28:15 -07:00
Michael Jumper
543e16500f Remove tracking of connection history and thumbnails. 2017-04-17 13:28:14 -07:00
Adolfo Gómez García
2a0a243dd1 merged 2.1 2017-04-10 02:45:17 +02:00
Adolfo Gómez García
cdb3a2e8df Fixed version of guacamole transport 2017-04-10 02:40:32 +02:00
Adolfo Gómez
e7f6d8ddeb Merge pull request #3 from glyptodon/update-guac-api
Update to latest Guacamole API versions.
2017-04-10 02:33:59 +02:00
Michael Jumper
f68f78f48c Update to latest Guacamole API versions. 2017-04-08 16:58:03 -07:00
Adolfo Gómez García
c5eb0432b3 Merge remote-tracking branch 'origin/v2.1' 2017-04-06 20:33:16 +02:00
Adolfo Gómez García
d6539dc543 Added visible attribute to services pools 2017-04-06 20:30:49 +02:00
Adolfo Gómez García
f2523fa8f2 Merge remote-tracking branch 'origin/v2.1' 2017-04-06 19:56:29 +02:00
Adolfo Gómez García
eb6ac84b5b Merge remote-tracking branch 'origin/v2.1' 2017-03-31 10:38:05 +02:00
Adolfo Gómez García
3999507129 Merge remote-tracking branch 'origin/v2.1' 2017-03-31 08:08:31 +02:00
Adolfo Gómez García
03db789be9 Merge remote-tracking branch 'origin/v2.1' 2017-03-29 13:33:59 +02:00
Adolfo Gómez García
4ce97b4e7a removed duplicate except 2017-03-29 13:07:40 +02:00
Adolfo Gómez García
621722f5e3 Merge remote-tracking branch 'origin/v2.1' 2017-03-29 13:03:53 +02:00
Adolfo Gómez García
897682eae4 Merge remote-tracking branch 'origin/v2.1' 2017-03-29 11:00:32 +02:00
Adolfo Gómez García
5a3c14db2d Fixed SPICE with powered off machines (fixed check connection) 2017-03-29 10:23:07 +02:00
Adolfo Gómez García
f531d338a0 Merge remote-tracking branch 'origin/v2.1' 2017-03-28 15:12:50 +02:00
Adolfo Gómez García
615ed11197 Fixing up opennebula things 2017-03-28 14:27:36 +02:00
Adolfo Gómez García
5037fd2bd4 Merge remote-tracking branch 'origin/v2.1' 2017-03-27 10:36:48 +02:00
Adolfo Gómez García
9cf5291064 Merge remote-tracking branch 'origin/v2.1' 2017-03-23 14:04:55 +01:00
Adolfo Gómez García
c1ac0d4734 merged ipc from actor 2.1 2017-03-23 10:01:27 +01:00
Adolfo Gómez García
d838c8c9fe Merge remote-tracking branch 'origin/v2.1' 2017-03-22 15:07:03 +01:00
Adolfo Gómez García
fd056eab9f Merge remote-tracking branch 'origin/v2.1' 2017-03-22 12:43:09 +01:00
Adolfo Gómez García
cbc66f4017 Merge remote-tracking branch 'origin/v2.1' 2017-03-22 11:55:51 +01:00
Adolfo Gómez García
f5d1e39121 Fixes for ovirt cleanup 2017-03-22 11:53:59 +01:00
Adolfo Gómez García
c981935270 Fixes for ovirt housekeeping 2017-03-22 11:10:28 +01:00
Adolfo Gómez García
8fb4f190e6 Added defred removal for cleaning up on ovirt as done on other
hypervisors
2017-03-22 10:47:56 +01:00
Adolfo Gómez García
4e2e023ac6 Merge remote-tracking branch 'origin/v2.1' 2017-03-22 10:13:48 +01:00
Adolfo Gómez García
9c0c3bcade Merge remote-tracking branch 'origin/v2.1' 2017-03-22 01:55:03 +01:00
Adolfo Gómez García
5287bfbe9c merged 2.1 fixes 2017-03-20 21:23:03 +01:00
Adolfo Gómez García
2acaa74270 Fixes & merges 2017-03-17 13:39:54 +01:00
Adolfo Gómez García
d816b141b1 Merge remote-tracking branch 'origin/v2.1' 2017-03-16 15:34:08 +01:00
Adolfo Gómez García
4793667435 * Fixed signatures && rdp transport direct now works fine again 2017-03-15 10:54:06 +01:00
Adolfo Gómez García
f86c5942f8 Merge remote-tracking branch 'origin/v2.1' 2017-03-15 10:03:37 +01:00
Adolfo Gómez García
a5b17d3015 Upgrading transports to new secured method 2017-03-15 09:46:51 +01:00
Adolfo Gómez García
1af160608e Merge remote-tracking branch 'origin/v2.1' 2017-03-14 13:46:20 +01:00
Adolfo Gómez García
f244bb7ece Merge remote-tracking branch 'origin/v2.1' 2017-03-10 13:24:17 +01:00
Adolfo Gómez García
55964b7e3f Fixing up for signed-client code 2017-03-10 13:18:34 +01:00
Adolfo Gómez García
35a3e48b89 merged 2017-03-10 10:04:19 +01:00
Adolfo Gómez García
9944854b7b Working on new signed client scripts 2017-03-10 10:02:16 +01:00
Adolfo Gómez García
6e6d7a8795 Fixed client & signature for RDP tunnel 2017-03-08 17:43:09 +01:00
Adolfo Gómez García
bf85332492 Merge remote-tracking branch 'origin/v2.1' 2017-03-08 17:38:21 +01:00
Adolfo Gómez García
0b928476d1 Adding signatures & signature checking for client scripts 2017-03-08 15:23:37 +01:00
Adolfo Gómez García
88fb4ce1b7 Merge remote-tracking branch 'origin/v2.1' 2017-03-07 10:41:17 +01:00
Adolfo Gómez García
1ad7385954 Merge remote-tracking branch 'origin/v2.1' 2017-03-06 14:17:28 +01:00
Adolfo Gómez García
cdac261561 Merge remote-tracking branch 'origin/v2.1' 2017-03-06 09:31:03 +01:00
Adolfo Gómez García
8ebc0aeaaf Refactoring 2017-03-06 09:30:36 +01:00
Adolfo Gómez García
55dd16d508 Refactoring fixing some code issues 2017-03-03 08:32:46 +01:00
Adolfo Gómez García
70dc779fc4 refactoring & fixes 2017-02-27 09:41:32 +01:00
Adolfo Gómez García
240be81f26 Big refactoring towards future 3.x version 2017-02-17 20:22:52 +01:00
Adolfo Gómez García
c80535fabb small fix for base rdp to backwards compatibility 2017-02-14 10:27:48 +01:00
Adolfo Gómez García
a499f13e56 fixed urls for dispatchers for django 1.10 2017-02-14 09:56:13 +01:00
Adolfo Gómez García
4e8b267da5 Merge remote-tracking branch 'origin/v2.1' 2017-02-14 09:54:49 +01:00
Adolfo Gómez García
bb41021eee Merge remote-tracking branch 'origin/v2.1' 2017-02-13 17:28:46 +01:00
Adolfo Gómez García
c7d9ed8d78 Fixes from 2.1 merge 2017-02-13 17:23:48 +01:00
Adolfo Gómez García
053eb55355 Merge remote-tracking branch 'origin/v2.1' 2017-02-13 17:09:16 +01:00
Adolfo Gómez García
9084c0e8b0 Merged from 2.1 2017-02-09 20:13:51 +01:00
Adolfo Gómez García
9c3d67a34c Fixes to OG 2017-02-09 20:04:38 +01:00
Adolfo Gómez García
0d42fbdc84 Login & Info 2017-02-09 08:21:14 +01:00
Adolfo Gómez García
08f442b809 Started OpenGnsys UDS Provider 2017-02-09 08:12:56 +01:00
Adolfo Gómez García
c3c11f3326 Fixed merge mistake 2017-02-07 07:55:00 +01:00
Adolfo Gómez García
f1a7c4661e Merge remote-tracking branch 'origin/v2.1' 2017-02-07 07:52:47 +01:00
Adolfo Gómez García
84d3a2d67f Added sample .service 2017-02-07 07:52:24 +01:00
Adolfo Gómez García
186190ddff * Fixed Proxy model (1 more fix to go)
* Fixed names on coffee script files
* Added proxies admin interface
2017-01-31 09:26:18 +01:00
Adolfo Gómez García
9e2a1cc9f9 done accounting usage of services 2017-01-31 07:20:23 +01:00
Adolfo Gómez García
310d3ca618 Merge remote-tracking branch 'origin/v2.1' 2017-01-30 10:58:30 +01:00
Adolfo Gómez García
c8d26199cd Updating dashboard 2017-01-30 10:58:21 +01:00
Adolfo Gómez García
a601220771 Updating dashboard to include accounts & proxy 2017-01-30 08:17:56 +01:00
Adolfo Gómez García
9b0e1eb7ce updated sample settings tu current version 2017-01-26 06:56:46 +01:00
Adolfo Gómez García
eeaef4604a Merge remote-tracking branch 'origin/v2.1' 2017-01-26 06:30:25 +01:00
Adolfo Gómez García
cd45b9359c Merged from 2.1 2017-01-25 12:36:42 +01:00
Adolfo Gómez García
1b1ec6d736 Merge remote-tracking branch 'origin/v2.1' 2017-01-25 12:30:39 +01:00
Adolfo Gómez García
d9454fea63 Merge remote-tracking branch 'origin/v2.1' 2017-01-24 09:57:29 +01:00
Adolfo Gómez García
3f110fb6c6 Merged from 2.1 2017-01-23 11:54:35 +01:00
Adolfo Gómez García
09a49a1cb2 * Renamed udsProxy to udsproxy
* Woring first version proxy
* Added basic sample config file for udsproxy
* Added daemonize example for udsproxy
Fixed os manager treatment of ready
2017-01-20 10:29:33 +01:00
Adolfo Gómez García
d42482b6c3 Removing qt imports from plugin scripts 2017-01-20 06:54:27 +01:00
Adolfo Gómez García
83ed44b399 Merge remote-tracking branch 'origin/v2.1' 2017-01-20 05:35:16 +01:00
Adolfo Gómez García
d1f4ce0884 * Added new images
* Fixes on Dashboard (advanced new sidevar disposition)
* Added Proxy element to DB (needs to finish this)
2017-01-20 04:58:05 +01:00
Adolfo Gómez García
d3417a1c79 Implemented "proxyRequest" method 2017-01-20 02:19:49 +01:00
Adolfo Gómez García
1a2619c170 * Advancing on proxy
* Preparing UDS to allow "proxied" requests to services (to simplify
access to remote "hidden" networks)
2017-01-19 18:50:00 +01:00
Adolfo Gómez García
ad5b8dcded Added support for using a proxy on requests methods to services 2017-01-19 18:38:28 +01:00
Adolfo Gómez García
16997b6298 Merging 2.1 fixes 2017-01-19 12:52:33 +01:00
Adolfo Gómez García
519e36e7bd Advancing on admin dashboard & accounting 2017-01-19 12:47:01 +01:00
Adolfo Gómez García
dcc870d8e0 starting also proxy 2017-01-19 04:55:44 +01:00
Adolfo Gómez García
ab8cb7a7e0 Initial UDS Proxy for networks behind firewalls 2017-01-18 20:25:13 +01:00
Adolfo Gómez García
5897cf33f2 Fixed 0024 migration to include also tags
Started accounts admin gui
2017-01-17 08:57:17 +01:00
Adolfo Gómez García
4401985f3c Adding constraints to cache and advancing so we can make use efficiently a predefined pool with uds & uds actor 2017-01-12 03:27:42 +01:00
Adolfo Gómez García
4e972e0aff * Added background color for selected items on admin choices
* Fixes to sample settings file for django 1.10
2017-01-11 02:27:29 +01:00
Adolfo Gómez García
4a16707be3 Merge remote-tracking branch 'origin/v2.1' 2017-01-10 17:20:07 +01:00
Adolfo Gómez García
bf131f896c Merged 2.1 changes 2017-01-10 02:24:04 +01:00
Adolfo Gómez García
506364d578 Merged with 2.1 2016-11-22 11:14:38 +01:00
Adolfo Gómez García
f1704787b8 Merge remote-tracking branch 'origin/v2.1' 2016-10-14 10:59:24 +02:00
Adolfo Gómez García
eb3c61f0ea merge changes from 2.1 2016-10-14 09:33:53 +02:00
Adolfo Gómez García
0711bf5db3 merged from 2.1 2016-10-14 06:56:43 +02:00
Adolfo Gómez García
83a94d0ece updated operations from previous releases 2016-10-14 06:54:38 +02:00
Adolfo Gómez García
5e0ba4990a Merge remote-tracking branch 'origin/v2.1' 2016-10-10 08:31:48 +02:00
Adolfo Gómez García
e7b2811fa1 Added migration 2016-10-10 07:59:31 +02:00
Adolfo Gómez García
f9f1413a3e Updating to 2.1 intermediate version 2016-10-10 07:53:28 +02:00
Adolfo Gómez García
c11953cd03 Merge remote-tracking branch 'origin/v2.1' 2016-10-10 07:52:20 +02:00
Adolfo Gómez García
148a8a1ffc Merge remote-tracking branch 'origin/v2.1' 2016-10-10 07:42:41 +02:00
Adolfo Gómez García
1658e9278a Merge remote-tracking branch 'origin/v2.0' 2016-10-10 07:22:45 +02:00
Adolfo Gómez García
7fc9adae8b Merged 2.0 fixes 2016-09-27 15:52:47 +02:00
Adolfo Gómez García
780f2b4a05 Fixed xen default shadow memory value 2016-09-27 15:51:16 +02:00
Adolfo Gómez García
14e42a6382 Fixing up accounting methods.
Now we have included an "temporal updating", so running services will
get their accounting updated every minute
2016-09-21 10:20:04 +02:00
Adolfo Gómez
d439f78f11 Merge pull request #2 from johnp/patch-1
Add necessary packages to requirements.txt
2016-09-20 08:18:33 +02:00
Johannes Pfrang
610e88cf09 Add necessary packages to requirements.txt
This does not include `pycairo`, as it does not provide an egg and therefore can't be installed via pip.
We should consider `cairocffi` instead, but `pycha` (last update 2013) would have to be patched then.
2016-09-19 11:51:05 +02:00
Adolfo Gómez García
293dd2d9a1 Forgot this :) 2016-09-16 08:30:37 +02:00
Adolfo Gómez García
57b5ae6dcf Fixes & corrections to initial usage accounting.
Fixes.
We already keep "stats" tables, but we think it is better to start using
a well-known location for accounting on usage.
2016-09-16 08:29:52 +02:00
Adolfo Gómez García
8c2b7bf4bb Started pools usage accounting mechanism 2016-09-16 07:55:24 +02:00
Adolfo Gómez García
3113524197 New fix for windomain.. :) 2016-09-12 18:50:40 +02:00
Adolfo Gómez García
2bf6a92de3 Removev "space removal" from OU for WinDomain OS Manager, and removed de
"add" of the dc...dc.
2016-09-12 18:47:35 +02:00
Adolfo Gómez García
8ac5cc068d Merge remote-tracking branch 'origin/v2.0' 2016-09-11 23:04:02 +02:00
Adolfo Gómez García
729b0310bd Merge remote-tracking branch 'origin/v2.0' 2016-09-11 22:21:30 +02:00
Adolfo Gómez García
d229dab41e Finished basic support for ovirt4.
Now we need to have installed ovirt-engine-sdk-python 3.x and 4.x in
order to work properly
2016-09-11 22:13:11 +02:00
Adolfo Gómez García
fb9fa08090 * Adding support for ovirt 4.x keeping support for ovirt 3.x
Big changes on Python ovirt SDK API...
2016-09-11 20:53:45 +02:00
Adolfo Gómez García
682ce5d69f Adding phisical server for user (1 to N users) 2016-09-07 16:46:58 +02:00
Adolfo Gómez García
397bd29ce6 Started experimental x2go support (for linux clients only right now) 2016-09-07 15:33:10 +02:00
Adolfo Gómez García
cba154944d Now password fields are repeated, so we can ensure the vale before
submiting (on admin dashboard)
2016-09-06 23:29:13 +02:00
Adolfo Gómez García
efacaeec7f Viz command no more works correctly (and in fact, was never used), se we
have removed it
2016-08-26 03:08:01 +02:00
Adolfo Gómez García
05c00eb13a Fixed taskManager command for 2.0 also :) 2016-08-26 03:05:54 +02:00
Adolfo Gómez García
9347b3c29b Aded build version to be current datetime. On production environments,
better replace this with datetime/git commit
2016-08-26 03:01:13 +02:00
Adolfo Gómez García
8ba4a9827b Addapted middleware from pre-1.10 to post-1.10 2016-08-26 02:53:38 +02:00
Adolfo Gómez García
14bbf56145 Fixes to work with Django 1.0.
From this commit on master onwards, UDS needs Django 1.10 or greater.
Probably will need some more fixes, but basic ones are done
2016-08-26 02:37:30 +02:00
Adolfo Gómez García
71076a1b63 Merge remote-tracking branch 'origin/v2.0' 2016-08-25 13:21:36 +02:00
Adolfo Gómez García
36dc8ecfd5 Added support for filtering transport on device basis 2016-08-24 11:27:34 +02:00
Adolfo Gómez García
34c6dd9cb5 Now we can notify source platform on REST API login. If not specified,
will try to guest from User Agent String.

This is important because we will add filters by platform to transports,
and we will need to know it.
2016-08-24 09:21:34 +02:00
Adolfo Gómez García
c34d70231c Now we can notify source platform on REST API login. If not specified,
will try to guest from User Agent String.

This is important because we will add filters by platform to transports,
and we will need to know it.
2016-08-24 09:21:34 +02:00
Adolfo Gómez García
5eb9af39f6 Merge remote-tracking branch 'origin/v2.0' 2016-08-17 20:49:23 +02:00
Adolfo Gómez García
1dc58be4fa Merge remote-tracking branch 'origin/v2.0' 2016-07-28 13:36:01 +02:00
Adolfo Gómez García
1e7b729164 Updated 2.x translations 2016-07-26 15:06:29 +02:00
Adolfo Gómez
4a021a4ed4 Merge pull request #1 from glyptodon/cleanup
Clean up and upgrade Guacamole transport backend.
2016-07-26 03:25:09 +02:00
Michael Jumper
7b86ec97eb Include port number in service base URI of OpenUDS. 2016-07-25 03:48:54 -07:00
Michael Jumper
8bb9bf11d5 Read configuration from servlet context. 2016-07-25 03:48:22 -07:00
Adolfo Gómez García
d34e80e360 Merged fixes from 2.0 2016-07-22 18:00:50 +02:00
Adolfo Gómez García
a8853930a2 Minor fixes for actor 2016-07-19 14:18:29 +02:00
Adolfo Gómez García
ac02161eb9 Adding ticket messaging support on actor & server 2016-07-19 13:56:11 +02:00
Adolfo Gómez García
957403a23f Merge remote-tracking branch 'origin/v2.0' 2016-07-18 20:13:30 +02:00
Adolfo Gómez García
c5582c3092 Fixing open nebula 2016-07-18 20:13:14 +02:00
Adolfo Gómez
1c9bc68a66 Fixed header date 2016-07-14 10:50:37 +02:00
Adolfo Gómez García
73192bb515 Merge remote-tracking branch 'origin/v2.0' 2016-07-12 01:44:42 +02:00
Adolfo Gómez
d57ef0cc5e Update README.md 2016-07-11 22:20:07 +02:00
Adolfo Gómez García
105df6e0fb Merge remote-tracking branch 'origin/v2.0' 2016-07-11 22:17:47 +02:00
Adolfo Gómez García
cd859ca0cb Merge remote-tracking branch 'origin/v2.0' 2016-07-11 22:06:23 +02:00
Adolfo Gómez García
5cb5b5f343 Adapted OpenNebula to work with version 4 & version 5 (more tests are
needed right now)
2016-07-11 21:46:42 +02:00
Adolfo Gómez García
f0049cb826 Removing oca python module and using xmlrpc to access opennebula (we have found problems with oca python accesing OpenNebula 5.0) 2016-07-11 03:44:38 +02:00
Adolfo Gómez García
643d8b40e1 Moved to 0023 migration for adding secure tickets 2016-07-10 21:00:49 +02:00
Adolfo Gómez García
e2db15ead7 Merged with 2.0 fixes 2016-07-10 20:59:31 +02:00
Michael Jumper
24dbd884ad Restore use of WebSocket. 2016-07-08 15:45:36 -07:00
Michael Jumper
97fd0b8272 Migrate to Guice and upstream HTTP / WebSocket tunnel implementations. Clarify licensing. 2016-07-08 15:45:36 -07:00
Michael Jumper
6096313cae Add NOTICE file from upstream Apache Guacamole project. 2016-07-07 17:05:19 -07:00
Michael Jumper
6401ca3f05 Correct wording of readme.txt with respect to licensing and upstream project. 2016-07-07 17:03:52 -07:00
Michael Jumper
9f37956e99 Remove IDE-specific cruft. Ignore going forward. 2016-07-07 16:59:56 -07:00
Michael Jumper
0b48306f3e Remove definition for non-existent and unused servlet. 2016-07-07 14:41:06 -07:00
Adolfo Gómez García
83cdd9446b Fixing up password & rdp transport to allow working with tickets 2016-06-28 10:33:10 +02:00
Adolfo Gómez García
3f7fb77086 Started to implement a mechanism to allow a secure sso.
We have started a way for pass the credentials from UDS directly to
VM, without passing it to UDS.
  Currently we are working on a credential provider for windows, that
will interact with UDS. We will release this provider as soon as it is
functional ;-)
2016-06-17 12:15:07 +02:00
Adolfo Gómez García
2683fddfc1 * Added secure tickets, to be used only with secure known sources
(actors, tunnelers, ...)
2016-06-15 01:05:10 +02:00
Adolfo Gómez García
9c49158de2 * Updated translations
* Fixed some literals
2016-06-07 18:30:50 +02:00
1813 changed files with 168488 additions and 187740 deletions

11
.gitignore vendored
View File

@ -7,6 +7,7 @@
*_enterprise.*
.settings/
.ipynb_checkpoints
.idea/
# Debian buildings
*.debhelper*
@ -31,9 +32,6 @@
/client/administration/installer/UDSAdminInstaller/MSChart.exe
/client/administration/installer/UDSAdminInstaller/UDSAdminSetup.exe
# /guacamole-tunnel/
/guacamole-tunnel/target
# /linuxActor/
/linuxActor/udsactor_*
@ -66,8 +64,6 @@
# /server/
*_enterprise
/server/openuds.sublime-project
/server/openuds.sublime-workspace
# /server/src/
/server/src/taskmanager.pid
@ -90,7 +86,6 @@
# /server/src/uds/
/server/src/uds/*_enterprise.py
/server/src/uds/fixtures
/server/src/uds/tests
# /server/src/uds/auths/
/server/src/uds/auths/*-enterprise
@ -164,3 +159,7 @@
/udsService/udsgui/obj/Debug
/udsService/udsgui/obj/Release
/udsService/udsgui/obj/x86
.vscode
.mypy_cache
.pytest_cache

29
LICENSE Normal file
View File

@ -0,0 +1,29 @@
BSD 3-Clause License
Copyright (c) 2022, Virtual Cable S.L.U.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -3,5 +3,13 @@
openuds
=======
OpenUDS Is an Open Source Source project, initiated by Spanish Company Virtualcable and released Open Source with the help of several Spanish Universities.
OpenUDS (Universal Desktop Services) is a multiplatform connection broker for:
- VDI: Windows and Linux virtual desktops administration and deployment
- App virtualization
- Desktop services consolidation
This is an Open Source Source project, initiated by Spanish Company Virtualcable and released Open Source with the help of several Spanish Universities.
Please fell free to contribute to this project.
**Note: Master version is always under heavy development and it is not recommended for use, it will probably have unfixed bugs. Please use the latest stable branch.**

View File

@ -1,6 +1 @@
* Add "Scheduler" to manage pools, and posibbly other operations (Expect to release an version 1.7.1??)
* Improve stats
* Add App Virtualization support
* Add "Meta Pools"
* Manage to connect several UDS in "tree", so one UDS can be provider o another UDS

View File

@ -1 +1 @@
2.2.0
4.0.0

2
actor/.env Normal file
View File

@ -0,0 +1,2 @@
PYTHONPATH=./src:${PYTHONPATH}

8
actor/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
# Debian source builds
udsactor_*.dsc
udsactor_*.tar.xz
udsactor_*.buildinfo
udsactor_*.changes
# And binaries
udsactor*.deb
udsactor*.rpm

View File

@ -1,6 +1,8 @@
#!/usr/bin/make -f
# -*- makefile -*-
.PHONY: install-udsactor install-udsactor-unmanaged
# Directories
SOURCEDIR := ../src
LIBDIR := $(DESTDIR)/usr/share/UDSActor
@ -8,32 +10,26 @@ BINDIR := $(DESTDIR)/usr/bin
SBINDIR = $(DESTDIR)/usr/sbin
APPSDIR := $(DESTDIR)/usr/share/applications
CFGDIR := $(DESTDIR)/etc/udsactor
INITDIR := $(DESTDIR)/etc/init.d
SYSTEMDIR := $(DESTDIR)/etc/systemd/system
POLKITDIR := $(DESTDIR)/usr/share/polkit-1/actions/
XDGAUTOSTARTDIR := $(DESTDIR)/etc/xdg/autostart
KDEAUTOSTARTDIR := $(DESTDIR)/usr/share/autostart
PYC := $(shell find $(SOURCEDIR) -name '*.py[co]')
CACHES := $(shell find $(SOURCEDIR) -name '__pycache__')
CACHES := $(shell find $(SOURCEDIR) -name '__pycache__' -o -name '.mypy_cache')
clean:
rm -rf $(PYC) $(CACHES) $(DESTDIR)
install-udsactor-xrdp:
mkdir -p $(BINDIR)
cp scripts/uds-sesman.sh $(BINDIR)/uds-sesman
cp scripts/uds-wait-session.sh $(BINDIR)/uds-wait-session
chmod 0755 $(BINDIR)/uds-sesman
chmod 0755 $(BINDIR)/uds-wait-session
install-udsactor-nx:
mkdir -p $(BINDIR)
cp scripts/udsnxstart.sh $(BINDIR)/udsnxstart
cp scripts/udsnxstop.sh $(BINDIR)/udsnxstop
chmod 0755 $(BINDIR)/udsnxstart
chmod 0755 $(BINDIR)/udsnxstop
install-udsactor:
install-udsactor: udsactor
install-udsactor-unmanaged: udsactor udsactor-unmanaged
udsactor-unmanaged:
# Overwrite udsactor config is what to be done
cp scripts/UDSActorConfig-unmanaged $(SBINDIR)/UDSActorConfig
udsactor:
rm -rf $(DESTDIR)
mkdir -p $(LIBDIR)
mkdir -p $(BINDIR)
@ -43,20 +39,18 @@ install-udsactor:
mkdir -p $(POLKITDIR)
mkdir -p $(XDGAUTOSTARTDIR)
mkdir -p $(KDEAUTOSTARTDIR)
mkdir $(LIBDIR)/img
# Cleans up .pyc and cache folders
rm -f $(PYC) $(CACHES)
cp -r $(SOURCEDIR)/udsactor $(LIBDIR)/udsactor
cp $(SOURCEDIR)/img/uds.png $(LIBDIR)/img
cp $(SOURCEDIR)/img/uds-icon.png $(LIBDIR)/img
cp $(SOURCEDIR)/UDSActorConfig.py $(LIBDIR)
cp $(SOURCEDIR)/UDSActorUser.py $(LIBDIR)
cp $(SOURCEDIR)/actor_*.py $(LIBDIR)
# QT Dialogs & resources
cp $(SOURCEDIR)/*_ui.py $(LIBDIR)
cp $(SOURCEDIR)/UDSActor_rc.py $(LIBDIR)
cp -r $(SOURCEDIR)/ui $(LIBDIR)/ui
# Menu GUI app
cp desktop/UDS_Actor_Configuration.desktop $(APPSDIR)
@ -67,7 +61,9 @@ install-udsactor:
# scripts
cp scripts/udsactor $(BINDIR)
cp scripts/UDSActorConfig $(SBINDIR)
cp scripts/UDSActorConfig-pkexec $(SBINDIR)
cp scripts/UDSActorTool $(BINDIR)
cp scripts/UDSActorTool-startup $(BINDIR)
cp scripts/udsvapp ${BINDIR}
@ -78,19 +74,16 @@ install-udsactor:
chmod 755 $(BINDIR)/udsactor
chmod 755 $(BINDIR)/udsvapp
chmod 755 $(BINDIR)/UDSActorTool-startup
chmod 755 $(SBINDIR)/UDSActorConfig-pkexec
chmod 755 $(LIBDIR)/UDSActorConfig.py
chmod 755 $(LIBDIR)/UDSActorUser.py
chmod 755 $(SBINDIR)/UDSActor*
chmod 755 $(LIBDIR)/actor_*.py
chmod 644 $(POLKITDIR)/org.openuds.pkexec.UDSActorConfig.policy
# If for red hat based, copy init.d
ifeq ($(DISTRO),rh)
mkdir -p $(INITDIR)
cp debian/udsactor.init $(INITDIR)/udsactor
ln -s /usr/share/UDSActor/UDSActorConfig.py $(SBINDIR)/UDSActorConfig
ln -s /usr/share/UDSActor/UDSActorUser.py $(BINDIR)/UDSActorTool
mkdir -p $(SYSTEMDIR)
cp debian/udsactor.service $(SYSTEMDIR)/
endif
# chmod 0755 $(BINDIR)/udsactor
uninstall:
rm -rf $(LIBDIR)

39
actor/linux/build-packages.sh Executable file
View File

@ -0,0 +1,39 @@
#!/bin/bash
VERSION=`cat ../../VERSION`
RELEASE=1
top=`pwd`
# Debian based
dpkg-buildpackage -b
cat udsactor-template.spec |
sed -e s/"version 0.0.0"/"version ${VERSION}"/g |
sed -e s/"release 1"/"release ${RELEASE}"/g > udsactor-$VERSION.spec
cat udsactor-unmanaged-template.spec |
sed -e s/"version 0.0.0"/"version ${VERSION}"/g |
sed -e s/"release 1"/"release ${RELEASE}"/g > udsactor-unmanaged-$VERSION.spec
# Now fix dependencies for opensuse
# Note that, although on opensuse the library is "libXss1" on newer,
# the LibXscrnSaver is a "capability" and gets libXss1 installed
# So right now, we only need 1 uds actor for both platforms.
# cat udsactor-template.spec |
# sed -e s/"version 0.0.0"/"version ${VERSION}"/g |
# sed -e s/"name udsactor"/"name udsactor-opensuse"/g |
# sed -e s/"libXScrnSaver"/"libXss1"/g > udsactor-opensuse-$VERSION.spec
#for pkg in udsactor-$VERSION.spec udsactor-opensuse-$VERSION.spec; do
for pkg in udsactor-*$VERSION.spec; do
rm -rf rpm
for folder in SOURCES BUILD RPMS SPECS SRPMS; do
mkdir -p rpm/$folder
done
rpmbuild -v -bb --clean --buildroot=$top/rpm/BUILD/$pkg-root --target noarch $pkg 2>&1
done
rpm --addsign ../*rpm
#rm udsactor-$VERSION

2
actor/linux/debian/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/udsactor/
/udsactor-unmanaged/

View File

@ -1,3 +1,33 @@
udsactor (4.0.0) stable; urgency=medium
* Upgraded to 4.0.0 release
-- Adolfo Gómez García <agomez@virtualcable.es> Fri, 1 Jul 2022 15:00:00 +0200
udsactor (3.6.0) stable; urgency=medium
* Upgraded to 3.6.0 release
-- Adolfo Gómez García <agomez@virtualcable.es> Fri, 1 Jul 2022 14:00:00 +0200
udsactor (3.5.0) stable; urgency=medium
* Upgraded to 3.5.0 release
-- Adolfo Gómez García <agomez@virtualcable.es> Fri, 23 Oct 2020 8:00:00 +0200
udsactor (3.0.0) stable; urgency=medium
* Upgraded to 3.0.0 release
-- Adolfo Gómez García <agomez@virtualcable.es> Wed, 10 Jul 2019 9:24:10 +0200
udsactor (2.2.1) stable; urgency=medium
* Upgraded to 2.2.1 release
-- Adolfo Gómez García <agomez@virtualcable.es> Thu, 2 Oct 2018 12:44:12 +0200
udsactor (2.2.0) stable; urgency=medium
* Upgraded to 2.2.0 release

View File

@ -0,0 +1 @@
10

View File

@ -0,0 +1,26 @@
Source: udsactor
Section: admin
Priority: optional
Maintainer: Adolfo Gómez García <agomez@virtualcable.net>
Build-Depends: debhelper (>= 7), po-debconf, dh-systemd (>= 1.5)
Standards-Version: 4.1.4
Homepage: http://www.udsenterprise.com
Package: udsactor
Section: admin
Priority: optional
Architecture: all
Depends: policykit-1(>=0.100), python3-requests (>=0.8.2), python3-pyqt5 (>=4.9), python3-six(>=1.1), python3 (>=3.6), libxss1, xscreensaver, ${misc:Depends}
Recommends: python3-prctl(>=1.1.1)
Description: Actor for Universal Desktop Services (UDS) Broker
This package provides the required components to allow managed machines to work on an environment managed by UDS Broker.
Package: udsactor-unmanaged
Section: admin
Priority: optional
Architecture: all
Depends: policykit-1(>=0.100), python3-requests (>=0.8.2), python3-pyqt5 (>=4.9), python3-six(>=1.1), python3 (>=3.6), libxss1, xscreensaver, ${misc:Depends}
Recommends: python3-prctl(>=1.1.1)
Description: Actor for Universal Desktop Services (UDS) Broker Static Unmanaged machines
This package provides the required components to allow unmanaged machines (static, independent machines) to work on an environment managed by UDS Broker.

View File

@ -3,7 +3,7 @@ Name: udsactor
Maintainer: Adolfo Gómez García
Source: http://www.udsenterprise.com/
Copyright: 2014 Virtual Cable S.L.U.
Copyright: 2014-2019 Virtual Cable S.L.U.
License: BSD-3-clause
License: GPL-2+

3
actor/linux/debian/files Normal file
View File

@ -0,0 +1,3 @@
udsactor-unmanaged_3.6.0_all.deb admin optional
udsactor_3.6.0_all.deb admin optional
udsactor_3.6.0_amd64.buildinfo admin optional

View File

@ -22,8 +22,7 @@ install: build
dh_prep
dh_installdirs
$(MAKE) DESTDIR=$(CURDIR)/debian/udsactor install-udsactor
$(MAKE) DESTDIR=$(CURDIR)/debian/udsactor-xrdp install-udsactor-xrdp
$(MAKE) DESTDIR=$(CURDIR)/debian/udsactor-nx install-udsactor-nx
$(MAKE) DESTDIR=$(CURDIR)/debian/udsactor-unmanaged install-udsactor-unmanaged
binary-arch: build install
# emptyness
binary-indep: build install
@ -32,7 +31,9 @@ binary-indep: build install
dh_installchangelogs
dh_installdocs
dh_installdebconf
dh_installinit --no-start
dh_systemd_enable
dh_installinit --no-restart-on-upgrade --no-start --name=udsactor
dh_systemd_start
dh_python2=python
dh_compress
dh_link

View File

@ -0,0 +1 @@
udsactor.postinst

View File

@ -0,0 +1 @@
udsactor.service

View File

@ -0,0 +1,3 @@
#!/bin/sh -e
exit 0

View File

@ -0,0 +1,28 @@
#!/bin/sh
. /usr/share/debconf/confmodule
set -e
case "$1" in
configure)
/usr/bin/python3 -m compileall /usr/share/UDSActor > /dev/nul 2>&1
# Fix perms so only root can access "masterKey"
chmod 0700 /etc/udsactor
# chmod 0600 /etc/udsactor/udsactor.cfg
chown root:root /etc/udsactor
# chown root:root /etc/udsactor/udsactor.cfg
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
#DEBHELPER#
exit 0

View File

@ -0,0 +1,14 @@
[Unit]
Description=UDS Broker actor
After=network.target
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/usr/share/UDSActor
ExecStart=/usr/bin/python3 actor_service.py start-foreground
PrivateTmp=true
[Install]
WantedBy=multi-user.target

View File

@ -2,7 +2,7 @@
Name=UDS Actor Tool
Comment=UDS Actor Userspace tools
Exec=/usr/bin/UDSActorTool-startup
Icon=/usr/share/UDSActor/img/uds.png
Icon=/usr/share/UDSActor/img/uds-icon.png
Terminal=false
Type=Application
NoDisplay=true

View File

@ -3,7 +3,7 @@ Name=UDS Actor Configuration
Version=1.0
Exec=/usr/sbin/UDSActorConfig-pkexec
Comment=UDS Actor Configuration Application. (Must be executed as root)
Icon=/usr/share/UDSActor/img/uds.png
Icon=/usr/share/UDSActor/img/uds-icon.png
Type=Application
Terminal=false
StartupNotify=true

View File

@ -0,0 +1,6 @@
#!/bin/sh
FOLDER=/usr/share/UDSActor
cd $FOLDER
exec python3 actor_config.py -platform xcb $@

View File

@ -0,0 +1,3 @@
#!/bin/sh
# pkexec env DISPLAY=$DISPLAY QT_X11_NO_MITSHM=1 "/usr/sbin/UDSActorConfig" "$@"
pkexec "/usr/sbin/UDSActorConfig" "$@"

View File

@ -0,0 +1,6 @@
#!/bin/sh
FOLDER=/usr/share/UDSActor
cd $FOLDER
exec python3 actor_config_unmanaged.py -platform xcb $@

View File

@ -0,0 +1,6 @@
#!/bin/sh
FOLDER=/usr/share/UDSActor
cd $FOLDER
exec python3 -s actor_client.py -platform xcb $@

View File

@ -0,0 +1,3 @@
#!/bin/sh
exec /usr/bin/UDSActorTool

View File

@ -3,4 +3,4 @@
FOLDER=/usr/share/UDSActor
cd $FOLDER
python2.7 -m udsactor.linux.UDSActorService $@
exec python3 actor_service.py $@

View File

@ -0,0 +1,3 @@
#!/bin/sh
exec /usr/bin/udsactor login $2 &

View File

@ -0,0 +1,3 @@
#!/bin/sh
exec /usr/bin/udsactor logout $2 &

View File

@ -11,7 +11,7 @@ Release: %{release}
Summary: Actor for Universal Desktop Services (UDS) Broker
License: BSD3
Group: Admin
Requires: python-six python-requests PyQt4 libXScrnSaver
Requires: python3-six python3-requests python3-qt5 libXScrnSaver
Vendor: Virtual Cable S.L.U.
URL: http://www.udsenterprise.com
Provides: udsactor
@ -57,7 +57,7 @@ This package provides the required components to allow this machine to work on a
%defattr(-,root,root)
/etc/udsactor
/etc/xdg/autostart/UDSActorTool.desktop
/etc/init.d/udsactor
/etc/systemd/system/udsactor.service
/usr/bin/UDSActorTool-startup
/usr/bin/udsactor
/usr/bin/udsvapp

View File

@ -0,0 +1,70 @@
%define _topdir %(echo $PWD)/rpm
%define name udsactor-unmanaged
%define version 0.0.0
%define release 1
%define buildroot %{_topdir}/%{name}-%{version}-%{release}-root
BuildRoot: %{buildroot}
Name: %{name}
Version: %{version}
Release: %{release}
Summary: Actor for Universal Desktop Services (UDS) Broker
License: BSD3
Group: Admin
Requires: python3-six python3-requests python3-qt5 libXScrnSaver
Vendor: Virtual Cable S.L.U.
URL: http://www.udsenterprise.com
Provides: udsactor
%define _rpmdir ../
%define _rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm
%install
curdir=`pwd`
cd ../..
make DESTDIR=$RPM_BUILD_ROOT DISTRO=rh install-udsactor-unmanaged
cd $curdir
%clean
rm -rf $RPM_BUILD_ROOT
curdir=`pwd`
cd ../..
make DESTDIR=$RPM_BUILD_ROOT DISTRO=rh clean
cd $curdir
%post
systemctl enable udsactor.service > /dev/null 2>&1
%preun
systemctl disable udsactor.service > /dev/null 2>&1
systemctl stop udsactor.service > /dev/null 2>&1
%postun
# $1 == 0 on uninstall, == 1 on upgrade for preun and postun (just a reminder for me... :) )
if [ $1 -eq 0 ]; then
rm -rf /etc/udsactor
rm /var/log/udsactor.log
fi
# And, posibly, the .pyc leaved behind on /usr/share/UDSActor
rm -rf /usr/share/UDSActor > /dev/null 2>&1
%description
This package provides the required components to allow this unmanaged machine to work on an environment managed by UDS Broker.
%files
%defattr(-,root,root)
/etc/udsactor
/etc/xdg/autostart/UDSActorTool.desktop
/etc/systemd/system/udsactor.service
/usr/bin/UDSActorTool-startup
/usr/bin/udsactor
/usr/bin/udsvapp
/usr/bin/UDSActorTool
/usr/sbin/UDSActorConfig
/usr/sbin/UDSActorConfig-pkexec
/usr/share/UDSActor/*
/usr/share/applications/UDS_Actor_Configuration.desktop
/usr/share/autostart/UDSActorTool.desktop
/usr/share/polkit-1/actions/org.openuds.pkexec.UDSActorConfig.policy

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>net.virtualcable.udsactor.server</string>
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
<key>ProgramArguments</key>
<array>
<string>/Applications/UDSActor.app/Contents/MacOS/udsactor</string>
<string>start</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/var/log/udsactor.log</string>
<key>StandardOutPath</key>
<string>/var/log/nxserver.log</string>
<key>WorkingDirectory</key>
<string>/Applications/UDSActor.app/Contents/Resources/</string>
</dict>
</plist>

1
actor/macos/notes.txt Normal file
View File

@ -0,0 +1 @@
service file (net.virtualcable.udsactor.server.plist) goes in /Library/LaunchDaemons

3
actor/src/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
dist
build
*.spec

76
actor/src/actor_client.py Executable file
View File

@ -0,0 +1,76 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (c) 2020 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
import sys
import os
import PyQt5 # noqa
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QMainWindow
from udsactor.log import logger, INFO
from udsactor.client import UDSClientQApp
from udsactor import platform
if __name__ == "__main__":
logger.setLevel(INFO)
# Ensure idle operations is initialized on start
platform.operations.initIdleDuration(0)
if platform.is_linux:
os.environ['QT_X11_NO_MITSHM'] = '1'
UDSClientQApp.setQuitOnLastWindowClosed(False)
qApp = UDSClientQApp(sys.argv)
if platform.is_windows or platform.is_mac:
# The "hidden window" is not needed on linux
# Not needed on Linux
mw = QMainWindow()
mw.showMinimized() # Start minimized, will be hidden (not destroyed) as soon as qApp.init is invoked
qApp.setMainWindow(mw)
qApp.init()
# Crate a timer to a "dummy" function, so python can check signals from time to time by executing the python interpreter
# Note: Signals are only checked on python code execution, so we create a timer to force call back to python
timer = QTimer(qApp)
timer.start(1000)
timer.timeout.connect(lambda *a: None) # type: ignore # timeout can be connected to a callable
qApp.exec()
# On windows, if no window is created, this point will never be reached.
qApp.end()
logger.debug('Exiting...')

195
actor/src/actor_config.py Executable file
View File

@ -0,0 +1,195 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (c) 2020-2022 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
# pylint: disable=invalid-name
import sys
import os
import logging
import typing
import PyQt5 # Ensures PyQt is included in the package
from PyQt5.QtWidgets import QApplication, QDialog, QFileDialog, QMessageBox
import udsactor
from ui.setup_dialog_ui import Ui_UdsActorSetupDialog
# Not imported at runtime, just for type checking
if typing.TYPE_CHECKING:
from PyQt5.QtWidgets import QLineEdit # pylint: disable=ungrouped-imports
logger = logging.getLogger('actor')
class UDSConfigDialog(QDialog):
_host: str = ''
def __init__(self) -> None:
QDialog.__init__(self, None)
# Get local config config
config: udsactor.types.ActorConfigurationType = udsactor.platform.store.readConfig()
self.ui = Ui_UdsActorSetupDialog()
self.ui.setupUi(self)
self.ui.host.setText(config.host)
self.ui.validateCertificate.setCurrentIndex(1 if config.validateCertificate else 0)
self.ui.postConfigCommand.setText(config.post_command or '')
self.ui.preCommand.setText(config.pre_command or '')
self.ui.runonceCommand.setText(config.runonce_command or '')
self.ui.logLevelComboBox.setCurrentIndex(config.log_level)
if config.host:
self.updateAuthenticators()
self.ui.username.setText('')
self.ui.password.setText('')
self.ui.testButton.setEnabled(bool(config.master_token and config.host))
@property
def api(self) -> udsactor.rest.UDSServerApi:
return udsactor.rest.UDSServerApi(self.ui.host.text(), self.ui.validateCertificate.currentIndex() == 1)
def browse(self, lineEdit: 'QLineEdit', caption: str) -> None:
name = QFileDialog.getOpenFileName(parent=self, caption=caption, directory=os.path.dirname(lineEdit.text()))[0]
if name:
if ' ' in name:
name = '"' + name + '"'
lineEdit.setText(os.path.normpath(name))
def browsePreconnect(self) -> None:
self.browse(self.ui.preCommand, 'Select Preconnect command')
def browseRunOnce(self) -> None:
self.browse(self.ui.runonceCommand, 'Select Runonce command')
def browsePostConfig(self) -> None:
self.browse(self.ui.postConfigCommand, 'Select Postconfig command')
def updateAuthenticators(self) -> None:
if self.ui.host.text() != self._host:
self._host = self.ui.host.text()
self.ui.authenticators.clear()
auth: udsactor.types.AuthenticatorType
auths = list(self.api.enumerateAuthenticators())
if auths:
for auth in auths:
self.ui.authenticators.addItem(auth.auth, userData=auth)
# Last, add "admin" authenticator (for uds root user)
self.ui.authenticators.addItem('Administration', userData=udsactor.types.AuthenticatorType('admin', 'admin', 'admin', 'admin', 1, False))
def textChanged(self) -> None:
enableButtons = bool(self.ui.host.text() and self.ui.username.text() and self.ui.password.text() and self.ui.authenticators.currentText())
self.ui.registerButton.setEnabled(enableButtons)
self.ui.testButton.setEnabled(False) # Only registered information can be checked
def finish(self) -> None:
self.close()
def testUDSServer(self) -> None:
config: udsactor.types.ActorConfigurationType = udsactor.platform.store.readConfig()
if not config.master_token or not config.host:
self.ui.testButton.setEnabled(False)
return
try:
api = udsactor.rest.UDSServerApi(config.host, config.validateCertificate)
if not api.test(config.master_token, udsactor.types.MANAGED):
QMessageBox.information(
self,
'UDS Test',
'Current configured token seems to be invalid for {}. Please, request a new one.'.format(config.host),
QMessageBox.Ok
)
else:
QMessageBox.information(
self,
'UDS Test',
'Configuration for {} seems to be correct.'.format(config.host),
QMessageBox.Ok
)
except Exception:
QMessageBox.information(
self,
'UDS Test',
'Configured host {} seems to be inaccesible.'.format(config.host),
QMessageBox.Ok
)
def registerWithUDS(self) -> None:
# Get network card. Will fail if no network card is available, but don't mind (not contempled)
data: udsactor.types.InterfaceInfoType = next(udsactor.platform.operations.getNetworkInfo())
try:
token = self.api.register(
self.ui.authenticators.currentData().auth,
self.ui.username.text(),
self.ui.password.text(),
udsactor.platform.operations.getComputerName(),
data.ip or '', # IP
data.mac or '', # MAC
self.ui.preCommand.text(),
self.ui.runonceCommand.text(),
self.ui.postConfigCommand.text(),
self.ui.logLevelComboBox.currentIndex() # Loglevel
)
# Store parameters on register for later use, notify user of registration
udsactor.platform.store.writeConfig(
udsactor.types.ActorConfigurationType(
actorType=udsactor.types.MANAGED,
host=self.ui.host.text(),
validateCertificate=self.ui.validateCertificate.currentIndex() == 1,
master_token=token,
pre_command=self.ui.preCommand.text(),
post_command=self.ui.postConfigCommand.text(),
runonce_command=self.ui.runonceCommand.text(),
log_level=self.ui.logLevelComboBox.currentIndex()
)
)
# Enables test button
self.ui.testButton.setEnabled(True)
# Informs the user
QMessageBox.information(self, 'UDS Registration', 'Registration with UDS completed.', QMessageBox.Ok)
except udsactor.rest.RESTError as e:
self.ui.testButton.setEnabled(False)
QMessageBox.critical(self, 'UDS Registration', 'UDS Registration error: {}'.format(e), QMessageBox.Ok)
if __name__ == "__main__":
# If to be run as "sudo" on linux, we will need this to avoid problems
if 'linux' in sys.platform:
os.environ['QT_X11_NO_MITSHM'] = '1'
app = QApplication(sys.argv)
if udsactor.platform.operations.checkPermissions() is False:
QMessageBox.critical(None, 'UDS Actor', 'This Program must be executed as administrator', QMessageBox.Ok) # type: ignore
sys.exit(1)
myapp = UDSConfigDialog()
myapp.show()
sys.exit(app.exec())

View File

@ -0,0 +1,197 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (c) 2020-2022 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
# pylint: disable=invalid-name
import sys
import os
import pickle # nosec: B403
import logging
import typing
import PyQt5 # pylint: disable=unused-import
from PyQt5.QtWidgets import QApplication, QDialog, QMessageBox
import udsactor
import udsactor.tools
from ui.setup_dialog_unmanaged_ui import Ui_UdsActorSetupDialog
# Not imported at runtime, just for type checking
if typing.TYPE_CHECKING:
from PyQt5.QtWidgets import QLineEdit # pylint: disable=ungrouped-imports
logger = logging.getLogger('actor')
class UDSConfigDialog(QDialog):
_host: str = ''
_config: udsactor.types.ActorConfigurationType
def __init__(self) -> None:
QDialog.__init__(self, None)
# Get local config config
self._config = udsactor.platform.store.readConfig()
self.ui = Ui_UdsActorSetupDialog()
self.ui.setupUi(self)
self.ui.host.setText(self._config.host)
self.ui.validateCertificate.setCurrentIndex(
1 if self._config.validateCertificate else 0
)
self.ui.logLevelComboBox.setCurrentIndex(self._config.log_level)
self.ui.serviceToken.setText(self._config.master_token or '')
self.ui.restrictNet.setText(self._config.restrict_net or '')
self.ui.testButton.setEnabled(
bool(self._config.master_token and self._config.host)
)
@property
def api(self) -> udsactor.rest.UDSServerApi:
return udsactor.rest.UDSServerApi(
self.ui.host.text(), self.ui.validateCertificate.currentIndex() == 1
)
def finish(self) -> None:
self.close()
def configChanged(self, text: str) -> None:
self.ui.testButton.setEnabled(
self.ui.host.text() == self._config.host
and self.ui.serviceToken.text() == self._config.master_token
and self.ui.restrictNet.text() == self._config.restrict_net
)
def testUDSServer(self) -> None:
if not self._config.master_token or not self._config.host:
self.ui.testButton.setEnabled(False)
return
try:
api = udsactor.rest.UDSServerApi(
self._config.host, self._config.validateCertificate
)
if not api.test(self._config.master_token, udsactor.types.UNMANAGED):
QMessageBox.information(
self,
'UDS Test',
'Service token seems to be invalid . Please, check token validity.',
QMessageBox.Ok, # type: ignore
)
else:
QMessageBox.information(
self,
'UDS Test',
'Configuration for {} seems to be correct.'.format(
self._config.host
),
QMessageBox.Ok, # type: ignore
)
except Exception:
QMessageBox.information(
self,
'UDS Test',
'Configured host {} seems to be inaccesible.'.format(self._config.host),
QMessageBox.Ok, # type: ignore
)
def saveConfig(self) -> None:
# Ensure restrict_net is empty or a valid subnet
restrictNet = self.ui.restrictNet.text().strip()
if restrictNet:
try:
subnet = udsactor.tools.strToNoIPV4Network(restrictNet)
if not subnet:
raise Exception('Invalid subnet')
except Exception:
QMessageBox.information(
self,
'Invalid subnet',
'Invalid subnet {}. Please, check it.'.format(restrictNet),
QMessageBox.Ok, # type: ignore
)
return
# Store parameters on register for later use, notify user of registration
self._config = udsactor.types.ActorConfigurationType(
actorType=udsactor.types.UNMANAGED,
host=self.ui.host.text(),
validateCertificate=self.ui.validateCertificate.currentIndex() == 1,
master_token=self.ui.serviceToken.text().strip(),
restrict_net=restrictNet,
log_level=self.ui.logLevelComboBox.currentIndex(),
)
udsactor.platform.store.writeConfig(self._config)
# Enables test button
self.ui.testButton.setEnabled(True)
# Informs the user
QMessageBox.information(
self,
'UDS Configuration',
'Configuration saved.',
QMessageBox.Ok, # type: ignore
)
if __name__ == "__main__":
# If run as "sudo" on linux, we will need this to avoid problems
if 'linux' in sys.platform:
os.environ['QT_X11_NO_MITSHM'] = '1'
app = QApplication(sys.argv)
if udsactor.platform.operations.checkPermissions() is False:
QMessageBox.critical(None, 'UDS Actor', 'This Program must be executed as administrator', QMessageBox.Ok) # type: ignore
sys.exit(1)
if len(sys.argv) > 2:
if sys.argv[1] == 'export':
try:
with open(sys.argv[2], 'wb') as export_:
pickle.dump(
udsactor.platform.store.readConfig(), export_, protocol=3
)
except Exception as e:
print('Error exporting configuration file: {}'.format(e))
sys.exit(1)
sys.exit(0)
elif sys.argv[1] == 'import':
try:
with open(sys.argv[2], 'rb') as import_:
config = pickle.load(import_) # nosec: B301: the file is provided by user, so it's not a security issue
udsactor.platform.store.writeConfig(config)
except Exception as e:
print('Error importing configuration file: {}'.format(e))
sys.exit(1)
sys.exit(0)
myapp = UDSConfigDialog()
myapp.show()
sys.exit(app.exec())

36
actor/src/actor_service.py Executable file
View File

@ -0,0 +1,36 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (c) 2020-2022 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
from udsactor import platform
if __name__ == "__main__":
platform.runner.run()

View File

@ -1,327 +1,398 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>UdsActorSetupDialog</class>
<widget class="QDialog" name="UdsActorSetupDialog">
<property name="windowModality">
<enum>Qt::WindowModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>243</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Verdana</family>
<pointsize>9</pointsize>
</font>
</property>
<property name="windowTitle">
<string>UDS Actor Configuration</string>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="locale">
<locale language="English" country="UnitedStates"/>
</property>
<property name="sizeGripEnabled">
<bool>false</bool>
</property>
<property name="modal">
<bool>true</bool>
</property>
<widget class="QPushButton" name="testButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>20</x>
<y>160</y>
<width>361</width>
<height>23</height>
</rect>
</property>
<property name="toolTip">
<string>Click to test the selecter parameters</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Click on this button to test the server host and master key parameters.&lt;/p&gt;&lt;p&gt;A window will be displayed with results after the test is executed.&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;This button will only be active if all parameters are filled.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Test parameters</string>
</property>
</widget>
<widget class="QPushButton" name="saveButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>20</x>
<y>190</y>
<width>101</width>
<height>23</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Accepts changes and saves them</string>
</property>
<property name="whatsThis">
<string>Clicking on this button will accept all changes and save them, closing the configuration window</string>
</property>
<property name="text">
<string>Accept &amp;&amp; Save</string>
</property>
</widget>
<widget class="QPushButton" name="cancelButton">
<property name="geometry">
<rect>
<x>260</x>
<y>190</y>
<width>121</width>
<height>23</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Cancel all changes and discard them</string>
</property>
<property name="whatsThis">
<string>Discards all changes and closes the configuration window</string>
</property>
<property name="text">
<string>Cancel &amp;&amp; Discard</string>
</property>
</widget>
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>20</x>
<y>20</y>
<width>361</width>
<height>131</height>
</rect>
</property>
<layout class="QFormLayout" name="formLayout">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<property name="verticalSpacing">
<number>16</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>UDS Server Host</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="host">
<property name="acceptDrops">
<bool>false</bool>
</property>
<property name="toolTip">
<string>Uds Broker Server Addres. Use IP or FQDN</string>
</property>
<property name="whatsThis">
<string>Enter here the UDS Broker Addres using either its IP address or its FQDN address</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>UDS Master Key</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="masterKey">
<property name="toolTip">
<string>Master key to communicate with UDS Broker</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enter the Master Key (found on&lt;span style=&quot; font-weight:600;&quot;&gt; UDS Configuration&lt;/span&gt; section) of the UDS Broker to allow communication of the Actor with Broker&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Security</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="useSSl">
<property name="toolTip">
<string>Select communication security with broker</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Select the security for communications with UDS Broker.&lt;/p&gt;&lt;p&gt;The recommended method of communication is &lt;span style=&quot; font-weight:600;&quot;&gt;Use SSL&lt;/span&gt;, but selection needs to be acording to your broker configuration.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<item>
<property name="text">
<string>Do not use SSL</string>
</property>
</item>
<item>
<property name="text">
<string>Use SSL</string>
</property>
</item>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="logLevelLabel">
<property name="text">
<string>Log Level</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="logLevelComboBox">
<property name="currentIndex">
<number>1</number>
</property>
<property name="frame">
<bool>true</bool>
</property>
<item>
<property name="text">
<string notr="true">DEBUG</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">INFO</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">ERROR</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">FATAL</string>
</property>
</item>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>host</sender>
<signal>textChanged(QString)</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>textChanged()</slot>
<hints>
<hint type="sourcelabel">
<x>123</x>
<y>31</y>
</hint>
<hint type="destinationlabel">
<x>143</x>
<y>48</y>
</hint>
</hints>
</connection>
<connection>
<sender>masterKey</sender>
<signal>textChanged(QString)</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>textChanged()</slot>
<hints>
<hint type="sourcelabel">
<x>258</x>
<y>75</y>
</hint>
<hint type="destinationlabel">
<x>299</x>
<y>84</y>
</hint>
</hints>
</connection>
<connection>
<sender>cancelButton</sender>
<signal>pressed()</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>cancelAndDiscard()</slot>
<hints>
<hint type="sourcelabel">
<x>315</x>
<y>165</y>
</hint>
<hint type="destinationlabel">
<x>231</x>
<y>161</y>
</hint>
</hints>
</connection>
<connection>
<sender>testButton</sender>
<signal>pressed()</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>testParameters()</slot>
<hints>
<hint type="sourcelabel">
<x>239</x>
<y>132</y>
</hint>
<hint type="destinationlabel">
<x>285</x>
<y>185</y>
</hint>
</hints>
</connection>
<connection>
<sender>saveButton</sender>
<signal>pressed()</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>acceptAndSave()</slot>
<hints>
<hint type="sourcelabel">
<x>71</x>
<y>165</y>
</hint>
<hint type="destinationlabel">
<x>124</x>
<y>181</y>
</hint>
</hints>
</connection>
</connections>
<slots>
<slot>textChanged()</slot>
<slot>cancelAndDiscard()</slot>
<slot>testParameters()</slot>
<slot>acceptAndSave()</slot>
</slots>
</ui>
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<author>Adolfo Gómez</author>
<class>UdsActorSetupDialog</class>
<widget class="QDialog" name="UdsActorSetupDialog">
<property name="windowModality">
<enum>Qt::WindowModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>601</width>
<height>243</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Verdana</family>
<pointsize>9</pointsize>
</font>
</property>
<property name="contextMenuPolicy">
<enum>Qt::DefaultContextMenu</enum>
</property>
<property name="windowTitle">
<string>UDS Actor Configuration Tool</string>
</property>
<property name="windowIcon">
<iconset resource="uds.qrc">
<normaloff>:/img/img/uds-icon.png</normaloff>:/img/img/uds-icon.png</iconset>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="locale">
<locale language="English" country="UnitedStates"/>
</property>
<property name="sizeGripEnabled">
<bool>false</bool>
</property>
<property name="modal">
<bool>true</bool>
</property>
<widget class="QPushButton" name="saveButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>10</x>
<y>210</y>
<width>181</width>
<height>23</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>181</width>
<height>0</height>
</size>
</property>
<property name="contextMenuPolicy">
<enum>Qt::DefaultContextMenu</enum>
</property>
<property name="toolTip">
<string>Click to register Actor with UDS Broker</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Click on this button to register Actor with UDS Broker.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Save Configuration</string>
</property>
</widget>
<widget class="QPushButton" name="closeButton">
<property name="geometry">
<rect>
<x>410</x>
<y>210</y>
<width>171</width>
<height>23</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>171</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Closes UDS Actor Configuration (discard pending changes if any)</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Exits the UDS Actor Configuration Tool&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Close</string>
</property>
</widget>
<widget class="QPushButton" name="testButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>210</x>
<y>210</y>
<width>181</width>
<height>23</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>181</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Click to test existing configuration (disabled if no config found)</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Click on this button to test the server host and assigned toen.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Test configuration</string>
</property>
</widget>
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>571</width>
<height>191</height>
</rect>
</property>
<layout class="QFormLayout" name="formLayout">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<property name="verticalSpacing">
<number>16</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_security">
<property name="text">
<string>SSL Validation</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="validateCertificate">
<property name="toolTip">
<string>Select communication security with broker</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Select the security for communications with UDS Broker.&lt;/p&gt;&lt;p&gt;The recommended method of communication is &lt;span style=&quot; font-weight:600;&quot;&gt;Use SSL&lt;/span&gt;, but selection needs to be acording to your broker configuration.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<item>
<property name="text">
<string>Ignore certificate</string>
</property>
</item>
<item>
<property name="text">
<string>Verify certificate</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_host">
<property name="text">
<string>UDS Server</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="host">
<property name="acceptDrops">
<bool>false</bool>
</property>
<property name="toolTip">
<string>Uds Broker Server Addres. Use IP or FQDN</string>
</property>
<property name="whatsThis">
<string>Enter here the UDS Broker Addres using either its IP address or its FQDN address</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_serviceToken">
<property name="text">
<string>Service Token</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="serviceToken">
<property name="toolTip">
<string>UDS Service Token</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Token of the service on UDS platform&lt;/p&gt;&lt;p&gt;This token can be obtainend from the service configuration on UDS.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_loglevel">
<property name="text">
<string>Log Level</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QComboBox" name="logLevelComboBox">
<property name="currentIndex">
<number>1</number>
</property>
<property name="frame">
<bool>true</bool>
</property>
<item>
<property name="text">
<string notr="true">DEBUG</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">INFO</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">ERROR</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">FATAL</string>
</property>
</item>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_restrictNet">
<property name="text">
<string>Restrict Net</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="restrictNet">
<property name="toolTip">
<string>Restrict valid detection of network interfaces to this network.</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Restrics valid detection of network interfaces.&lt;/p&gt;&lt;p&gt;Note: Use this field only in case of several network interfaces, so UDS knows which one is the interface where the user will be connected..&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
</layout>
<zorder>label_host</zorder>
<zorder>host</zorder>
<zorder>label_serviceToken</zorder>
<zorder>serviceToken</zorder>
<zorder>validateCertificate</zorder>
<zorder>label_security</zorder>
<zorder>label_loglevel</zorder>
<zorder>logLevelComboBox</zorder>
<zorder>label_restrictNet</zorder>
<zorder>restrictNet</zorder>
</widget>
</widget>
<resources>
<include location="uds.qrc"/>
</resources>
<connections>
<connection>
<sender>closeButton</sender>
<signal>clicked()</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>finish()</slot>
<hints>
<hint type="sourcelabel">
<x>315</x>
<y>165</y>
</hint>
<hint type="destinationlabel">
<x>231</x>
<y>161</y>
</hint>
</hints>
</connection>
<connection>
<sender>testButton</sender>
<signal>clicked()</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>testUDSServer()</slot>
<hints>
<hint type="sourcelabel">
<x>300</x>
<y>281</y>
</hint>
<hint type="destinationlabel">
<x>294</x>
<y>153</y>
</hint>
</hints>
</connection>
<connection>
<sender>saveButton</sender>
<signal>clicked()</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>saveConfig()</slot>
<hints>
<hint type="sourcelabel">
<x>100</x>
<y>191</y>
</hint>
<hint type="destinationlabel">
<x>297</x>
<y>109</y>
</hint>
</hints>
</connection>
<connection>
<sender>host</sender>
<signal>textChanged(QString)</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>configChanged()</slot>
<hints>
<hint type="sourcelabel">
<x>341</x>
<y>61</y>
</hint>
<hint type="destinationlabel">
<x>297</x>
<y>109</y>
</hint>
</hints>
</connection>
<connection>
<sender>serviceToken</sender>
<signal>textChanged(QString)</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>configChanged()</slot>
<hints>
<hint type="sourcelabel">
<x>341</x>
<y>100</y>
</hint>
<hint type="destinationlabel">
<x>297</x>
<y>109</y>
</hint>
</hints>
</connection>
<connection>
<sender>restrictNet</sender>
<signal>textChanged(QString)</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>configChanged()</slot>
<hints>
<hint type="sourcelabel">
<x>341</x>
<y>139</y>
</hint>
<hint type="destinationlabel">
<x>295</x>
<y>121</y>
</hint>
</hints>
</connection>
</connections>
<slots>
<slot>finish()</slot>
<slot>saveConfig()</slot>
<slot>testUDSServer()</slot>
<slot>configChanged()</slot>
</slots>
</ui>

View File

@ -0,0 +1,660 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<author>Adolfo Gómez</author>
<class>UdsActorSetupDialog</class>
<widget class="QDialog" name="UdsActorSetupDialog">
<property name="windowModality">
<enum>Qt::WindowModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>590</width>
<height>307</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Verdana</family>
<pointsize>9</pointsize>
</font>
</property>
<property name="contextMenuPolicy">
<enum>Qt::DefaultContextMenu</enum>
</property>
<property name="windowTitle">
<string>UDS Actor Configuration Tool</string>
</property>
<property name="windowIcon">
<iconset resource="uds.qrc">
<normaloff>:/img/img/uds-icon.png</normaloff>:/img/img/uds-icon.png</iconset>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="locale">
<locale language="English" country="UnitedStates"/>
</property>
<property name="sizeGripEnabled">
<bool>false</bool>
</property>
<property name="modal">
<bool>true</bool>
</property>
<widget class="QPushButton" name="registerButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>10</x>
<y>270</y>
<width>181</width>
<height>23</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>181</width>
<height>0</height>
</size>
</property>
<property name="contextMenuPolicy">
<enum>Qt::DefaultContextMenu</enum>
</property>
<property name="toolTip">
<string>Click to register Actor with UDS Broker</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Click on this button to register Actor with UDS Broker.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Register with UDS</string>
</property>
</widget>
<widget class="QPushButton" name="closeButton">
<property name="geometry">
<rect>
<x>410</x>
<y>270</y>
<width>171</width>
<height>23</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>171</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Closes UDS Actor Configuration (discard pending changes if any)</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Exits the UDS Actor Configuration Tool&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Close</string>
</property>
</widget>
<widget class="QTabWidget" name="tabWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>571</width>
<height>241</height>
</rect>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab_uds">
<attribute name="title">
<string>UDS Server</string>
</attribute>
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>551</width>
<height>191</height>
</rect>
</property>
<layout class="QFormLayout" name="formLayout">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<property name="verticalSpacing">
<number>16</number>
</property>
<item row="1" column="0">
<widget class="QLabel" name="label_host">
<property name="text">
<string>UDS Server</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="host">
<property name="acceptDrops">
<bool>false</bool>
</property>
<property name="toolTip">
<string>Uds Broker Server Addres. Use IP or FQDN</string>
</property>
<property name="whatsThis">
<string>Enter here the UDS Broker Addres using either its IP address or its FQDN address</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_auth">
<property name="text">
<string>Authenticator</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="authenticators">
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Select the UDS Broker authenticator for credentials validation&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_username">
<property name="text">
<string>Username</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="username">
<property name="toolTip">
<string>UDS user with administration rights (Will not be stored on template)</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Administrator user on UDS Server.&lt;/p&gt;&lt;p&gt;Note: This credential will not be stored on client. Will be used to obtain an unique token for this image.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_password">
<property name="text">
<string>Password</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="password">
<property name="toolTip">
<string>Password for user (Will not be stored on template)</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Administrator password for the user on UDS Server.&lt;/p&gt;&lt;p&gt;Note: This credential will not be stored on client. Will be used to obtain an unique key for this image.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="validateCertificate">
<property name="toolTip">
<string>Select communication security with broker</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Select the security for communications with UDS Broker.&lt;/p&gt;&lt;p&gt;The recommended method of communication is &lt;span style=&quot; font-weight:600;&quot;&gt;Use SSL&lt;/span&gt;, but selection needs to be acording to your broker configuration.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<item>
<property name="text">
<string>Ignore certificate</string>
</property>
</item>
<item>
<property name="text">
<string>Verify certificate</string>
</property>
</item>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_security">
<property name="text">
<string>SSL Validation</string>
</property>
</widget>
</item>
</layout>
<zorder>label_host</zorder>
<zorder>host</zorder>
<zorder>label_auth</zorder>
<zorder>label_username</zorder>
<zorder>username</zorder>
<zorder>label_password</zorder>
<zorder>password</zorder>
<zorder>validateCertificate</zorder>
<zorder>label_security</zorder>
<zorder>authenticators</zorder>
</widget>
</widget>
<widget class="QWidget" name="tab_advanced">
<attribute name="title">
<string>Advanced</string>
</attribute>
<widget class="QWidget" name="layoutWidget_2">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>551</width>
<height>161</height>
</rect>
</property>
<layout class="QFormLayout" name="formLayout_2">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<property name="verticalSpacing">
<number>16</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_host_2">
<property name="text">
<string>Preconnect</string>
</property>
</widget>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>4</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<item>
<widget class="QLineEdit" name="preCommand">
<property name="acceptDrops">
<bool>false</bool>
</property>
<property name="toolTip">
<string>Pre connection command. Executed just before the user is connected to machine.</string>
</property>
<property name="whatsThis">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="browsePreconnectButton">
<property name="text">
<string>Browse</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_username_2">
<property name="text">
<string>Runonce</string>
</property>
</widget>
</item>
<item row="1" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>4</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<item>
<widget class="QLineEdit" name="runonceCommand">
<property name="toolTip">
<string>Run once command. Executed on first boot, just before UDS does anything.</string>
</property>
<property name="whatsThis">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="browseRunOnceButton">
<property name="text">
<string>Browse</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_password_2">
<property name="text">
<string>Postconfig</string>
</property>
</widget>
</item>
<item row="2" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="spacing">
<number>4</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<item>
<widget class="QLineEdit" name="postConfigCommand">
<property name="toolTip">
<string>Command to execute after UDS finalizes the VM configuration.</string>
</property>
<property name="whatsThis">
<string/>
</property>
<property name="echoMode">
<enum>QLineEdit::Normal</enum>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="browsePostConfigButton">
<property name="text">
<string>Browse</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_loglevel">
<property name="text">
<string>Log Level</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="logLevelComboBox">
<property name="currentIndex">
<number>1</number>
</property>
<property name="frame">
<bool>true</bool>
</property>
<item>
<property name="text">
<string notr="true">DEBUG</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">INFO</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">ERROR</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">FATAL</string>
</property>
</item>
</widget>
</item>
</layout>
</widget>
</widget>
</widget>
<widget class="QPushButton" name="testButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>210</x>
<y>270</y>
<width>181</width>
<height>23</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>181</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Click to test existing configuration (disabled if no config found)</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Click on this button to test the server host and assigned toen.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Test configuration</string>
</property>
</widget>
</widget>
<resources>
<include location="uds.qrc"/>
</resources>
<connections>
<connection>
<sender>closeButton</sender>
<signal>clicked()</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>finish()</slot>
<hints>
<hint type="sourcelabel">
<x>315</x>
<y>165</y>
</hint>
<hint type="destinationlabel">
<x>231</x>
<y>161</y>
</hint>
</hints>
</connection>
<connection>
<sender>registerButton</sender>
<signal>clicked()</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>registerWithUDS()</slot>
<hints>
<hint type="sourcelabel">
<x>239</x>
<y>132</y>
</hint>
<hint type="destinationlabel">
<x>285</x>
<y>185</y>
</hint>
</hints>
</connection>
<connection>
<sender>host</sender>
<signal>textChanged(QString)</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>textChanged()</slot>
<hints>
<hint type="sourcelabel">
<x>239</x>
<y>59</y>
</hint>
<hint type="destinationlabel">
<x>199</x>
<y>150</y>
</hint>
</hints>
</connection>
<connection>
<sender>username</sender>
<signal>textChanged(QString)</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>textChanged()</slot>
<hints>
<hint type="sourcelabel">
<x>239</x>
<y>98</y>
</hint>
<hint type="destinationlabel">
<x>199</x>
<y>150</y>
</hint>
</hints>
</connection>
<connection>
<sender>password</sender>
<signal>textChanged(QString)</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>textChanged()</slot>
<hints>
<hint type="sourcelabel">
<x>239</x>
<y>137</y>
</hint>
<hint type="destinationlabel">
<x>199</x>
<y>150</y>
</hint>
</hints>
</connection>
<connection>
<sender>browsePreconnectButton</sender>
<signal>clicked()</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>browsePreconnect()</slot>
<hints>
<hint type="sourcelabel">
<x>430</x>
<y>60</y>
</hint>
<hint type="destinationlabel">
<x>243</x>
<y>150</y>
</hint>
</hints>
</connection>
<connection>
<sender>browsePostConfigButton</sender>
<signal>clicked()</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>browsePostConfig()</slot>
<hints>
<hint type="sourcelabel">
<x>430</x>
<y>142</y>
</hint>
<hint type="destinationlabel">
<x>243</x>
<y>150</y>
</hint>
</hints>
</connection>
<connection>
<sender>browseRunOnceButton</sender>
<signal>clicked()</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>browseRunOnce()</slot>
<hints>
<hint type="sourcelabel">
<x>430</x>
<y>101</y>
</hint>
<hint type="destinationlabel">
<x>243</x>
<y>150</y>
</hint>
</hints>
</connection>
<connection>
<sender>host</sender>
<signal>editingFinished()</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>updateAuthenticators()</slot>
<hints>
<hint type="sourcelabel">
<x>343</x>
<y>98</y>
</hint>
<hint type="destinationlabel">
<x>294</x>
<y>153</y>
</hint>
</hints>
</connection>
<connection>
<sender>authenticators</sender>
<signal>currentTextChanged(QString)</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>textChanged()</slot>
<hints>
<hint type="sourcelabel">
<x>343</x>
<y>137</y>
</hint>
<hint type="destinationlabel">
<x>294</x>
<y>153</y>
</hint>
</hints>
</connection>
<connection>
<sender>testButton</sender>
<signal>clicked()</signal>
<receiver>UdsActorSetupDialog</receiver>
<slot>testUDSServer()</slot>
<hints>
<hint type="sourcelabel">
<x>300</x>
<y>281</y>
</hint>
<hint type="destinationlabel">
<x>294</x>
<y>153</y>
</hint>
</hints>
</connection>
</connections>
<slots>
<slot>textChanged()</slot>
<slot>finish()</slot>
<slot>registerWithUDS()</slot>
<slot>browsePreconnect()</slot>
<slot>browseRunOnce()</slot>
<slot>browsePostConfig()</slot>
<slot>updateAuthenticators()</slot>
<slot>testUDSServer()</slot>
</slots>
</ui>

View File

@ -0,0 +1,5 @@
<RCC>
<qresource prefix="img">
<file>../img/uds-icon.png</file>
</qresource>
</RCC>

16
actor/src/designer/update.sh Executable file
View File

@ -0,0 +1,16 @@
#!/bin/bash
function process {
# pyuic4 about-dialog.ui -o about_dialog_ui.py -x
# pyuic4 message-dialog.ui -o message_dialog_ui.py
pyuic5 setup-dialog.ui -o ../ui/setup_dialog_ui.py --import-from=ui
pyuic5 setup-dialog-unmanaged.ui -o ../ui/setup_dialog_unmanaged_ui.py --import-from=ui
}
pyrcc5 uds.qrc -o ../ui/uds_rc.py
# process current directory ui's
process

BIN
actor/src/img/uds-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@ -25,16 +25,14 @@
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
# pylint: disable=unused-wildcard-import,wildcard-import
from . import types
from . import rest
from . import platform
from __future__ import unicode_literals
import sys
if sys.platform == 'win32':
from .windows.operations import * # @UnusedWildImport
else:
from .linux.operations import * # @UnusedWildImport
__title__ = 'udsactor'
__author__ = 'Adolfo Gómez <dkmaster@dkmon.com>'
__license__ = "BSD 3-clause"
__copyright__ = "Copyright 2014-2022 VirtualCable S.L.U."

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014 Virtual Cable S.L.
# Copyright (c) 2014-2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
@ -29,24 +29,23 @@
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
from __future__ import unicode_literals
import logging
import os
import sys
import tempfile
import os.path
import secrets
import typing
if sys.platform.startswith('linux'):
from os.path import expanduser
logFile = expanduser('~/udsclient.log')
else:
logFile = os.path.join(tempfile.gettempdir(), b'udsclient.log')
# Not imported at runtime, just for type checking
if typing.TYPE_CHECKING:
from . import types
logging.basicConfig(
filename=logFile,
filemode='a',
format='%(levelname)s %(asctime)s %(message)s',
level=logging.DEBUG
)
logger = logging.getLogger('udsclient')
def saveCertificate(certInfo: 'types.CertificateInfoType') -> typing.Tuple[str, str]:
"""
Returns CertificateFile, Password tuple generated from certInfo
"""
certFile = os.path.join(tempfile.gettempdir(), secrets.token_hex(16))
with open(certFile, "w") as f:
f.write(certInfo.private_key+certInfo.server_certificate)
return certFile, certInfo.password

View File

@ -0,0 +1,251 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
import threading
import time
import datetime
import signal
import typing
from PyQt5.QtWidgets import QApplication, QMessageBox
from PyQt5.QtCore import QByteArray, QBuffer, QIODevice, pyqtSignal
from . import rest
from . import tools
from . import platform
from .log import logger
from .http import client
# Not imported at runtime, just for type checking
if typing.TYPE_CHECKING:
from . import types
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QMainWindow
class UDSClientQApp(QApplication):
_app: 'UDSActorClient'
_initialized: bool
_mainWindow: typing.Optional['QMainWindow']
message = pyqtSignal(str, name='message')
def __init__(self, args) -> None:
super().__init__(args)
self._mainWindow = None
self._initialized = False
# This will be invoked on session close
self.commitDataRequest.connect(self.end) # type: ignore # Will be invoked on session close, to gracely close app
# self.aboutToQuit.connect(self.end)
self.message.connect(self.showMessage) # type: ignore # there are problems with Pylance and connects on PyQt5... :)
# Execute backgroup thread for actions
self._app = UDSActorClient(self)
def init(self) -> None:
# Notify loging and mark it
logger.debug('Starting APP')
if self._mainWindow:
self._mainWindow.hide()
self._app.start()
self._initialized = True
def end(self, sessionManager=None) -> None: # pylint: disable=unused-argument
if not self._initialized:
return
self._initialized = False
logger.debug('Stopping app thread')
self._app.stop()
self._app.join()
def showMessage(self, message: str) -> None:
QMessageBox.information(None, 'Message', message) # type: ignore
def setMainWindow(self, mw: 'QMainWindow'):
self._mainWindow = mw
class UDSActorClient(threading.Thread): # pylint: disable=too-many-instance-attributes
_running: bool
_forceLogoff: bool
_extraLogoff: str
_qApp: UDSClientQApp
_listener: client.HTTPServerThread
_loginInfo: typing.Optional['types.LoginResultInfoType']
_notified: bool
_notifiedDeadline: bool
_sessionStartTime: datetime.datetime
api: rest.UDSClientApi
def __init__(self, qApp: QApplication):
super().__init__()
self.api = rest.UDSClientApi() # Self initialized
self._qApp = typing.cast(UDSClientQApp, qApp)
self._running = False
self._forceLogoff = False
self._extraLogoff = ''
self._listener = client.HTTPServerThread(self)
self._loginInfo = None
self._notified = False
self._notifiedDeadline = False
# Capture stop signals..
logger.debug('Setting signals...')
signal.signal(signal.SIGINT, self.stopSignal)
signal.signal(signal.SIGTERM, self.stopSignal)
def stopSignal(self, signum, frame) -> None: # pylint: disable=unused-argument
logger.info('Stop signal received')
self.stop()
def checkDeadLine(self):
if self._loginInfo is None or not self._loginInfo.dead_line: # No deadline check
return
remainingTime = self._loginInfo.dead_line - (datetime.datetime.now() - self._sessionStartTime).total_seconds()
logger.debug('Remaining time: {}'.format(remainingTime))
if not self._notifiedDeadline and remainingTime < 300: # With five minutes, show a warning message
self._notifiedDeadline = True
self._showMessage('Your session will expire in less that 5 minutes. Please, save your work and disconnect.')
return
if remainingTime <= 0:
logger.debug('Session dead line reached. Logging out')
self._running = False
self._forceLogoff = True
def checkIdle(self) -> None:
if self._loginInfo is None or not self._loginInfo.max_idle: # No idle check
return
idleTime = platform.operations.getIdleDuration()
remainingTime = self._loginInfo.max_idle - idleTime
logger.debug('Idle: %s Remaining: %s', idleTime, remainingTime)
if remainingTime > 120: # Reset show Warning dialog if we have more than 5 minutes left
self._notified = False
return
if not self._notified and remainingTime < 120: # With two minutes, show a warning message
self._notified = True
self._showMessage('You have been idle for too long. The session will end if you don\'t resume operations.')
if remainingTime <= 0:
logger.info('User has been idle for too long, exiting from session')
self._extraLogoff = ' (idle: {} vs {})'.format(int(idleTime), self._loginInfo.max_idle)
self._running = False
self._forceLogoff = True
def run(self) -> None:
logger.debug('UDS Actor thread')
self._listener.start() # async listener for service
self._running = True
self._sessionStartTime = datetime.datetime.now()
time.sleep(0.4) # Wait a bit before sending login
try:
# Notify loging and mark it
user, sessionType = platform.operations.getCurrentUser(), platform.operations.getSessionType()
self._loginInfo = self.api.login(user, sessionType)
if self._loginInfo.max_idle:
platform.operations.initIdleDuration(self._loginInfo.max_idle)
while self._running:
# Check Idle & dead line
self.checkIdle()
self.checkDeadLine()
time.sleep(1.22) # Sleeps between loop iterations
self.api.logout(user + self._extraLogoff, sessionType)
logger.info('Notified logout for %s (%s)', user, sessionType) # Log logout
# Clean up login info
self._loginInfo = None
except Exception as e:
logger.error('Error on client loop: %s', e)
self._listener.stop() # async listener for service
# Notify exit to qt
QApplication.quit()
if self._forceLogoff:
time.sleep(1.3) # Wait a bit before forcing logoff
platform.operations.loggoff()
def _showMessage(self, message: str) -> None:
self._qApp.message.emit(message) # type: ignore # there are problems with Pylance and connects on PyQt5... :)
def stop(self) -> None:
logger.debug('Stopping client Service')
self._running = False
def logout(self) -> typing.Any:
self._forceLogoff = True
self._running = False
return 'ok'
def message(self, msg: str) -> typing.Any:
threading.Thread(target=self._showMessage, args=(msg,)).start()
return 'ok'
def screenshot(self) -> typing.Any:
'''
On windows, an RDP session with minimized screen will render "black screen"
So only when user is using RDP connection will return an "actual" screenshot
'''
pixmap: 'QPixmap' = self._qApp.primaryScreen().grabWindow(0) # type: ignore
ba = QByteArray()
buffer = QBuffer(ba)
buffer.open(QIODevice.WriteOnly) # type: ignore
pixmap.save(buffer, 'PNG')
buffer.close()
scrBase64 = bytes(ba.toBase64()).decode() # type: ignore # there are problems with Pylance and connects on PyQt5... :)
logger.debug('Screenshot length: %s', len(scrBase64))
return scrBase64 # 'result' of JSON will contain base64 of screen
def script(self, script: str) -> typing.Any:
tools.ScriptExecutorThread(script).start()
return 'ok'

View File

@ -0,0 +1,7 @@
from .. import types
defaultCertificate = types.CertificateInfoType(
private_key='-----BEGIN ENCRYPTED PRIVATE KEY-----\nMIIFHTBPBgkqhkiG9w0BBQ0wQjApBgkqhkiG9w0BBQwwHAQIfG2+iMYJBswCAggA\nMAwGCCqGSIb3DQIJBQAwFQYJKwYBBAGXVQECBAhCusU5R8ulZQSCBMgheyZ81Qkq\n+TcbPeBlUGCFllSUOo7xQ/OuwYSmzLx8LpN0hQNv4azF6MYH+I8eMSPd3A547yW3\nJE4GjIBfRvcq2X1UZ2FQfECU9UP0ShPuPrVhIh6ZZklmlRjbIF8hGfSzXAuafQb+\n4wXXsofahi/SPgqK1Gw65nRiMcoeRZchJkx8pBgKVWED6Cbh6aAkeqkVKPnsebiV\n6kE+0C7+hgNUbyRd46R+/5NXzPjg4ItfSak+PLzQ1KeRv4Cu6DdzRKJ4V9/MlNdU\nNNEkSVSEaRn4sv+eByU4uxBMaSmD1tLc/A7OmaAeRpIQvls3Zcf2+V0+anAtjbjd\n6eIb2nceey+dKFm4ewlR4mXuzj1QowRTHceOIkvKIrOODxdy9M5hNBZ7VLum29tY\nRhqtmEH2BZZJ8SpM2SsEZzPxqJFiVZbvpeOKjxlMyn1dFWn1rP8uMnfuMKqBaj5D\nd5clOPlwebYw5UpM6Vvawu4nGqxECTSWcfNlDYO5U/0Fsm9+JIrJ7Buukgv2+rhs\nD/6oUK9NB8AW9qnDr7UxbC/ujhkKQG3woaZlPbiMs5WQaS+DrTg4N49wPzS0h+ME\nF8ZzuPnd6+sMGQioCIrQAZ08rk54oCijBhFh8/EQhQKGsMFw2swi9t6+FVU5Bvil\nlhmBd3LA5EuQ5y1X0jRL/+GDiUiZw1gOJP8d/XzhUJL9AmamdqJ6/rAU7lUTNWkM\ndzmFonUO2Mh2zgEEudHsTOH8udZ2l64LIHc6fCkDmM8QzghjrEFyci6R8333DSSM\nwbM0MvyTLM7TTqZUD60EgD+Ihyr/wJcBZY7GVn7hTq7ee14zeI+dZFmTMYOnt0mA\ngof19t0naPPZU+zyl/ambNF5mmSkGOAl4IBHNvPt5ztEVbNpwW3DHbmdYW71Ax+z\nCDlr4iKZahv21o1PCesPV2IlaHZFD6aBRt0DxzMqtq9cpWsI1g7aEaAjRbSvqhMY\npUeqFXz/GfR9rjRkufr48//ll0/Q/Ogx7m1TjQ6mAEQrklI7pa2W0u3H0BpSZSis\nR6ST3ulE+wfsp8cau6q2er+BSsDhBjSn9FeCUjHzY56u9ud/kb6/jLEdgxNpj0na\n3WVqCCCL/dAFSWznBmdracZsRMXapXInHCiiOEkXXbXIXvRKiTPJXdN+w2/U2j2B\nwXZuazVSpmM+xAZTAS9dtBUQJo+5px9b6P09uagvTA32ezbpPXf+hSfmTdUwbmAY\nrmE9SW85tzX+cD17loygBBRrjOr4uQy/s/9FqLx8bM73jly05rdOmX28ECKwEA05\n8aCFkfqrl9J9doVapaUlywpJVPFtE6W6tCF+ULMfb16vEjT1du1+epEnbGGLRQxg\n3aFLyKlvFaNvR38fiQFUGtBgGOaBN3rhGpbMwjch3oReXv9X/4UCL6sVIiOH2H3c\nVSZdC3O5g6CMVe4zckUe1k9mLDb5524IHDFfptZ6Bw+uzrqIy3GHW8dJF2AK471b\nMUnCojTpdbFHaUs2u/rNKVUyY+vLf8hkyP+znBUoPxSJtty53EWNukxjjsxx0lx3\niZGqN72lXlXuSFZAIxi307+xxE21cbzDsMidyJkbKKGm/F4BOKvX9jWmAyYmBG6A\n1L3yNRouFWsYDwYAX2nZ1is=\n-----END ENCRYPTED PRIVATE KEY-----\n',
server_certificate='-----BEGIN CERTIFICATE-----\nMIIDcTCCAlkCBDfnXU8wDQYJKoZIhvcNAQELBQAwfTELMAkGA1UEBhMCRVMxDzAN\nBgNVBAgMBk1hZHJpZDEPMA0GA1UEBwwGTWFkcmlkMREwDwYDVQQKDAhVRFMgQ2Vy\ndDERMA8GA1UECwwIVURTIENlcnQxEjAQBgNVBAMMCTEyNy4wLjAuMTESMBAGA1Ud\nEQwJMTI3LjAuMC4xMB4XDTIwMDIxNzExNTkzMloXDTMwMDIxNDExNTkzMlowfTEL\nMAkGA1UEBhMCRVMxDzANBgNVBAgMBk1hZHJpZDEPMA0GA1UEBwwGTWFkcmlkMREw\nDwYDVQQKDAhVRFMgQ2VydDERMA8GA1UECwwIVURTIENlcnQxEjAQBgNVBAMMCTEy\nNy4wLjAuMTESMBAGA1UdEQwJMTI3LjAuMC4xMIIBIjANBgkqhkiG9w0BAQEFAAOC\nAQ8AMIIBCgKCAQEA2e1cW7YtRpNLazR3f/LqLv8OB0rKh8cUPH4wuQhbBTkee8Wu\n5eMSadRCIyRbKj4b8dtVfI9QW0SrmhGuMx1KCh3CsYd9XsWiKbGkiRBHIDOn5pkF\n6PUayDJ8KjnGbfnZjp0AmxXP4r1OO8jUPqzKS9Ubf5PgwcwdFiUKVfVPwGwctwt5\nt9YpSRONw0rTsCjVHvO2dd9h6EopskLCWxpN8l9kNLwLM/6t0IqVKmn5/IYPKKN2\nCX8a7IXpxwoiUs4sBZYhUMBWikB1hKQRSYafp1Xvc5PeTFXTFqGANnqz0NoZ8tqL\n8qjQUN/PCdtzhfcP5RgT2g1qyS2RBCMYH7Zs0wIDAQABMA0GCSqGSIb3DQEBCwUA\nA4IBAQCUt+qlLA1N9VXMwDQAYG4Kt6/UlMHCXAajHQQGtjdyGJ4++m7EIjI96hMU\n3Cx2gp2ggR3JGnuSR+DdBvPl5iGku7J8KV0JiJg30gTY8JuUIy/PMLZWloYKrBHV\nlin2GujQ4OsIt3dbr4XtcKW1Wd7L6fBzHlq7Xyxh+gcTzTvTmq67Q9XKlBWsegMf\nv4FKy0lfcSFK3vTzswQtuTontG4TqLiT/4AnMt3D0cTQ6b6KoZwUUX/TDNhau06d\nQ4Ilz8X61ka+4HBkFSR5ahP9noCVhwO329h+6epO141E5Tep3OLc/GCF4oaKOlMR\nfqxf5f2bghU0fxmtEoNJTZkBsN1S\n-----END CERTIFICATE-----\n',
password='Pw7qbatz5u-y-Z5ora2D2ZuBCm95AHnKRcpze53k8tw'
)

View File

@ -0,0 +1,166 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
# pylint: disable=invalid-name
import threading
import http.server
import secrets
import json
import typing
from ..log import logger
# Not imported at runtime, just for type checking
if typing.TYPE_CHECKING:
from ..client import UDSActorClient
class HTTPServerHandler(http.server.BaseHTTPRequestHandler):
protocol_version = 'HTTP/1.0'
server_version = 'UDS Actor Server'
sys_version = ''
_id: typing.ClassVar[str] # Random id for server
_app: typing.ClassVar['UDSActorClient']
def sendJsonResponse(self, result: typing.Optional[typing.Any] = None, error: typing.Optional[str] = None, code: int = 200) -> None:
data = json.dumps({'result': result, 'error': error})
self.send_response(code)
self.send_header('Content-type', 'application/json')
self.send_header('Content-Length', str(len(data)))
self.send_header('Server: ', self.server_version)
self.end_headers()
try:
self.wfile.write(data.encode())
except Exception:
pass # Evict "broken pipe" when sending errors
def do_POST(self) -> None:
# Only allows requests from localhost
if self.client_address[0][:3] != '127':
self.sendJsonResponse(error='Forbidden', code=403)
# Very simple path & params splitter
path = self.path.split('?')[0][1:].split('/')
if len(path) != 2 or path[0] != HTTPServerHandler._id:
self.sendJsonResponse(error='Forbidden', code=403)
try:
length = int(str(self.headers.get('content-length', '0')))
content = self.rfile.read(length)
params: typing.MutableMapping[str, str] = json.loads(content or '{}')
except Exception as e:
logger.error('Got exception executing POST {}: {}'.format(self.path, str(e)))
self.sendJsonResponse(error='Invalid request', code=400)
return
try:
result = getattr(self, 'method_' + path[1])(params) # last part of path is method
except AttributeError as e:
logger.error('Invoked invalid method: %s: %s', path[1], e)
self.sendJsonResponse(error='Invalid request', code=400)
return
except Exception as e:
logger.error('Got exception executing {}: {}'.format('/'.join(path), str(e)))
self.sendJsonResponse(error='Internal error', code=500)
return
self.sendJsonResponse(result)
# Internal methods
def method_ping(self, params: typing.MutableMapping[str, str]) -> typing.Any:
return 'pong'
def method_logout(self, params: typing.MutableMapping[str, str]) -> typing.Any:
return self._app.logout()
def method_message(self, params: typing.MutableMapping[str, str]) -> typing.Any:
return self._app.message(params['message'])
def method_screenshot(self, params: typing.MutableMapping[str, str]) -> typing.Any:
return self._app.screenshot()
def method_script(self, params: typing.MutableMapping[str, str]) -> typing.Any:
return self._app.script(params['script'])
def do_GET(self) -> None:
self.sendJsonResponse(error='Forbidden', code=403)
def log_error(self, format: str, *args): # pylint: disable=redefined-builtin
logger.error(format, *args)
def log_message(self, format: str, *args): # pylint: disable=redefined-builtin
logger.debug(format, *args)
class HTTPServerThread(threading.Thread):
_server: typing.Optional[http.server.HTTPServer]
_app: 'UDSActorClient'
port: int
id: str
def __init__(self, app: 'UDSActorClient'):
super().__init__()
self._server = None
self._app = app
self.port = -1
self.id = secrets.token_urlsafe(24)
@property
def url(self) -> str:
return 'http://127.0.0.1:{}/{}'.format(self.port, self.id)
def stop(self) -> None:
if self._server:
logger.debug('Stopping Http-client Service')
try:
self._app.api.unregister(self.url)
except Exception as e:
logger.error('Error unregistering on actor service: %s', e)
self._server.shutdown()
self._server = None
def run(self):
HTTPServerHandler._app = self._app # pylint: disable=protected-access
HTTPServerHandler._id = self.id # pylint: disable=protected-access
self._server = http.server.HTTPServer(('127.0.0.1', 0), HTTPServerHandler)
self.port = self._server.socket.getsockname()[1]
# Register using app api
logger.debug('Registered %s', self.url)
try:
self._app.api.register(self.url)
except Exception as e:
logger.error('Error registering on actor service: %s', e)
self._server.serve_forever()

View File

@ -0,0 +1,151 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
# pylint: disable=invalid-name
import json
import typing
import requests
from udsactor import tools, types
from udsactor.log import logger
# For avoid proxy on localhost connections
NO_PROXY = {
'http': None,
'https': None,
}
class UDSActorClientPool(metaclass=tools.Singleton):
_clients: typing.List[types.ClientInfo]
def __init__(self) -> None:
self._clients = []
def _post(
self,
session_id: typing.Optional[str],
method: str,
data: typing.MutableMapping[str, str],
timeout: int = 2,
) -> typing.List[
typing.Tuple[types.ClientInfo, typing.Optional[requests.Response]]
]:
result: typing.List[
typing.Tuple[types.ClientInfo, typing.Optional[requests.Response]]
] = []
for client in self._clients:
# Skip if session id is provided but does not match
if session_id and client.session_id != session_id:
continue
clientUrl = client.url
try:
result.append(
(
client,
requests.post(
clientUrl + '/' + method,
data=json.dumps(data),
verify=False,
timeout=timeout,
proxies=NO_PROXY, # type: ignore
),
)
)
except Exception as e:
logger.info(
'Could not connect with client %s: %s. ',
e,
clientUrl,
)
result.append((client, None))
return result
@property
def clients(self) -> typing.List[types.ClientInfo]:
return self._clients
def register(self, client_url: str) -> None:
# Remove first if exists, to avoid duplicates
self.unregister(client_url)
# And add it again
self._clients.append(types.ClientInfo(client_url, ''))
def set_session_id(self, client_url: str, session_id: typing.Optional[str]) -> None:
"""Set the session id for a client
Args:
clientUrl (str): _description_
session_id (str): _description_
"""
for client in self._clients:
if client.url == client_url:
# remove existing client from list, create a new one and insert it
self._clients.remove(client)
self._clients.append(types.ClientInfo(client_url, session_id or ''))
break
def unregister(self, client_url: str) -> None:
# remove client url from array if found
for i, client in enumerate(self._clients):
if client.url == client_url:
self._clients.pop(i)
return
def executeScript(self, session_id: typing.Optional[str], script: str) -> None:
self._post(session_id, 'script', {'script': script}, timeout=30)
def logout(self, session_id: typing.Optional[str]) -> None:
self._post(session_id, 'logout', {})
def message(self, session_id: typing.Optional[str], message: str) -> None:
self._post(session_id, 'message', {'message': message})
def lost_clients(
self,
session_id: typing.Optional[str] = None,
) -> typing.Iterable[types.ClientInfo]: # returns the list of "lost" clients
# Port ping to every client
for i in self._post(session_id, 'ping', {}, timeout=1):
if i[1] is None:
yield i[0]
def screenshot(
self, session_id: typing.Optional[str]
) -> typing.Optional[str]: # Screenshot are returned as base64
for client, r in self._post(session_id, 'screenshot', {}, timeout=3):
if not r:
continue # Missing client, so we ignore it
try:
return r.json()['result']
except Exception:
pass
return None

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014-2017 Virtual Cable S.L.
# Copyright (c) 2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
@ -25,20 +25,20 @@
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
from __future__ import unicode_literals
import typing
# On centos, old six release does not includes byte2int, nor six.PY2
import six
if typing.TYPE_CHECKING:
from ..service import CommonService
VERSION = '2.2.0'
class Handler:
_service: 'CommonService'
_method: str
_params: typing.MutableMapping[str, str]
__title__ = 'udclient'
__version__ = VERSION
__build__ = 0x010760
__author__ = 'Adolfo Gómez'
__license__ = "BSD 3-clause"
__copyright__ = "Copyright 2014-2017 VirtualCable S.L.U."
def __init__(self, service: 'CommonService', method: str, params: typing.MutableMapping[str, str]):
self._service = service
self._method = method
self._params = params

View File

@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2012 Virtual Cable S.L.
# Copyright (c) 2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
@ -26,51 +25,36 @@
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
from __future__ import unicode_literals
import typing
__updated__ = '2014-11-12'
from udsactor.http import handler, clients_pool
if typing.TYPE_CHECKING:
from udsactor.service import CommonService
class AuthsFactory(object):
'''
This class holds the register of all known authentication modules
inside UDS.
class LocalProvider(handler.Handler):
It provides a way to register and recover Authentication providers.
'''
_factory = None
def post_login(self) -> typing.Any:
result = self._service.login(self._params['username'], self._params['session_type'])
# if callback_url is provided, record it in the clients pool
if 'callback_url' in self._params and result.session_id:
# If no session id is returned, then no login is acounted for
clients_pool.UDSActorClientPool().set_session_id(self._params['callback_url'], result.session_id)
return result._asdict()
def __init__(self):
self._auths = {}
def post_logout(self) -> typing.Any:
self._service.logout(self._params['username'], self._params['session_type'], self._params['session_id'])
return 'ok'
@staticmethod
def factory():
'''
Returns the factory that keeps the register of authentication providers.
'''
if AuthsFactory._factory is None:
AuthsFactory._factory = AuthsFactory()
return AuthsFactory._factory
def post_ping(self) -> typing.Any:
return 'pong'
def providers(self):
'''
Returns the list of authentication providers already registered.
'''
return self._auths
def post_register(self) -> typing.Any:
self._service._clientsPool.register(self._params['callback_url']) # pylint: disable=protected-access
return 'ok'
def insert(self, type_):
'''
Registers a new authentication provider
'''
self._auths[type_.type().lower()] = type_
def lookup(self, typeName):
'''
Tries to locate an authentication provider and by its name, and, if
not found, returns None
'''
return self._auths.get(typeName.lower(), None)
def post_unregister(self) -> typing.Any:
self._service._clientsPool.unregister(self._params['callback_url']) # pylint: disable=protected-access

View File

@ -0,0 +1,100 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
import typing
from .. import tools
from . import handler
from ..log import logger
if typing.TYPE_CHECKING:
from ..service import CommonService
class PublicProvider(handler.Handler):
def post_logout(self) -> typing.Any:
logger.debug('Sending LOGOFF to clients')
self._service._clientsPool.logout() # pylint: disable=protected-access
return 'ok'
# Alias
post_logoff = post_logout
def post_message(self) -> typing.Any:
logger.debug('Sending MESSAGE to clients')
if 'message' not in self._params:
raise Exception('Invalid message parameters')
self._service._clientsPool.message(
self._params['message']
) # pylint: disable=protected-access
return 'ok'
def post_script(self) -> typing.Any:
logger.debug('Received script: {}'.format(self._params))
if 'script' not in self._params:
raise Exception('Invalid script parameters')
if self._params.get('user', False):
logger.debug('Sending SCRIPT to client')
self._service._clientsPool.executeScript(
self._params['script']
) # pylint: disable=protected-access
else:
# Execute script at server space, that is, here
# as a parallel thread
th = tools.ScriptExecutorThread(self._params['script'])
th.start()
return 'ok'
def post_preConnect(self) -> typing.Any:
logger.debug('Received Pre connection')
if 'user' not in self._params or 'protocol' not in self._params:
raise Exception('Invalid preConnect parameters')
return self._service.preConnect(
self._params['user'],
self._params['protocol'],
self._params.get('ip', 'unknown'),
self._params.get('hostname', 'unknown'),
self._params.get('udsuser', 'unknown'),
)
def get_information(self) -> typing.Any:
# Return something useful? :)
return 'UDS Actor Secure Server'
def get_screenshot(self) -> typing.Any:
return (
self._service._clientsPool.screenshot()
) # pylint: disable=protected-access
def get_uuid(self) -> typing.Any:
if self._service.isManaged():
return self._service._cfg.own_token # pylint: disable=protected-access
return ''

View File

@ -0,0 +1,166 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
import os
import threading
import http.server
import json
import ssl
import typing
from ..log import logger
from .. import certs
from .. import rest
from .public import PublicProvider
from .local import LocalProvider
# Not imported at runtime, just for type checking
if typing.TYPE_CHECKING:
from ..service import CommonService
from .handler import Handler
class HTTPServerHandler(http.server.BaseHTTPRequestHandler):
protocol_version = 'HTTP/1.0'
server_version = 'UDS Actor Server'
sys_version = ''
_service: typing.Optional['CommonService'] = None
def sendJsonResponse(self, result: typing.Optional[typing.Any] = None, error: typing.Optional[str] = None, code: int = 200) -> None:
data = json.dumps({'result': result, 'error': error})
self.send_response(code)
self.send_header('Content-type', 'application/json')
self.send_header('Content-Length', str(len(data)))
self.send_header('Server: ', self.server_version)
self.end_headers()
self.wfile.write(data.encode())
def process(self, method: str, params: typing.MutableMapping[str, str]) -> None:
if not self._service:
self.sendJsonResponse(error='Not initialized', code=500)
return
# Very simple path & params splitter
path = self.path.split('?')[0][1:].split('/')
logger.debug('Path: %s, ip: %s, params: %s', path, self.client_address, params)
handlerType: typing.Optional[typing.Type['Handler']] = None
if len(path) == 3 and path[0] == 'actor' and path[1] == self._service._secret: # pylint: disable=protected-access
# public method
handlerType = PublicProvider
elif len(path) == 2 and path[0] == 'ui':
# private method, only from localhost
if self.client_address[0][:3] == '127':
handlerType = LocalProvider
if not handlerType:
self.sendJsonResponse(error='Forbidden', code=403)
return
try:
result = getattr(handlerType(self._service, method, params), method + '_' + path[-1])() # last part of path is method
except AttributeError:
self.sendJsonResponse(error='Method not found', code=404)
return
except Exception as e:
logger.error('Got exception executing {} {}: {}'.format(method, '/'.join(path), str(e)))
self.sendJsonResponse(error=str(e), code=500)
return
self.sendJsonResponse(result)
def do_GET(self) -> None:
try:
params = {v.split('=')[0]: v.split('=')[1] for v in self.path.split('?')[1].split('&')}
except Exception:
params = {}
self.process('get', params)
def do_POST(self) -> None:
try:
length = int(str(self.headers.get('content-length', '0')))
content = self.rfile.read(length)
params: typing.MutableMapping[str, str] = json.loads(content)
except Exception as e:
logger.error('Got exception executing POST {}: {}'.format(self.path, str(e)))
self.sendJsonResponse(error='Invalid parameters', code=400)
return
self.process('post', params)
def log_error(self, format, *args): # pylint: disable=redefined-builtin
logger.error(format, *args)
def log_message(self, format, *args): # pylint: disable=redefined-builtin
logger.debug(format, *args)
class HTTPServerThread(threading.Thread):
_server: typing.Optional[http.server.HTTPServer]
_service: 'CommonService'
_certFile: typing.Optional[str]
def __init__(self, service: 'CommonService'):
super().__init__()
self._server = None
self._service = service
self._certFile = None
def stop(self) -> None:
logger.debug('Stopping Http-server Service')
if self._server:
self._server.shutdown()
self._server = None
if self._certFile:
try:
os.unlink(self._certFile)
except Exception as e:
logger.error('Error removing certificate file: %s', e)
logger.debug('Http-server stopped')
def run(self):
HTTPServerHandler._service = self._service # pylint: disable=protected-access
self._certFile, password = certs.saveCertificate(self._service._certificate) # pylint: disable=protected-access
self._server = http.server.HTTPServer(('0.0.0.0', rest.LISTEN_PORT), HTTPServerHandler)
# self._server.socket = ssl.wrap_socket(self._server.socket, certfile=self.certFile, server_side=True)
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
# context.options = ssl.CERT_NONE
context.load_cert_chain(certfile=self._certFile, password=password)
self._server.socket = context.wrap_socket(self._server.socket, server_side=True)
self._server.serve_forever()

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2013 Virtual Cable S.L.
# Copyright (c) 2014-2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
@ -29,5 +29,3 @@
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
__updated__ = '2014-02-19'

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014 Virtual Cable S.L.
# Copyright (c) 2014-2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
@ -26,18 +26,15 @@
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: : http://www.jejik.com/authors/sander_marechal/
@see: : http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
from __future__ import unicode_literals
import sys
import os
import time
import atexit
from udsactor.log import logger
from signal import SIGTERM, SIGKILL
from signal import SIGTERM
from udsactor.log import logger
class Daemon:
@ -46,13 +43,14 @@ class Daemon:
Usage: subclass the Daemon class and override the run() method
"""
def __init__(self, pidfile, stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'):
def __init__(self, pidfile: str, stdin: str = '/dev/null', stdout: str = '/dev/null', stderr: str = '/dev/null'):
self.stdin = stdin
self.stdout = stdout
self.stderr = stderr
self.pidfile = pidfile
def daemonize(self):
def daemonize(self) -> None:
"""
do the UNIX double-fork magic, see Stevens' "Advanced
Programming in the UNIX Environment" for details (ISBN 0201563177)
@ -88,40 +86,33 @@ class Daemon:
sys.stdout.flush()
sys.stderr.flush()
si = open(self.stdin, 'r')
so = open(self.stdout, 'a+')
se = open(self.stderr, 'a+', 0)
so = open(self.stdout, 'ab+')
se = open(self.stderr, 'ab+', 0)
os.dup2(si.fileno(), sys.stdin.fileno())
os.dup2(so.fileno(), sys.stdout.fileno())
os.dup2(se.fileno(), sys.stderr.fileno())
# write pidfile
atexit.register(self.delpid)
pid = str(os.getpid())
atexit.register(self.removePidFile)
pidStr = str(os.getpid())
with open(self.pidfile, 'w+') as f:
f.write("{}\n".format(pid))
f.write("{}\n".format(pidStr))
def delpid(self):
def removePidFile(self) -> None:
try:
os.remove(self.pidfile)
except Exception:
# Not found/not permissions or whatever...
except Exception: # nosec: Not interested in exception
# Not found/not permissions or whatever, ignore it
pass
def start(self):
def start(self) -> None:
"""
Start the daemon
"""
logger.debug('Starting daemon')
# Check for a pidfile to see if the daemon already runs
try:
pf = open(self.pidfile, 'r')
pid = int(pf.read().strip())
pf.close()
except IOError:
pid = None
if pid:
message = "pidfile {} already exist. Daemon already running?\n".format(pid)
if os.path.exists(self.pidfile):
message = "pidfile {} already exist. Daemon already running?\n".format(self.pidfile)
logger.error(message)
sys.stderr.write(message)
sys.exit(1)
@ -133,10 +124,9 @@ class Daemon:
except Exception as e:
logger.error('Exception running process: {}'.format(e))
if os.path.exists(self.pidfile):
os.remove(self.pidfile)
self.removePidFile()
def stop(self):
def stop(self) -> None:
"""
Stop the daemon
"""
@ -146,28 +136,30 @@ class Daemon:
pid = int(pf.read().strip())
pf.close()
except IOError:
pid = None
if pid is None:
message = "pidfile {} does not exist. Daemon not running?\n".format(self.pidfile)
logger.info(message)
logger.error(message)
# sys.stderr.write(message)
return # not an error in a restart
# Try killing the daemon process
try:
while True:
cnt = 10
while cnt:
cnt -= 1
os.kill(pid, SIGTERM)
time.sleep(1)
if not cnt:
os.kill(pid, SIGKILL)
except OSError as err:
if err.errno == 3: # No such process
if os.path.exists(self.pidfile):
os.remove(self.pidfile)
else:
sys.stderr.write(err)
sys.stderr.write('Error: {}'.format(err))
sys.exit(1)
def restart(self):
def restart(self) -> None:
"""
Restart the daemon
"""
@ -175,8 +167,7 @@ class Daemon:
self.start()
# Overridables
def run(self):
def run(self) -> None:
"""
You should override this method when you subclass Daemon. It will be called after the process has been
daemonized by start() or restart().
override this to provide your own daemon
"""

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014 Virtual Cable S.L.
# Copyright (c) 2014-2022 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
@ -11,7 +11,7 @@
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
@ -25,29 +25,28 @@
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
from __future__ import unicode_literals
import logging
# pylint: disable=invalid-name
import os
import tempfile
import six
import logging
import typing
# Valid logging levels, from UDS Broker (uds.core.utils.log)
OTHER, DEBUG, INFO, WARN, ERROR, FATAL = (10000 * (x + 1) for x in six.moves.xrange(6)) # @UndefinedVariable
class LocalLogger: # pylint: disable=too-few-public-methods
linux = True
windows = False
serviceLogger = False
logger: typing.Optional[logging.Logger]
class LocalLogger(object):
def __init__(self):
def __init__(self) -> None:
# tempdir is different for "user application" and "service"
# service wil get c:\windows\temp, while user will get c:\users\XXX\temp
# Try to open logger at /var/log path
# If it fails (access denied normally), will try to open one at user's home folder, and if
# agaim it fails, open it at the tmpPath
for logDir in ('/var/log', os.path.expanduser('~'), tempfile.gettempdir()):
try:
fname = os.path.join(logDir, 'udsactor.log')
@ -60,21 +59,17 @@ class LocalLogger(object):
self.logger = logging.getLogger('udsactor')
os.chmod(fname, 0o0600)
return
except Exception:
except Exception: # nosec: B110: we don't care about exceptions here
# Ignore and try next
pass
# Logger can't be set
self.logger = None
def log(self, level, message):
def log(self, level: int, message: str) -> None:
# Debug messages are logged to a file
# our loglevels are 10000 (other), 20000 (debug), ....
# our loglevels are 0 (other), 10000 (debug), ....
# logging levels are 10 (debug), 20 (info)
# OTHER = logging.NOTSET
self.logger.log(int(level / 1000) - 10, message)
def isWindows(self):
return False
def isLinux(self):
return True
if self.logger:
self.logger.log(int(level / 1000), message)

View File

@ -0,0 +1,236 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014-2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
# pylint: disable=invalid-name
import configparser
import platform
import socket
import fcntl # Only available on Linux. Expect complains if edited from windows
import os
import subprocess # nosec
import struct
import array
import typing
from .. import types
from .renamer import rename
from . import xss
def _getMacAddr(ifname: str) -> typing.Optional[str]:
'''
Returns the mac address of an interface
Mac is returned as unicode utf-8 encoded
'''
ifnameBytes = ifname.encode('utf-8')
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
info = bytearray(
fcntl.ioctl(s.fileno(), 0x8927, struct.pack(str('256s'), ifnameBytes[:15]))
)
return str(''.join(['%02x:' % char for char in info[18:24]])[:-1]).upper()
except Exception:
return None
def _getIpAddr(ifname: str) -> typing.Optional[str]:
'''
Returns the ip address of an interface
Ip is returned as unicode utf-8 encoded
'''
ifnameBytes = ifname.encode('utf-8')
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
return str(
socket.inet_ntoa(
fcntl.ioctl(
s.fileno(),
0x8915, # SIOCGIFADDR
struct.pack(str('256s'), ifnameBytes[:15]),
)[20:24]
)
)
except Exception:
return None
def _getInterfaces() -> typing.List[str]:
'''
Returns a list of interfaces names coded in utf-8
'''
max_possible = 128 # arbitrary. raise if needed.
space = max_possible * 16
if platform.architecture()[0] == '32bit':
offset, length = 32, 32
elif platform.architecture()[0] == '64bit':
offset, length = 16, 40
else:
raise OSError('Unknown arquitecture {0}'.format(platform.architecture()[0]))
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
names = array.array(str('B'), b'\0' * space)
outbytes = struct.unpack(
'iL',
fcntl.ioctl(
s.fileno(),
0x8912, # SIOCGIFCONF
struct.pack('iL', space, names.buffer_info()[0]),
),
)[0]
namestr = names.tobytes()
# return namestr, outbytes
return [
namestr[i : i + offset].split(b'\0', 1)[0].decode('utf-8')
for i in range(0, outbytes, length)
]
def _getIpAndMac(
ifname: str,
) -> typing.Tuple[typing.Optional[str], typing.Optional[str]]:
ip, mac = _getIpAddr(ifname), _getMacAddr(ifname)
return (ip, mac)
def checkPermissions() -> bool:
return os.getuid() == 0
def getComputerName() -> str:
'''
Returns computer name, with no domain
'''
return socket.gethostname().split('.')[0]
def getNetworkInfo() -> typing.Iterator[types.InterfaceInfoType]:
for ifname in _getInterfaces():
ip, mac = _getIpAndMac(ifname)
if (
mac != '00:00:00:00:00:00'
and mac
and ip
and ip.startswith('169.254') is False
): # Skips local interfaces & interfaces with no dhcp IPs
yield types.InterfaceInfoType(name=ifname, mac=mac, ip=ip)
def getDomainName() -> str:
return ''
def getLinuxOs() -> str:
try:
with open('/etc/os-release', 'r') as f:
data = f.read()
cfg = configparser.ConfigParser()
cfg.read_string('[os]\n' + data)
return cfg['os'].get('id', 'unknown').replace('"', '')
except Exception:
return 'unknown'
def getVersion() -> str:
return 'Linux ' + getLinuxOs()
def reboot(flags: int = 0):
'''
Simple reboot using os command
'''
subprocess.call(['/sbin/shutdown', 'now', '-r']) # nosec: Fine, all under control
def loggoff() -> None:
'''
Right now restarts the machine...
'''
subprocess.call(['/usr/bin/pkill', '-u', os.environ['USER']]) # nosec: Fine, all under control
# subprocess.call(['/sbin/shutdown', 'now', '-r'])
# subprocess.call(['/usr/bin/systemctl', 'reboot', '-i'])
def renameComputer(newName: str) -> bool:
'''
Changes the computer name
Returns True if reboot needed
'''
rename(newName)
return True # Always reboot right now. Not much slower but much more convenient
def joinDomain(
domain: str, ou: str, account: str, password: str, executeInOneStep: bool = False
):
pass
def changeUserPassword(user: str, oldPassword: str, newPassword: str) -> None:
'''
Simple password change for user using command line
'''
subprocess.run( # nosec: Fine, all under control
'echo "{1}\n{1}" | /usr/bin/passwd {0} 2> /dev/null'.format(user, newPassword),
shell=True,
)
def initIdleDuration(atLeastSeconds: int) -> None:
xss.initIdleDuration(atLeastSeconds)
def getIdleDuration() -> float:
return xss.getIdleDuration()
def getCurrentUser() -> str:
'''
Returns current logged in user
'''
return os.getlogin()
def getSessionType() -> str:
'''
Known values:
* Unknown -> No XDG_SESSION_TYPE environment variable
* xrdp --> xrdp session
* other types
'''
return (
'xrdp'
if 'XRDP_SESSION' in os.environ
else os.environ.get('XDG_SESSION_TYPE', 'unknown')
)
def forceTimeSync() -> None:
return

View File

@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014-2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
from .common import rename
# Import packages
from . import debian, opensuse, redhat, alt

View File

@ -0,0 +1,74 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014-2022 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Alexey Shabalin, shaba at altlinux dot org
'''
import subprocess # nosec
from .common import renamers
from ...log import logger
def rename(newName: str) -> bool:
'''
ALT, ALTLinux, BaseALT Renamer
Expects new host name on newName
Host does not needs to be rebooted after renaming
'''
logger.debug('using ALT renamer')
with open('/etc/hostname', 'w') as hostname:
hostname.write(newName)
# Force system new name
subprocess.run(['hostnamectl', 'set-hostname', newName]) # nosec: subprocess
subprocess.run(['/bin/hostname', newName]) # nosec: subprocess
# add name to "hosts"
with open('/etc/hosts', 'r') as hosts:
lines = hosts.readlines()
with open('/etc/hosts', 'w') as hosts:
hosts.write("127.0.1.1\t{}\n".format(newName))
for l in lines:
if l[:9] != '127.0.1.1': # Skips existing 127.0.1.1. if it already exists
hosts.write(l)
with open('/etc/sysconfig/network', 'r') as net:
lines = net.readlines()
with open('/etc/sysconfig/network', 'w') as net:
net.write('HOSTNAME={}\n'.format(newName))
for l in lines:
if l[:8] != 'HOSTNAME':
net.write(l)
return True
# All names in lower case
renamers['altlinux'] = rename
renamers['alt'] = rename
renamers['basealt'] = rename

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014 Virtual Cable S.L.
# Copyright (c) 2014-2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
@ -29,33 +29,21 @@
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
from __future__ import unicode_literals
import typing
import platform
import os
import sys
import pkgutil
from udsactor.log import logger
renamers = {}
from .. import operations
from ...log import logger
renamers: typing.MutableMapping[str, typing.Callable[[str], bool]] = {}
# Renamers now are for IPv4 only addresses
def rename(newName):
distribution = platform.linux_distribution()[0].lower().strip()
def rename(newName: str) -> bool:
distribution = operations.getLinuxOs().lower().strip()
if distribution in renamers:
logger.info('Renaming to {}'.format(newName))
return renamers[distribution](newName)
# Try Debian renamer, simplest one
logger.info('Renamer for platform "{0}" not found, tryin debian renamer'.format(distribution))
logger.info('Renamer for platform "{0}" not found, trying debian renamer'.format(distribution))
return renamers['debian'](newName)
# Do load of packages
def _init():
pkgpath = os.path.dirname(sys.modules[__name__].__file__)
for _, name, _ in pkgutil.iter_modules([pkgpath]):
__import__(__name__ + '.' + name, globals(), locals())
_init()

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014 Virtual Cable S.L.
# Copyright (c) 2014-2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
@ -29,27 +29,24 @@
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
from __future__ import unicode_literals
import subprocess # nosec
from udsactor.linux.renamer import renamers
from udsactor.log import logger
import os
from .common import renamers
from ...log import logger
def rename(newName):
def rename(newName: str) -> bool:
'''
Debian renamer
Expects new host name on newName
Host does not needs to be rebooted after renaming
'''
logger.debug('using Debian renamer')
with open('/etc/hostname', 'w') as hostname:
hostname.write(newName)
# Force system new name
os.system('/bin/hostname %s' % newName)
subprocess.run(['hostnamectl', 'set-hostname', newName]) # nosec: ok, we are root
subprocess.run(['/bin/hostname', newName]) # nosec: ok, we are root
# add name to "hosts"
with open('/etc/hosts', 'r') as hosts:

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014 Virtual Cable S.L.
# Copyright (c) 2014-2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
@ -28,15 +28,13 @@
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
from __future__ import unicode_literals
import subprocess # nosec
from udsactor.linux.renamer import renamers
from udsactor.log import logger
import os
from .common import renamers
from ...log import logger
def rename(newName):
def rename(newName: str) -> bool:
'''
RH, Centos, Fedora Renamer
Expects new host name on newName
@ -48,7 +46,8 @@ def rename(newName):
hostname.write(newName)
# Force system new name
os.system('/bin/hostname %s' % newName)
subprocess.run(['hostnamectl', 'set-hostname', newName]) # nosec: ok, we are root
subprocess.run(['/bin/hostname', newName]) # nosec: ok, we are root
# add name to "hosts"
with open('/etc/hosts', 'r') as hosts:
@ -64,3 +63,4 @@ def rename(newName):
# All names in lower case
renamers['opensuse'] = rename
renamers['suse'] = rename
renamers['opensuse-leap'] = rename

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014 Virtual Cable S.L.
# Copyright (c) 2014-2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
@ -28,15 +28,13 @@
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
from __future__ import unicode_literals
import subprocess # nosec
from udsactor.linux.renamer import renamers
from udsactor.log import logger
import os
from .common import renamers
from ...log import logger
def rename(newName):
def rename(newName: str) -> bool:
'''
RH, Centos, Fedora Renamer
Expects new host name on newName
@ -48,7 +46,8 @@ def rename(newName):
hostname.write(newName)
# Force system new name
os.system('/bin/hostname %s' % newName)
subprocess.run(['hostnamectl', 'set-hostname', newName]) # nosec: ok, we are root
subprocess.run(['/bin/hostname', newName]) # nosec: ok, we are root
# add name to "hosts"
with open('/etc/hosts', 'r') as hosts:
@ -71,4 +70,5 @@ def rename(newName):
# All names in lower case
renamers['centos linux'] = rename
renamers['centos'] = rename
renamers['fedora'] = rename

View File

@ -0,0 +1,76 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014-2020 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
import sys
from .. import rest
from .. import platform
from ..log import logger
from .service import UDSActorSvc
def usage():
sys.stderr.write('usage: udsactor start|stop|restart|login "username"|logout "username"\n')
sys.exit(2)
def run() -> None:
logger.setLevel(20000)
if len(sys.argv) == 3 and sys.argv[1] in ('login', 'logout'):
logger.debug('Running client udsactor')
try:
client: rest.UDSClientApi = rest.UDSClientApi()
if sys.argv[1] == 'login':
r = client.login(sys.argv[2], platform.operations.getSessionType())
print('{},{},{},{}\n'.format(r.ip, r.hostname, r.max_idle, r.dead_line or ''))
elif sys.argv[1] == 'logout':
client.logout(sys.argv[2], platform.operations.getSessionType())
except Exception as e:
logger.exception()
logger.error('Got exception while processing command: %s', e)
sys.exit(0)
elif len(sys.argv) != 2:
usage()
daemonSvr = UDSActorSvc()
if len(sys.argv) == 2:
# Daemon mode...
if sys.argv[1] == 'start':
daemonSvr.start()
elif sys.argv[1] == 'stop':
daemonSvr.stop()
elif sys.argv[1] == 'restart':
daemonSvr.restart()
elif sys.argv[1] == 'start-foreground':
daemonSvr.run() # Execute in foreground
else:
usage()
sys.exit(0)
else:
usage()

View File

@ -0,0 +1,106 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014-2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
import signal
from . import daemon
from ..log import logger
from ..service import CommonService
try:
from prctl import set_proctitle # type: ignore
except ImportError: # Platform may not include prctl, so in case it's not available, we let the "name" as is
def set_proctitle(_):
pass
class UDSActorSvc(daemon.Daemon, CommonService):
def __init__(self) -> None:
daemon.Daemon.__init__(self, '/run/udsactor.pid')
CommonService.__init__(self)
# Captures signals so we can stop gracefully
signal.signal(signal.SIGINT, self.markForExit)
signal.signal(signal.SIGTERM, self.markForExit)
def markForExit(self, signum, frame) -> None: # pylint: disable=unused-argument
self._isAlive = False
def joinDomain( # pylint: disable=unused-argument, too-many-arguments
self,
name: str,
domain: str,
ou: str,
account: str,
password: str
) -> None:
logger.info('Join domain is not supported on linux platforms right now. Just renaming.')
self.rename(name)
def run(self) -> None:
logger.debug('Running Daemon: {}'.format(self._isAlive))
set_proctitle('UDSActorDaemon')
# Linux daemon will continue running unless something is requested to
# Unmanaged services does not initializes "on start", but rather when user logs in (because userservice does not exists "as such" before that)
if self.isManaged():
if not self.initialize():
self.finish()
return # Stop daemon if initializes told to do so
# logger.debug('Initialized, setting ready')
# Initialization is done, set machine to ready for UDS, communicate urls, etc...
self.setReady()
else:
if not self.initializeUnmanaged():
self.finish()
return
# Start listening for petitions
self.startHttpServer()
# *********************
# * Main Service loop *
# *********************
# Counter used to check ip changes only once every 10 seconds, for
# example
counter = 0
while self._isAlive:
counter += 1
try:
if counter % 5 == 0:
self.loop()
except Exception as e:
logger.error('Got exception on main loop: %s', e)
# In milliseconds, will break
self.doWait(1000)
self.finish()

View File

@ -0,0 +1,127 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014-2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
# pylint: disable=invalid-name
import os
import configparser
import base64
import pickle # nosec
from .. import types
CONFIGFILE = '/etc/udsactor/udsactor.cfg'
def readConfig() -> types.ActorConfigurationType:
try:
cfg = configparser.ConfigParser()
cfg.read(CONFIGFILE)
uds: configparser.SectionProxy = cfg['uds']
# Extract data:
base64Config = uds.get('config', None)
config = (
pickle.loads( # nosec: file is restricted
base64.b64decode(base64Config.encode())
)
if base64Config
else None
)
base64Data = uds.get('data', None)
data = (
pickle.loads( # nosec: file is restricted
base64.b64decode(base64Data.encode())
)
if base64Data
else None
)
return types.ActorConfigurationType(
actorType=uds.get('type', types.MANAGED),
host=uds.get('host', ''),
validateCertificate=uds.getboolean('validate', fallback=False),
master_token=uds.get('master_token', None),
own_token=uds.get('own_token', None),
restrict_net=uds.get('restrict_net', None),
pre_command=uds.get('pre_command', None),
runonce_command=uds.get('runonce_command', None),
post_command=uds.get('post_command', None),
log_level=int(uds.get('log_level', '2')),
config=config,
data=data,
)
except Exception:
return types.ActorConfigurationType('', False)
def writeConfig(config: types.ActorConfigurationType) -> None:
cfg = configparser.ConfigParser()
cfg.add_section('uds')
uds: configparser.SectionProxy = cfg['uds']
uds['host'] = config.host
uds['validate'] = 'yes' if config.validateCertificate else 'no'
def writeIfValue(val, name):
if val:
uds[name] = val
writeIfValue(config.actorType, 'type')
writeIfValue(config.master_token, 'master_token')
writeIfValue(config.own_token, 'own_token')
writeIfValue(config.restrict_net, 'restrict_net')
writeIfValue(config.pre_command, 'pre_command')
writeIfValue(config.post_command, 'post_command')
writeIfValue(config.runonce_command, 'runonce_command')
uds['log_level'] = str(config.log_level)
if config.config: # Special case, encoded & dumped
uds['config'] = base64.b64encode(pickle.dumps(config.config)).decode()
if config.data: # Special case, encoded & dumped
uds['data'] = base64.b64encode(pickle.dumps(config.data)).decode()
# Ensures exists destination folder
dirname = os.path.dirname(CONFIGFILE)
if not os.path.exists(dirname):
os.mkdir(
dirname, mode=0o700
) # Will create only if route to path already exists, for example, /etc (that must... :-))
with open(CONFIGFILE, 'w') as f:
cfg.write(f)
os.chmod(CONFIGFILE, 0o0600) # Ensure only readable by root
def useOldJoinSystem() -> bool:
return False
def invokeScriptOnLogin() -> str:
return ''

View File

@ -0,0 +1,143 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014-2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
# pylint: disable=invalid-name
import ctypes
import ctypes.util
import subprocess # nosec
xlib = None
xss = None
display = None
xssInfo = None
initialized = False
class XScreenSaverInfo(ctypes.Structure): # pylint: disable=too-few-public-methods
_fields_ = [
('window', ctypes.c_long),
('state', ctypes.c_int),
('kind', ctypes.c_int),
('til_or_since', ctypes.c_ulong),
('idle', ctypes.c_ulong),
('eventMask', ctypes.c_ulong),
]
class c_ptr(ctypes.c_void_p):
pass
def _ensureInitialized():
global xlib, xss, xssInfo, display, initialized # pylint: disable=global-statement
if initialized:
return
initialized = True
try:
xlibPath = ctypes.util.find_library('X11')
xssPath = ctypes.util.find_library('Xss')
xlib = xss = None
if not xlibPath or not xssPath:
raise Exception('Library Not found!!')
xlib = ctypes.cdll.LoadLibrary(xlibPath)
xss = ctypes.cdll.LoadLibrary(xssPath)
# Fix result type to XScreenSaverInfo Structure
xss.XScreenSaverQueryExtension.restype = ctypes.c_int
xss.XScreenSaverQueryExtension.argtypes = [
ctypes.c_void_p,
ctypes.POINTER(ctypes.c_int),
ctypes.POINTER(ctypes.c_int),
]
xss.XScreenSaverAllocInfo.restype = ctypes.POINTER(
XScreenSaverInfo
) # Result in a XScreenSaverInfo structure
xss.XScreenSaverQueryInfo.argtypes = [
ctypes.c_void_p,
ctypes.c_void_p,
ctypes.POINTER(XScreenSaverInfo),
]
xlib.XOpenDisplay.argtypes = [ctypes.c_char_p]
xlib.XOpenDisplay.restype = c_ptr
display = xlib.XOpenDisplay(None)
if not display.value:
raise Exception('Display not found!') # Invalid display, not accesible
xssInfo = xss.XScreenSaverAllocInfo()
# Ensures screen saver extension is available
event_base = ctypes.c_int()
error_base = ctypes.c_int()
available = xss.XScreenSaverQueryExtension(
display, ctypes.byref(event_base), ctypes.byref(error_base)
)
if available != 1:
raise Exception('ScreenSaver not available')
except Exception: # Libraries not accesible, not found or whatever..
xlib = xss = display = xssInfo = None
def initIdleDuration(atLeastSeconds: int) -> None:
_ensureInitialized()
if atLeastSeconds:
subprocess.call( # nosec, controlled params
['/usr/bin/xset', 's', '{}'.format(atLeastSeconds + 30)]
)
# And now reset it
subprocess.call(['/usr/bin/xset', 's', 'reset']) # nosec: fixed command
def getIdleDuration() -> float:
'''
Returns idle duration, in seconds
'''
if not initialized or not xlib or not xss or not xssInfo:
return 0 # Libraries not available
xss.XScreenSaverQueryInfo(display, xlib.XDefaultRootWindow(display), xssInfo)
# States: 0 = off, 1 = On, 2 = Cycle, 3 = Disabled, ...?
if (
xssInfo.contents.state == 1
): # state = 1 means "active", so idle is not a valid state
return (
3600 * 100 * 1000
) # If screen saver is active, return a high enough value
return xssInfo.contents.idle / 1000.0

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014 Virtual Cable S.L.
# Copyright (c) 2014-2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
@ -25,70 +25,86 @@
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
from __future__ import unicode_literals
# pylint: disable=invalid-name
import traceback
import sys
import six
import typing
if sys.platform == 'win32':
from udsactor.windows.log import LocalLogger # @UnusedImport
from .windows.log import LocalLogger
elif sys.platform == 'darwin':
from .macos.log import LocalLogger
else:
from udsactor.linux.log import LocalLogger # @Reimport
from .linux.log import LocalLogger
# Not imported at runtime, just for type checking
if typing.TYPE_CHECKING:
from . import rest
# Valid logging levels, from UDS Broker (uds.core.utils.log)
OTHER, DEBUG, INFO, WARN, ERROR, FATAL = (10000 * (x + 1) for x in six.moves.xrange(6)) # @UndefinedVariable
from .loglevel import OTHER, DEBUG, INFO, WARN, ERROR, FATAL
class Logger:
remoteLogger: typing.Optional['rest.UDSServerApi']
own_token: str
logLevel: int
localLogger: LocalLogger
class Logger(object):
def __init__(self):
def __init__(self) -> None:
self.logLevel = INFO
self.logger = LocalLogger()
self.localLogger = LocalLogger()
self.remoteLogger = None
self.own_token = '' # nosec: This is no password at all
def setLevel(self, level):
def setLevel(self, level: typing.Union[str, int]) -> None:
'''
Sets log level filter (minimum level required for a log message to be processed)
:param level: Any message with a level below this will be filtered out
'''
self.logLevel = int(level) # Ensures level is an integer or fails
def setRemoteLogger(self, remoteLogger):
def setRemoteLogger(self, remoteLogger: 'rest.UDSServerApi', own_token: str) -> None:
self.remoteLogger = remoteLogger
self.own_token = own_token
def log(self, level, message):
def enableServiceLogger(self):
if self.localLogger.windows:
self.localLogger.serviceLogger = True
def log(self, level: typing.Union[str, int], message: str, *args) -> None:
level = int(level)
if level < self.logLevel: # Skip not wanted messages
return
# If remote logger is available, notify message to it
msg = message % args
# If remote logger is available, notify message to it (except DEBUG messages OFC)
try:
if self.remoteLogger is not None and self.remoteLogger.isConnected and level >= INFO:
self.remoteLogger.log(level, message)
if self.remoteLogger and level >= DEBUG:
self.remoteLogger.log(self.own_token, level, msg)
except Exception as e:
self.logger.log(FATAL, 'Error notifying log to broker: {}'.format(e.message))
self.localLogger.log(DEBUG, 'Log to broker: {}'.format(e))
self.logger.log(level, message)
self.localLogger.log(level, msg)
def debug(self, message):
self.log(DEBUG, message)
def debug(self, message: str, *args) -> None:
self.log(DEBUG, message, *args)
def warn(self, message):
self.log(WARN, message)
def warn(self, message: str, *args) -> None:
self.log(WARN, message, *args)
def info(self, message):
self.log(INFO, message)
def info(self, message: str, *args) -> None:
self.log(INFO, message, *args)
def error(self, message):
self.log(ERROR, message)
def error(self, message: str, *args) -> None:
self.log(ERROR, message, *args)
def fatal(self, message):
self.log(FATAL, message)
def fatal(self, message: str, *args) -> None:
self.log(FATAL, message, *args)
def exception(self):
def exception(self) -> None:
try:
tb = traceback.format_exc()
except Exception:
@ -96,7 +112,7 @@ class Logger(object):
self.log(DEBUG, tb)
def flush(self):
def flush(self) -> None:
pass

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014 Virtual Cable S.L.
# Copyright (c) 2020 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
@ -28,7 +28,5 @@
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
from __future__ import unicode_literals
from .usage import usage
from .users import users
OTHER, DEBUG, INFO, WARN, ERROR, FATAL = (10000 * x for x in range(6))

View File

@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2022 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
Author: Adolfo Gómez, dkmaster at dkmon dot com
'''

View File

@ -0,0 +1,74 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2022 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
Author: Adolfo Gómez, dkmaster at dkmon dot com
'''
# pylint: disable=invalid-name
import os
import tempfile
import logging
import typing
# Basically, same logger as in linux,
class LocalLogger:
linux = False
windows = False
serviceLogger = False
logger: typing.Optional[logging.Logger]
def __init__(self) -> None:
# Try to open logger at /var/log path
# If it fails (access denied normally), will try to open one at user's home folder, and if
# agaim it fails, open it at the tmpPath
for logDir in ('/var/log', os.path.expanduser('~'), tempfile.gettempdir()):
try:
fname = os.path.join(logDir, 'udsactor.log')
logging.basicConfig(
filename=fname,
filemode='a',
format='%(levelname)s %(asctime)s %(message)s',
level=logging.DEBUG
)
self.logger = logging.getLogger('udsactor')
os.chmod(fname, 0o0600)
return
except Exception: # nosec: B110: we don't care about exceptions here
# ignore and try next one
pass
# Logger can't be set
self.logger = None
def log(self, level: int, message: str) -> None:
# Debug messages are logged to a file
# our loglevels are 0 (other), 10000 (debug), ....
# logging levels are 10 (debug), 20 (info)
# OTHER = logging.NOTSET
if self.logger:
self.logger.log(int(level / 1000), message)

View File

@ -0,0 +1,185 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2022 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
Author: Adolfo Gómez, dkmaster at dkmon dot com
'''
# Note. most methods are not implemented, as they are not needed for this platform (macos)
# that only supports unmanaged machines
import socket
import os
import re
import subprocess # nosec
import typing
import psutil
from udsactor import types, tools
MACVER_RE = re.compile(
r"<key>ProductVersion</key>\s*<string>(.*)</string>", re.MULTILINE
)
MACVER_FILE = '/System/Library/CoreServices/SystemVersion.plist'
def checkPermissions() -> bool:
return os.getuid() == 0
def getComputerName() -> str:
'''
Returns computer name, with no domain
'''
return socket.gethostname().split('.')[0]
def getNetworkInfo() -> typing.Iterator[types.InterfaceInfoType]:
ifdata: typing.List['psutil._common.snicaddr']
for ifname, ifdata in psutil.net_if_addrs().items():
name, ip, mac = '', '', ''
# Get IP address, interface name and MAC address whenever possible
for row in ifdata:
if row.family == socket.AF_INET:
ip = row.address
name = ifname
elif row.family == socket.AF_LINK:
mac = row.address
# if all data is available, stop iterating
if ip and name and mac:
if (
mac != '00:00:00:00:00:00'
and mac
and ip
and ip.startswith('169.254') is False
): # Skips local interfaces & interfaces with no dhcp IPs
yield types.InterfaceInfoType(name=name, ip=ip, mac=mac)
break
def getDomainName() -> str:
return ''
def getMacOs() -> str:
try:
with open(MACVER_FILE, 'r') as f:
data = f.read()
m = MACVER_RE.search(data)
if m:
return m.group(1)
except Exception: # nosec: B110: ignore exception because we are not interested in it
pass
return 'unknown'
def getVersion() -> str:
return 'MacOS ' + getMacOs()
def reboot(flags: int = 0) -> None:
'''
Simple reboot using os command
'''
subprocess.call(['/sbin/shutdown', '-r', 'now']) # nosec: Command line is fixed
def loggoff() -> None:
'''
Right now restarts the machine...
'''
subprocess.run(
"/bin/launchctl bootout gui/$(id -u $USER)", shell=True
) # nosec: Command line is fixed
# Ignores output, as it may fail if user is not logged in
def renameComputer(newName: str) -> bool:
'''
Changes the computer name
Returns True if reboot needed
Note: For macOS, no configuration is supported, only "unmanaged" actor
'''
return False
def joinDomain(
domain: str, ou: str, account: str, password: str, executeInOneStep: bool = False
):
pass
def changeUserPassword(user: str, oldPassword: str, newPassword: str) -> None:
pass
def initIdleDuration(atLeastSeconds: int) -> None:
pass
# se we cache for 20 seconds the result, that is enough for our needs
# and we avoid calling a system command every time we need it
@tools.cache(20)
def getIdleDuration() -> float:
# Execute:
try:
return (
int(
next(
filter(
lambda x: b"HIDIdleTime" in x,
subprocess.check_output(
["/usr/sbin/ioreg", "-c", "IOHIDSystem"]
).split(b"\n"),
)
).split(b"=")[1]
)
/ 1000000000
) # nosec: Command line is fixed
except Exception: # nosec: B110: ignore exception because we are not interested in it
return 0
def getCurrentUser() -> str:
'''
Returns current logged in user
'''
return os.getlogin()
def getSessionType() -> str:
'''
Returns the session type. Currently, only "macos" (console) is supported
'''
return 'macos'
def forceTimeSync() -> None:
return

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014 Virtual Cable S.L.
# Copyright (c) 2022 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
@ -25,48 +25,47 @@
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
Author: Adolfo Gómez, dkmaster at dkmon dot com
'''
from __future__ import unicode_literals
import sys
import six
import typing
if sys.platform == 'win32':
_fromEncoding = 'windows-1250'
else:
_fromEncoding = 'utf-8'
from .. import rest
from .. import platform
from ..log import logger
from .service import UDSActorSvc
def usage() -> typing.NoReturn:
sys.stderr.write('usage: udsactor start|login "username"|logout "username"\n')
sys.exit(2)
def toUnicode(msg):
try:
if not isinstance(msg, six.text_type):
if isinstance(msg, six.binary_type):
return msg.decode(_fromEncoding, 'ignore')
return six.text_type(msg)
else:
return msg
except Exception:
def run() -> None:
logger.setLevel(20000)
if len(sys.argv) == 3 and sys.argv[1] in ('login', 'logout'):
logger.debug('Running client udsactor')
try:
return six.text_type(msg)
except Exception:
return ''
client: rest.UDSClientApi = rest.UDSClientApi()
if sys.argv[1] == 'login':
r = client.login(sys.argv[2], platform.operations.getSessionType())
print('{},{},{},{}\n'.format(r.ip, r.hostname, r.max_idle, r.dead_line or ''))
elif sys.argv[1] == 'logout':
client.logout(sys.argv[2], platform.operations.getSessionType())
except Exception as e:
logger.exception()
logger.error('Got exception while processing command: %s', e)
sys.exit(0)
elif len(sys.argv) != 2:
usage()
def exceptionToMessage(e):
msg = ''
for arg in e.args:
if isinstance(arg, Exception):
msg = msg + exceptionToMessage(arg)
daemonSvr = UDSActorSvc()
if len(sys.argv) == 2:
# Daemon mode...
if sys.argv[1] in ('start', 'start-foreground'):
daemonSvr.run() # execute in foreground
else:
msg = msg + toUnicode(arg) + '. '
return msg
class Bunch(dict):
def __init__(self, **kw):
dict.__init__(self, kw)
self.__dict__ = self
usage()
sys.exit(0)
else:
usage()

View File

@ -0,0 +1,108 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2022 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
Author: Adolfo Gómez, dkmaster at dkmon dot com
'''
import typing
import signal
from ..log import logger
from ..service import CommonService
class UDSActorSvc(CommonService):
def __init__(self) -> None:
CommonService.__init__(self)
# Captures signals so we can stop gracefully
signal.signal(signal.SIGINT, self.markForExit)
signal.signal(signal.SIGTERM, self.markForExit)
def markForExit(self, signum, frame) -> None: # pylint: disable=unused-argument
self._isAlive = False
def joinDomain( # pylint: disable=unused-argument, too-many-arguments
self,
name: str,
domain: str,
ou: str,
account: str,
password: str
) -> None:
pass # Not implemented for unmanaged machines
def rename(
self,
name: str,
userName: typing.Optional[str] = None,
oldPassword: typing.Optional[str] = None,
newPassword: typing.Optional[str] = None,
) -> None:
pass # Not implemented for unmanaged machines
def run(self) -> None:
logger.debug('Running Daemon: {}'.format(self._isAlive))
# Linux daemon will continue running unless something is requested to
# Unmanaged services does not initializes "on start", but rather when user logs in (because userservice does not exists "as such" before that)
if self.isManaged(): # Currently, managed is not implemented for UDS on M
logger.error('Managed machines not supported on MacOS')
# Wait a bit, this is mac os and will be run by launchd
# If the daemon shuts down too quickly, launchd may think it is a crash.
self.doWait(10000)
self.finish()
return # Stop daemon if initializes told to do so
if not self.initializeUnmanaged():
# Wait a bit, this is mac os and will be run by launchd
# If the daemon shuts down too quickly, launchd may think it is a crash.
self.doWait(10000)
self.finish()
return
# Start listening for petitions
self.startHttpServer()
# *********************
# * Main Service loop *
# *********************
# Counter used to check ip changes only once every 10 seconds, for
# example
counter = 0
while self._isAlive:
counter += 1
try:
if counter % 5 == 0:
self.loop()
except Exception as e:
logger.error('Got exception on main loop: %s', e)
# In milliseconds, will break
self.doWait(1000)
self.finish()

View File

@ -0,0 +1,106 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2022 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
Author: Adolfo Gómez, dkmaster at dkmon dot com
'''
import os
import configparser
import base64
import pickle # nosec
from .. import types
CONFIGFILE = '/etc/udsactor/udsactor.cfg'
def readConfig() -> types.ActorConfigurationType:
try:
cfg = configparser.ConfigParser()
cfg.read(CONFIGFILE)
uds: configparser.SectionProxy = cfg['uds']
# Extract data:
base64Config = uds.get('config', None)
config = pickle.loads(base64.b64decode(base64Config.encode())) if base64Config else None # nosec: Read from root controled file, secure
base64Data = uds.get('data', None)
data = pickle.loads(base64.b64decode(base64Data.encode())) if base64Data else None # nosec: Read from root controled file, secure
return types.ActorConfigurationType(
actorType=uds.get('type', types.MANAGED),
host=uds.get('host', ''),
validateCertificate=uds.getboolean('validate', fallback=False),
master_token=uds.get('master_token', None),
own_token=uds.get('own_token', None),
restrict_net=uds.get('restrict_net', None),
pre_command=uds.get('pre_command', None),
runonce_command=uds.get('runonce_command', None),
post_command=uds.get('post_command', None),
log_level=int(uds.get('log_level', '2')),
config=config,
data=data
)
except Exception:
return types.ActorConfigurationType('', False)
def writeConfig(config: types.ActorConfigurationType) -> None:
cfg = configparser.ConfigParser()
cfg.add_section('uds')
uds: configparser.SectionProxy = cfg['uds']
uds['host'] = config.host
uds['validate'] = 'yes' if config.validateCertificate else 'no'
def writeIfValue(val, name):
if val:
uds[name] = val
writeIfValue(config.actorType, 'type')
writeIfValue(config.master_token, 'master_token')
writeIfValue(config.own_token, 'own_token')
writeIfValue(config.restrict_net, 'restrict_net')
writeIfValue(config.pre_command, 'pre_command')
writeIfValue(config.post_command, 'post_command')
writeIfValue(config.runonce_command, 'runonce_command')
uds['log_level'] = str(config.log_level)
if config.config: # Special case, encoded & dumped
uds['config'] = base64.b64encode(pickle.dumps(config.config)).decode()
if config.data: # Special case, encoded & dumped
uds['data'] = base64.b64encode(pickle.dumps(config.data)).decode()
# Ensures exists destination folder
dirname = os.path.dirname(CONFIGFILE)
if not os.path.exists(dirname):
os.mkdir(dirname, mode=0o700) # Will create only if route to path already exists, for example, /etc (that must... :-))
with open(CONFIGFILE, 'w') as f:
cfg.write(f)
os.chmod(CONFIGFILE, 0o0600) # Ensure only readable by root
def useOldJoinSystem() -> bool:
return False
def invokeScriptOnLogin() -> str:
return ''

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014 Virtual Cable S.L.
# Copyright (c) 2014-2022 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
@ -11,7 +11,7 @@
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
@ -25,15 +25,21 @@
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
# pylint: disable=unused-wildcard-import, wildcard-import
from __future__ import unicode_literals
import sys
name = sys.platform
is_windows = is_linux = is_mac = False
if sys.platform == 'win32':
from udsactor.windows.store import * # @UnusedWildImport
from .windows import operations, store, runner
is_windows = True
elif sys.platform == 'darwin':
from .macos import operations, store, runner
is_mac = True
elif sys.platform == 'linux':
from .linux import operations, store, runner
is_linux = True
else:
from udsactor.linux.store import * # @UnusedWildImport
raise Exception('Unsupported platform: {0}'.format(sys.platform))

449
actor/src/udsactor/rest.py Normal file
View File

@ -0,0 +1,449 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2019-2021 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
# pylint: disable=invalid-name
import warnings
import json
import logging
import typing
import requests
from udsactor import types, tools
from udsactor.version import VERSION, BUILD
# Default public listen port
LISTEN_PORT = 43910
# Default timeout
TIMEOUT = 5 # 5 seconds is more than enought
# Constants
UNKNOWN = 'unknown'
class RESTError(Exception):
ERRCODE = 0
class RESTConnectionError(RESTError):
ERRCODE = -1
# Errors ""raised"" from broker
class RESTInvalidKeyError(RESTError):
ERRCODE = 1
class RESTUnmanagedHostError(RESTError):
ERRCODE = 2
class RESTUserServiceNotFoundError(RESTError):
ERRCODE = 3
class RESTOsManagerError(RESTError):
ERRCODE = 4
# For avoid proxy on localhost connections
NO_PROXY = {
'http': None,
'https': None,
}
UDS_BASE_URL = 'https://{}/uds/rest/'
#
# Basic UDS Api
#
class UDSApi: # pylint: disable=too-few-public-methods
"""
Base for remote api accesses
"""
_host: str = ''
_validateCert: bool = True
_url: str = ''
def __init__(self, host: str, validateCert: bool) -> None:
self._host = host
self._validateCert = validateCert
self._url = UDS_BASE_URL.format(self._host)
# Disable logging requests messages except for errors, ...
logging.getLogger('request').setLevel(logging.CRITICAL)
logging.getLogger('urllib3').setLevel(logging.ERROR)
try:
warnings.simplefilter('ignore') # Disables all warnings
except Exception: # nosec: not interested in exceptions
pass
@property
def _headers(self) -> typing.MutableMapping[str, str]:
return {
'Content-Type': 'application/json',
'User-Agent': 'UDS Actor v{}/{}'.format(VERSION, BUILD),
}
def _api_url(self, method: str) -> str:
raise NotImplementedError
def _doPost(
self,
method: str, # i.e. 'initialize', 'ready', ....
payLoad: typing.MutableMapping[str, typing.Any],
headers: typing.Optional[typing.MutableMapping[str, str]] = None,
disableProxy: bool = False,
) -> typing.Any:
headers = headers or self._headers
try:
result = requests.post(
self._api_url(method),
data=json.dumps(payLoad),
headers=headers,
verify=self._validateCert,
timeout=TIMEOUT,
proxies=NO_PROXY # type: ignore
if disableProxy
else None, # if not proxies wanted, enforce it
)
if result.ok:
j = result.json()
if not j.get('error', None):
return j['result']
except requests.ConnectionError as e:
raise RESTConnectionError(str(e))
except Exception as e:
raise RESTError(str(e))
try:
data = result.json()
except Exception:
data = result.content.decode()
raise RESTError(data)
#
# UDS Broker API access
#
class UDSServerApi(UDSApi):
def _api_url(self, method: str) -> str:
return self._url + 'actor/v3/' + method
def enumerateAuthenticators(self) -> typing.Iterable[types.AuthenticatorType]:
try:
result = requests.get(
self._url + 'auth/auths',
headers=self._headers,
verify=self._validateCert,
timeout=4,
)
if result.ok:
for v in sorted(result.json(), key=lambda x: x['priority']):
yield types.AuthenticatorType(
authId=v['authId'],
authSmallName=v['authSmallName'],
auth=v['auth'],
type=v['type'],
priority=v['priority'],
isCustom=v['isCustom'],
)
except Exception: # nosec: not interested in exceptions
pass
def register(
self,
auth: str,
username: str,
password: str,
hostname: str,
ip: str,
mac: str,
preCommand: str,
runOnceCommand: str,
postCommand: str,
logLevel: int,
) -> str:
"""
Raises an exception if could not register, or registers and returns the "authorization token"
"""
data = {
'username': username + '@' + auth,
'hostname': hostname,
'ip': ip,
'mac': mac,
'pre_command': preCommand,
'run_once_command': runOnceCommand,
'post_command': postCommand,
'log_level': logLevel,
}
# First, try to login to REST api
try:
# First, try to login
authInfo = {'auth': auth, 'username': username, 'password': password}
headers = self._headers
result = requests.post(
self._url + 'auth/login',
data=json.dumps(authInfo),
headers=headers,
verify=self._validateCert,
)
if not result.ok or result.json()['result'] == 'error':
raise Exception() # Invalid credentials
headers['X-Auth-Token'] = result.json()['token']
result = requests.post(
self._api_url('register'),
data=json.dumps(data),
headers=headers,
verify=self._validateCert,
)
if result.ok:
return result.json()['result']
except requests.ConnectionError as e:
raise RESTConnectionError(e)
except RESTError:
raise
except Exception as e:
raise RESTError('Invalid credentials')
raise RESTError(result.content.decode())
def initialize(
self,
token: str,
interfaces: typing.Iterable[types.InterfaceInfoType],
actor_type: typing.Optional[str],
) -> types.InitializationResultType:
# Generate id list from netork cards
payload = {
'type': actor_type or types.MANAGED,
'token': token,
'version': VERSION,
'build': BUILD,
'id': [{'mac': i.mac, 'ip': i.ip} for i in interfaces],
}
r = self._doPost('initialize', payload)
os = r['os']
return types.InitializationResultType(
own_token=r['own_token'],
unique_id=r['unique_id'].lower() if r['unique_id'] else None,
os=types.ActorOsConfigurationType(
action=os['action'],
name=os['name'],
username=os.get('username'),
password=os.get('password'),
new_password=os.get('new_password'),
ad=os.get('ad'),
ou=os.get('ou'),
)
if r['os']
else None,
alias_token=r.get('alias_token'), # Possible alias for unmanaged
)
def ready(
self, own_token: str, secret: str, ip: str, port: int
) -> types.CertificateInfoType:
payload = {'token': own_token, 'secret': secret, 'ip': ip, 'port': port}
result = self._doPost('ready', payload)
return types.CertificateInfoType(
private_key=result['private_key'],
server_certificate=result['server_certificate'],
password=result['password'],
)
def notifyIpChange(
self, own_token: str, secret: str, ip: str, port: int
) -> types.CertificateInfoType:
payload = {'token': own_token, 'secret': secret, 'ip': ip, 'port': port}
result = self._doPost('ipchange', payload)
return types.CertificateInfoType(
private_key=result['private_key'],
server_certificate=result['server_certificate'],
password=result['password'],
)
def notifyUnmanagedCallback(
self,
master_token: str,
secret: str,
interfaces: typing.Iterable[types.InterfaceInfoType],
port: int,
) -> types.CertificateInfoType:
payload = {
'id': [{'mac': i.mac, 'ip': i.ip} for i in interfaces],
'token': master_token,
'secret': secret,
'port': port,
}
result = self._doPost('unmanaged', payload)
return types.CertificateInfoType(
private_key=result['private_key'],
server_certificate=result['server_certificate'],
password=result['password'],
)
def login(
self,
actor_type: typing.Optional[str],
token: str,
username: str,
session_type: str,
interfaces: typing.Iterable[types.InterfaceInfoType],
secret: typing.Optional[str],
) -> types.LoginResultInfoType:
if not token:
return types.LoginResultInfoType(
ip='0.0.0.0', hostname=UNKNOWN, dead_line=None, max_idle=None, session_id=None
)
payload = {
'type': actor_type or types.MANAGED,
'id': [{'mac': i.mac, 'ip': i.ip} for i in interfaces],
'token': token,
'username': username,
'session_type': session_type,
'secret': secret or '',
}
result = self._doPost('login', payload)
return types.LoginResultInfoType(
ip=result['ip'],
hostname=result['hostname'],
dead_line=result['dead_line'],
max_idle=result['max_idle'],
session_id=result.get('session_id', ''),
)
def logout(
self,
actor_type: typing.Optional[str],
token: str,
username: str,
session_id: str,
session_type: str,
interfaces: typing.Iterable[types.InterfaceInfoType],
secret: typing.Optional[str],
) -> typing.Optional[str]:
if not token:
return None
payload = {
'type': actor_type or types.MANAGED,
'id': [{'mac': i.mac, 'ip': i.ip} for i in interfaces],
'token': token,
'username': username,
'session_type': session_type,
'session_id': session_id,
'secret': secret or '',
}
return self._doPost('logout', payload) # Can be 'ok' or 'notified'
def log(self, own_token: str, level: int, message: str) -> None:
if not own_token:
return
payLoad = {'token': own_token, 'level': level, 'message': message}
self._doPost('log', payLoad) # Ignores result...
def test(self, master_token: str, actorType: typing.Optional[str]) -> bool:
payLoad = {
'type': actorType or types.MANAGED,
'token': master_token,
}
return self._doPost('test', payLoad) == 'ok'
class UDSClientApi(UDSApi, metaclass=tools.Singleton):
_session_id: str = ''
_callback_url: str = ''
def __init__(self) -> None:
super().__init__('127.0.0.1:{}'.format(LISTEN_PORT), False)
# Replace base url
self._url = "https://{}/ui/".format(self._host)
def _api_url(self, method: str) -> str:
return self._url + method
def post(
self,
method: str, # i.e. 'initialize', 'ready', ....
payLoad: typing.MutableMapping[str, typing.Any],
) -> typing.Any:
return self._doPost(method=method, payLoad=payLoad, disableProxy=True)
def register(self, callback_url: str) -> None:
self._callback_url = callback_url
payLoad = {'callback_url': callback_url}
self.post('register', payLoad)
def unregister(self, callback_url: str) -> None:
payLoad = {'callback_url': callback_url}
self.post('unregister', payLoad)
self._callback_url = ''
def login(
self, username: str, sessionType: typing.Optional[str] = None
) -> types.LoginResultInfoType:
payLoad = {
'username': username,
'session_type': sessionType or UNKNOWN,
'callback_url': self._callback_url, # So we identify ourselves
}
result = self.post('login', payLoad)
res = types.LoginResultInfoType(
ip=result['ip'],
hostname=result['hostname'],
dead_line=result['dead_line'],
max_idle=result['max_idle'],
session_id=result['session_id'],
)
# Store session id for future use
self._session_id = res.session_id or ''
return res
def logout(self, username: str, sessionType: typing.Optional[str]) -> None:
payLoad = {
'username': username,
'session_type': sessionType or UNKNOWN,
'callback_url': self._callback_url, # So we identify ourselves
'session_id': self._session_id, # We now know the session id, provided on login
}
self.post('logout', payLoad)
def ping(self) -> bool:
return self.post('ping', {}) == 'pong'

View File

@ -0,0 +1,615 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014-2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
# pylint: disable=invalid-name
import socket
import time
import secrets
import subprocess
import typing
from udsactor import platform
from udsactor import rest
from udsactor import types
from udsactor import tools
from udsactor.log import logger, DEBUG, INFO, ERROR, FATAL
from udsactor.http import clients_pool, server, cert
# def setup() -> None:
# cfg = platform.store.readConfig()
# if logger.logger.windows:
# # Logs will also go to windows event log for services
# logger.logger.serviceLogger = True
# if cfg.x:
# logger.setLevel(cfg.get('logLevel', 20000))
# else:
# logger.setLevel(20000)
class CommonService: # pylint: disable=too-many-instance-attributes
_isAlive: bool = True
_rebootRequested: bool = False
_initialized: bool = False
_cfg: types.ActorConfigurationType
_api: rest.UDSServerApi
_interfaces: typing.List[types.InterfaceInfoType]
_secret: str
_certificate: types.CertificateInfoType
_http: typing.Optional[server.HTTPServerThread]
@staticmethod
def execute(cmdLine: str, section: str) -> bool:
try:
logger.debug('Executing command on {}: {}'.format(section, cmdLine))
res = subprocess.check_call(cmdLine, shell=True)
except Exception as e:
logger.error(
'Got exception executing: {} - {} - {}'.format(section, cmdLine, e)
)
return False
logger.debug('Result of executing cmd for {} was {}'.format(section, res))
return True
def __init__(self) -> None:
self._cfg = platform.store.readConfig()
self._interfaces = []
self._api = rest.UDSServerApi(self._cfg.host, self._cfg.validateCertificate)
self._secret = secrets.token_urlsafe(33)
self._clientsPool = clients_pool.UDSActorClientPool()
self._certificate = (
cert.defaultCertificate
) # For being used on "unmanaged" hosts only
self._http = None
# Initialzies loglevel and serviceLogger
# 0 = DEBUG, 1 = INFO, 2 = ERROR, 3 = FATAL in combobox
# BUT!!!:
# 0 = OTHER, 10000 = DEBUG, 20000 = WARN, 30000 = INFO, 40000 = ERROR, 50000 = FATAL
# So this comes:
logger.setLevel([DEBUG, INFO, ERROR, FATAL][self._cfg.log_level])
# If windows, enable service logger FOR SERVICE only
logger.enableServiceLogger()
socket.setdefaulttimeout(20)
def startHttpServer(self):
# Starts the http thread
if self._http:
try:
self._http.stop()
except Exception:
pass
self._http = server.HTTPServerThread(self)
self._http.start()
def isManaged(self) -> bool:
return (
self._cfg.actorType != types.UNMANAGED
) # Only "unmanaged" hosts are unmanaged, the rest are "managed"
def serviceInterfaceInfo(
self, interfaces: typing.Optional[typing.List[types.InterfaceInfoType]] = None
) -> typing.Optional[types.InterfaceInfoType]:
"""
returns the inteface with unique_id mac or first interface or None if no interfaces...
"""
interfaces = (
interfaces or self._interfaces
) # Emty interfaces is like "no ip change" because cannot be notified
if self._cfg.config and interfaces:
try:
return next(
x for x in interfaces if x.mac.lower() == self._cfg.config.unique_id
)
except StopIteration:
return interfaces[0]
return None
def reboot(self) -> None:
# Reboot just after renaming
logger.info('Rebooting...')
self._rebootRequested = True
def setReady(self) -> None:
if not self._isAlive or not self.isManaged():
return
# Unamanged actor types does not set ready never (has no osmanagers, no needing for this)
# First, if postconfig is available, execute it and disable it
if self._cfg.post_command:
self.execute(self._cfg.post_command, 'postConfig')
self._cfg = self._cfg._replace(post_command=None)
platform.store.writeConfig(self._cfg)
if self._cfg.own_token and self._interfaces:
srvInterface = self.serviceInterfaceInfo()
if srvInterface:
# Rery while RESTConnectionError (that is, cannot connect)
counter = 60
logged = False
while self._isAlive:
counter -= 1
try:
self._certificate = self._api.ready(
self._cfg.own_token,
self._secret,
srvInterface.ip,
rest.LISTEN_PORT,
)
except rest.RESTConnectionError as e:
if not logged: # Only log connection problems ONCE
logged = True
logger.error('Error connecting with UDS Broker')
self.doWait(5000)
continue
except Exception as e:
logger.error('Unhandled exception while setting ready: %s', e)
if counter > 0:
self.doWait(10000) # A long wait on other error...
continue
platform.operations.reboot() # On too many errors, simply reboot
# Success or any error that is not recoverable (retunerd by UDS). if Error, service will be cleaned in a while.
break
else:
logger.error(
'Could not locate IP address!!!. (Not registered with UDS)'
)
# Do not continue if not alive...
if not self._isAlive:
return
# Cleans sensible data
if self._cfg.config:
self._cfg = self._cfg._replace(
config=self._cfg.config._replace(os=None), data=None
)
platform.store.writeConfig(self._cfg)
logger.info('Service ready')
def configureMachine(self) -> bool:
if not self._isAlive:
return False
if not self.isManaged():
return True
# First, if runonce is present, honor it and remove it from config
# Return values is "True" for keep service (or daemon) running, False if Stop it.
if self._cfg.runonce_command:
runOnce = self._cfg.runonce_command
self._cfg = self._cfg._replace(runonce_command=None)
platform.store.writeConfig(self._cfg)
if self.execute(runOnce, "runOnce"):
# If runonce is present, will not do anythin more
# So we have to ensure that, when runonce command is finished, reboots the machine.
# That is, the COMMAND itself has to restart the machine!
return False # If the command fails, continue with the rest of the operations...
# Retry configuration while not stop service, config in case of error 10 times, reboot vm
counter = 10
while self._isAlive:
counter -= 1
try:
if self._cfg.config and self._cfg.config.os:
osData = self._cfg.config.os
if osData.action == 'rename':
self.rename(
osData.name,
osData.username,
osData.password,
osData.new_password,
)
elif osData.action == 'rename_ad':
self.joinDomain(
osData.name,
osData.ad or '',
osData.ou or '',
osData.username or '',
osData.password or '',
)
if self._rebootRequested:
try:
platform.operations.reboot()
except Exception as e:
logger.error('Exception on reboot: {}'.format(e))
return False # Stops service if reboot was requested ofc
break
except Exception as e:
logger.error('Got exception operating machine: {}'.format(e))
if counter > 0:
self.doWait(5000)
else:
platform.operations.reboot()
return False
return True
def initializeUnmanaged(self) -> bool:
# Notify UDS about my callback
self.getInterfaces() # Ensure we have interfaces
if self._cfg.master_token:
try:
self._certificate = self._api.notifyUnmanagedCallback(
self._cfg.master_token,
self._secret,
self._interfaces,
rest.LISTEN_PORT,
)
except Exception as e:
logger.error('Couuld not notify unmanaged callback: %s', e)
return True
def getInterfaces(self) -> None:
if self._interfaces:
return
while self._isAlive:
self._interfaces = tools.validNetworkCards(
self._cfg.restrict_net, platform.operations.getNetworkInfo()
)
if self._interfaces:
break
self.doWait(5000)
def initialize(self) -> bool:
if (
self._initialized or not self._cfg.host or not self._isAlive
): # Not configured or not running
return False
self._initialized = True
# Force time sync, just in case...
if self.isManaged():
platform.operations.forceTimeSync()
# Wait for Broker to be ready
# Ensure we have intefaces...
self.getInterfaces()
while self._isAlive:
try:
# If master token is present, initialize and get configuration data
if self._cfg.master_token:
initResult: types.InitializationResultType = self._api.initialize(
self._cfg.master_token, self._interfaces, self._cfg.actorType
)
if not initResult.own_token: # Not managed
logger.debug(
'This host is not managed by UDS Broker (ids: {})'.format(
self._interfaces
)
)
return False
# Only removes master token for managed machines (will need it on next client execution)
# For unmanaged, if alias is present, replace master token with it
master_token = (
None
if self.isManaged()
else (initResult.alias_token or self._cfg.master_token)
)
# Replace master token with alias token if present
self._cfg = self._cfg._replace(
master_token=master_token,
own_token=initResult.own_token,
config=types.ActorDataConfigurationType(
unique_id=initResult.unique_id, os=initResult.os
),
)
# On first successfull initialization request, master token will dissapear for managed hosts
# so it will be no more available (not needed anyway). For unmanaged, the master token will
# be replaced with an alias token.
platform.store.writeConfig(self._cfg)
# Setup logger now
if self._cfg.own_token:
logger.setRemoteLogger(self._api, self._cfg.own_token)
break # Initial configuration done..
except rest.RESTConnectionError as e:
logger.info(
'Trying to inititialize connection with broker (last error: {})'.format(
e
)
)
self.doWait(5000) # Wait a bit and retry
except rest.RESTError as e: # Invalid key?
logger.error(
'Error validating with broker. (Invalid token?): {}'.format(e)
)
return False
except Exception:
logger.exception()
self.doWait(5000) # Wait a bit and retry...
return self.configureMachine()
def uninitialize(self):
self._initialized = False
self._cfg = self._cfg._replace(
own_token=None
) # Ensures assigned token is cleared
def finish(self) -> None:
if self._http:
self._http.stop()
# If logged in, notify UDS of logout (daemon stoped = no control = logout)
# For every connected client...
if self._cfg.own_token:
for client in clients_pool.UDSActorClientPool().clients:
if client.session_id:
try:
self._api.logout(
self._cfg.actorType,
self._cfg.own_token,
'',
client.session_id
or 'stop', # If no session id, pass "stop"
'',
self._interfaces,
self._secret,
)
except Exception as e:
logger.error('Error notifying final logout to UDS: %s', e)
self.notifyStop()
def checkIpsChanged(self) -> None:
if not self.isManaged():
return # Unamanaged hosts does not changes ips. (The full initialize-login-logout process is done in a row, so at login the IP is correct)
try:
if (
not self._cfg.own_token
or not self._cfg.config
or not self._cfg.config.unique_id
):
# Not enouth data do check
return
currentInterfaces = tools.validNetworkCards(
self._cfg.restrict_net, platform.operations.getNetworkInfo()
)
old = self.serviceInterfaceInfo()
new = self.serviceInterfaceInfo(currentInterfaces)
if not new or not old:
raise Exception(
'No ip currently available for {}'.format(
self._cfg.config.unique_id
)
)
if old.ip != new.ip:
self._certificate = self._api.notifyIpChange(
self._cfg.own_token, self._secret, new.ip, rest.LISTEN_PORT
)
# Now store new addresses & interfaces...
self._interfaces = currentInterfaces
logger.info(
'Ip changed from {} to {}. Notified to UDS'.format(old.ip, new.ip)
)
# Stop the running HTTP Thread and start a new one, with new generated cert
self.startHttpServer()
except Exception as e:
# No ip changed, log exception for info
logger.warn('Checking ips failed: {}'.format(e))
def rename(
self,
name: str,
userName: typing.Optional[str] = None,
oldPassword: typing.Optional[str] = None,
newPassword: typing.Optional[str] = None,
) -> None:
'''
Invoked when broker requests a rename action
default does nothing
'''
hostName = platform.operations.getComputerName()
# Check for password change request for an user
if userName and newPassword:
logger.info('Setting password for configured user')
try:
platform.operations.changeUserPassword(
userName, oldPassword or '', newPassword
)
except Exception as e:
# Logs error, but continue renaming computer
logger.error(
'Could not change password for user {}: {}'.format(userName, e)
)
if hostName.lower() == name.lower():
logger.info('Computer name is already {}'.format(hostName))
return
if platform.operations.renameComputer(name):
self.reboot()
def loop(self):
# Main common loop
try:
# Checks if ips has changed
self.checkIpsChanged()
# Now check if every registered client is already there (if logged in OFC)
for lost_client in clients_pool.UDSActorClientPool().lost_clients():
logger.info('Lost client: {}'.format(lost_client))
self.logout('client_unavailable', '', lost_client.session_id or '') # '' means "all clients"
except Exception as e:
logger.error('Exception on main service loop: %s', e)
# ******************************************************
# Methods that can be overriden by linux & windows Actor
# ******************************************************
def joinDomain( # pylint: disable=unused-argument, too-many-arguments
self, name: str, domain: str, ou: str, account: str, password: str
) -> None:
'''
Invoked when broker requests a "domain" action
default does nothing
'''
logger.debug('Base join invoked: {} on {}, {}'.format(name, domain, ou))
# Client notifications
def login(
self, username: str, sessionType: typing.Optional[str] = None
) -> types.LoginResultInfoType:
result = types.LoginResultInfoType(
ip='', hostname='', dead_line=None, max_idle=None, session_id=None
)
master_token = None
secret = None
# If unmanaged, do initialization now, because we don't know before this
# Also, even if not initialized, get a "login" notification token
if not self.isManaged():
self._initialized = (
self.initialize()
) # Maybe it's a local login by an unmanaged host.... On real login, will execute initilize again
# Unamanaged, need the master token
master_token = self._cfg.master_token
secret = self._secret
# Own token will not be set if UDS did not assigned the initialized VM to an user
# In that case, take master token (if machine is Unamanaged version)
token = self._cfg.own_token or master_token
if token:
result = self._api.login(
self._cfg.actorType,
token,
username,
sessionType or '',
self._interfaces,
secret,
)
if (
result.session_id
): # If logged in, process it. client_pool will take account of login response to client and session
script = platform.store.invokeScriptOnLogin()
if script:
logger.info('Executing script on login: {}'.format(script))
script += f'{username} {sessionType or "unknown"} {self._cfg.actorType}'
self.execute(script, 'Logon')
return result
def logout(
self,
username: str,
session_type: typing.Optional[str],
session_id: typing.Optional[str],
) -> None:
master_token = self._cfg.master_token
# Own token will not be set if UDS did not assigned the initialized VM to an user
# In that case, take master token (if machine is Unamanaged version)
token = self._cfg.own_token or master_token
if token:
# If logout is not processed (that is, not ok result), the logout has not been processed
if (
self._api.logout(
self._cfg.actorType,
token,
username,
session_id or '',
session_type or '',
self._interfaces,
self._secret,
)
!= 'ok' # Can return also "notified", that means the logout has not been processed by UDS
):
logger.info(
'Logout from %s ignored as required by uds broker', username
)
return
self.onLogout(username, session_id or '')
if not self.isManaged():
self.uninitialize()
# ******************************************************
# Methods that CAN BE overriden by specific OS Actor
# ******************************************************
def doWait(self, miliseconds: int) -> None:
'''
Invoked to wait a bit
CAN be OVERRIDEN
'''
seconds = miliseconds / 1000.0
# So it can be broken by "stop"
while self._isAlive and seconds > 1:
time.sleep(1)
seconds -= 1
time.sleep(seconds)
def notifyStop(self) -> None:
'''
Overriden to log stop (on windows, notify to service manager)
'''
logger.info('Service stopped')
def preConnect(
self, userName: str, protocol: str, ip: str, hostname: str, udsUserName: str
) -> str:
'''
Invoked when received a PRE Connection request via REST
Base preconnect executes the preconnect command
'''
if self._cfg.pre_command:
self.execute(
self._cfg.pre_command
+ ' {} {} {} {} {}'.format(
userName.replace('"', '%22'),
protocol,
ip,
hostname,
udsUserName.replace('"', '%22'),
),
'preConnect',
)
return 'ok'
def onLogout(self, userName: str, session_id: str) -> None:
logger.debug('On logout invoked for {}'.format(userName))

140
actor/src/udsactor/tools.py Normal file
View File

@ -0,0 +1,140 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2019 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
import threading
import ipaddress
import time
import typing
import functools
if typing.TYPE_CHECKING:
from udsactor.types import InterfaceInfoType
# Simple cache for n seconds (default = 30) decorator
def cache(seconds: int = 30) -> typing.Callable:
'''
Simple cache for n seconds (default = 30) decorator
'''
def decorator(func) -> typing.Callable:
@functools.wraps(func)
def wrapper(*args, **kwargs) -> typing.Any:
if not hasattr(wrapper, 'cache'):
wrapper.cache = {} # type: ignore
cache = wrapper.cache # type: ignore
# Compose a key for the cache
key = '{}:{}'.format(args, kwargs)
if key in cache:
if time.time() - cache[key][0] < seconds:
return cache[key][1]
# Call the function
result = func(*args, **kwargs)
cache[key] = (time.time(), result)
return result
return wrapper
return decorator
# Simple sub-script exectution thread
class ScriptExecutorThread(threading.Thread):
def __init__(self, script: str) -> None:
super(ScriptExecutorThread, self).__init__()
self.script = script
def run(self) -> None:
from udsactor.log import logger
try:
logger.debug('Executing script: {}'.format(self.script))
exec(
self.script, globals(), None
) # nosec: exec is fine, it's a "trusted" script
except Exception as e:
logger.error('Error executing script: {}'.format(e))
logger.exception()
class Singleton(type):
'''
Metaclass for singleton pattern
Usage:
class MyClass(metaclass=Singleton):
...
'''
_instance: typing.Optional[typing.Any]
# We use __init__ so we customise the created class from this metaclass
def __init__(self, *args, **kwargs) -> None:
self._instance = None
super().__init__(*args, **kwargs)
def __call__(self, *args, **kwargs) -> typing.Any:
if self._instance is None:
self._instance = super().__call__(*args, **kwargs)
return self._instance
# Convert "X.X.X.X/X" to ipaddress.IPv4Network
def strToNoIPV4Network(
net: typing.Optional[str],
) -> typing.Optional[ipaddress.IPv4Network]:
if not net: # Empty or None
return None
try:
return ipaddress.IPv4Interface(net).network
except Exception:
return None
def validNetworkCards(
net: typing.Optional[str], cards: typing.Iterable['InterfaceInfoType']
) -> typing.List['InterfaceInfoType']:
try:
subnet = strToNoIPV4Network(net)
except Exception as e:
subnet = None
if subnet is None:
return list(cards)
def isValid(ip: str, subnet: ipaddress.IPv4Network) -> bool:
if not ip:
return False
try:
return ipaddress.IPv4Address(ip) in subnet
except Exception:
return False
return [c for c in cards if isValid(c.ip, subnet)]

View File

@ -0,0 +1,74 @@
import typing
MANAGED = 'managed'
UNMANAGED = 'unmanaged'
class InterfaceInfoType(typing.NamedTuple):
name: str
mac: str
ip: str
class AuthenticatorType(typing.NamedTuple):
authId: str
authSmallName: str
auth: str
type: str
priority: int
isCustom: bool
class ActorOsConfigurationType(typing.NamedTuple):
action: str
name: str
username: typing.Optional[str] = None
password: typing.Optional[str] = None
new_password: typing.Optional[str] = None
ad: typing.Optional[str] = None
ou: typing.Optional[str] = None
class ActorDataConfigurationType(typing.NamedTuple):
unique_id: typing.Optional[str] = None
os: typing.Optional[ActorOsConfigurationType] = None
class ActorConfigurationType(typing.NamedTuple):
host: str
validateCertificate: bool
actorType: typing.Optional[str] = None
master_token: typing.Optional[str] = None
own_token: typing.Optional[str] = None
restrict_net: typing.Optional[str] = None
pre_command: typing.Optional[str] = None
runonce_command: typing.Optional[str] = None
post_command: typing.Optional[str] = None
log_level: int = 2
config: typing.Optional[ActorDataConfigurationType] = None
data: typing.Optional[typing.Dict[str, typing.Any]] = None
class InitializationResultType(typing.NamedTuple):
own_token: typing.Optional[str] = None
unique_id: typing.Optional[str] = None
os: typing.Optional[ActorOsConfigurationType] = None
alias_token: typing.Optional[str] = None
class LoginResultInfoType(typing.NamedTuple):
ip: str
hostname: str
dead_line: typing.Optional[int]
max_idle: typing.Optional[int]
session_id: typing.Optional[str]
@property
def logged_in(self) -> bool:
return bool(self.session_id)
class ClientInfo(typing.NamedTuple):
url: str
session_id: str
class CertificateInfoType(typing.NamedTuple):
private_key: str
server_certificate: str
password: str

View File

@ -0,0 +1,2 @@
VERSION = '4.0.0'
BUILD = '20220901'

View File

@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014-2022 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014 Virtual Cable S.L.
# Copyright (c) 2014-2022 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
@ -11,7 +11,7 @@
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
@ -25,53 +25,59 @@
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
from __future__ import unicode_literals
import servicemanager # @UnresolvedImport, pylint: disable=import-error
# pylint: disable=invalid-name
import logging
import os
import tempfile
import typing
# Valid logging levels, from UDS Broker (uds.core.utils.log)
OTHER, DEBUG, INFO, WARN, ERROR, FATAL = (10000 * (x + 1) for x in xrange(6))
import servicemanager
# Valid logging levels, from UDS Broker (uds.core.utils.log).
from .. import loglevel
class LocalLogger: # pylint: disable=too-few-public-methods
linux = False
windows = True
serviceLogger = False
logger: typing.Optional[logging.Logger]
class LocalLogger(object):
def __init__(self):
# tempdir is different for "user application" and "service"
# service wil get c:\windows\temp, while user will get c:\users\XXX\temp
logging.basicConfig(
filename=os.path.join(tempfile.gettempdir(), 'udsactor.log'),
filemode='a',
format='%(levelname)s %(asctime)s %(message)s',
level=logging.INFO
)
try:
logging.basicConfig(
filename=os.path.join(tempfile.gettempdir(), 'udsactor.log'),
filemode='a',
format='%(levelname)s %(asctime)s %(message)s',
level=logging.DEBUG
)
except Exception:
logging.basicConfig() # basic init
self.logger = logging.getLogger('udsactor')
self.serviceLogger = False
def log(self, level, message):
def log(self, level: int, message: str) -> None:
# Debug messages are logged to a file
# our loglevels are 10000 (other), 20000 (debug), ....
# our loglevels are 0 (other), 10000 (debug), ....
# logging levels are 10 (debug), 20 (info)
# OTHER = logging.NOTSET
self.logger.log(level / 1000 - 10, message)
if self.logger:
self.logger.log(int(level / 1000), message)
if level < INFO or self.serviceLogger is False: # Only information and above will be on event log
if level < loglevel.ERROR or self.serviceLogger is False: # Only information and above will be on event log
return
if level < WARN: # Info
# In fact, we have restricted level in windows event log to ERROR or FATAL
# but left the code for just a case in the future...
if level < loglevel.WARN: # Info
servicemanager.LogInfoMsg(message)
elif level < ERROR: # WARN
elif level < loglevel.ERROR: # WARN
servicemanager.LogWarningMsg(message)
else: # Error & Fatal
servicemanager.LogErrorMsg(message)
def isWindows(self):
return True
def isLinux(self):
return False

View File

@ -0,0 +1,330 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014-2022 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
# pylint: disable=invalid-name
import os
import subprocess
import ctypes
from ctypes.wintypes import DWORD, LPCWSTR
import typing
import win32com.client
from win32com.shell import shell # pylint: disable=no-name-in-module,import-error
import win32net
import win32security
import win32api
import win32con
from .. import types
from ..log import logger
def checkPermissions() -> bool:
return shell.IsUserAnAdmin()
def getErrorMessage(resultCode: int = 0) -> str:
# sys_fs_enc = sys.getfilesystemencoding() or 'mbcs'
msg = win32api.FormatMessage(resultCode)
return msg
def getComputerName() -> str:
return win32api.GetComputerNameEx(win32con.ComputerNamePhysicalDnsHostname)
def getNetworkInfo() -> typing.Iterator[types.InterfaceInfoType]:
obj = win32com.client.Dispatch("WbemScripting.SWbemLocator")
wmobj = obj.ConnectServer("localhost", "root\\cimv2")
adapters = wmobj.ExecQuery(
"Select * from Win32_NetworkAdapterConfiguration where IpEnabled=True"
)
try:
for obj in adapters:
for ip in obj.IPAddress:
if ':' in ip: # Is IPV6, skip this
continue
if (
ip is None
or ip == ''
or ip.startswith('169.254')
or ip.startswith('0.')
): # If single link ip, or no ip
continue
yield types.InterfaceInfoType(
name=obj.Caption, mac=obj.MACAddress, ip=ip
)
except Exception:
return
def getDomainName() -> str:
'''
Will return the domain name if we belong a domain, else None
(if part of a network group, will also return None)
'''
# Status:
# 0 = Unknown
# 1 = Unjoined
# 2 = Workgroup
# 3 = Domain
domain, status = win32net.NetGetJoinInformation()
if status != 3:
domain = None
return domain
def getWindowsVersion() -> typing.Tuple[int, int, int, int, str]:
return win32api.GetVersionEx()
def getVersion() -> str:
verinfo = getWindowsVersion()
# Remove platform id i
return 'Windows-{}.{} Build {} ({})'.format(
verinfo[0], verinfo[1], verinfo[2], verinfo[4]
)
EWX_LOGOFF = 0x00000000
EWX_SHUTDOWN = 0x00000001
EWX_REBOOT = 0x00000002
EWX_FORCE = 0x00000004
EWX_POWEROFF = 0x00000008
EWX_FORCEIFHUNG = 0x00000010
def reboot(flags: int = EWX_FORCEIFHUNG | EWX_REBOOT) -> None:
hproc = win32api.GetCurrentProcess()
htok = win32security.OpenProcessToken(
hproc, win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY
)
privs = (
(
win32security.LookupPrivilegeValue(None, win32security.SE_SHUTDOWN_NAME),
win32security.SE_PRIVILEGE_ENABLED,
),
)
win32security.AdjustTokenPrivileges(htok, 0, privs)
win32api.ExitWindowsEx(flags, 0)
def loggoff() -> None:
win32api.ExitWindowsEx(EWX_LOGOFF)
def renameComputer(newName: str) -> bool:
'''
Changes the computer name
Returns True if reboot needed
'''
# Needs admin privileges to work
if (
ctypes.windll.kernel32.SetComputerNameExW(
DWORD(win32con.ComputerNamePhysicalDnsHostname), LPCWSTR(newName)
)
== 0
): # @UndefinedVariable
# win32api.FormatMessage -> returns error string
# win32api.GetLastError -> returns error code
# (just put this comment here to remember to log this when logger is available)
error = getErrorMessage()
computerName = win32api.GetComputerNameEx(
win32con.ComputerNamePhysicalDnsHostname
)
raise Exception(
'Error renaming computer from {} to {}: {}'.format(
computerName, newName, error
)
)
return True
NETSETUP_JOIN_DOMAIN = 0x00000001
NETSETUP_ACCT_CREATE = 0x00000002
NETSETUP_ACCT_DELETE = 0x00000004
NETSETUP_WIN9X_UPGRADE = 0x00000010
NETSETUP_DOMAIN_JOIN_IF_JOINED = 0x00000020
NETSETUP_JOIN_UNSECURE = 0x00000040
NETSETUP_MACHINE_PWD_PASSED = 0x00000080
NETSETUP_JOIN_WITH_NEW_NAME = 0x00000400
NETSETUP_DEFER_SPN_SET = 0x1000000
def joinDomain(
domain: str, ou: str, account: str, password: str, executeInOneStep: bool = False
) -> None:
'''
Joins machine to a windows domain
:param domain: Domain to join to
:param ou: Ou that will hold machine
:param account: Account used to join domain
:param password: Password of account used to join domain
:param executeInOneStep: If true, means that this machine has been renamed and wants to add NETSETUP_JOIN_WITH_NEW_NAME to request so we can do rename/join in one step.
'''
# If account do not have domain, include it
if '@' not in account and '\\' not in account:
if '.' in domain:
account = account + '@' + domain
else:
account = domain + '\\' + account
# Do log
flags: typing.Any = (
NETSETUP_ACCT_CREATE | NETSETUP_DOMAIN_JOIN_IF_JOINED | NETSETUP_JOIN_DOMAIN
)
if executeInOneStep:
flags |= NETSETUP_JOIN_WITH_NEW_NAME
flags = DWORD(flags)
lpDomain = LPCWSTR(domain)
# Must be in format "ou=.., ..., dc=...,"
lpOu = LPCWSTR(ou) if ou is not None and ou != '' else None
lpAccount = LPCWSTR(account)
lpPassword = LPCWSTR(password)
res = ctypes.windll.netapi32.NetJoinDomain(
None, lpDomain, lpOu, lpAccount, lpPassword, flags
)
# Machine found in another ou, use it and warn this on log
if res == 2224:
flags = DWORD(NETSETUP_DOMAIN_JOIN_IF_JOINED | NETSETUP_JOIN_DOMAIN)
res = ctypes.windll.netapi32.NetJoinDomain(
None, lpDomain, None, lpAccount, lpPassword, flags
)
if res:
# Log the error
error = getErrorMessage(res)
if res == 1355:
error = "DC Is not reachable"
logger.error('Error joining domain: {}, {}'.format(error, res))
raise Exception(
'Error joining domain {}, with credentials {}/*****{}: {}, {}'.format(
domain,
account,
', under OU {}'.format(ou) if ou is not None else '',
res,
error,
)
)
def changeUserPassword(user: str, oldPassword: str, newPassword: str) -> None:
# lpUser = LPCWSTR(user)
# lpOldPassword = LPCWSTR(oldPassword)
# lpNewPassword = LPCWSTR(newPassword)
# res = ctypes.windll.netapi32.NetUserChangePassword(None, lpUser, lpOldPassword, lpNewPassword)
# Try to set new password "a las bravas", ignoring old one. This will not work with domain users
res = win32net.NetUserSetInfo(None, user, 1003, {'password': newPassword})
if res:
# Log the error, and raise exception to parent
error = getErrorMessage(res)
raise Exception(
'Error changing password for user {}: {} {}'.format(user, res, error)
)
class LASTINPUTINFO(ctypes.Structure): # pylint: disable=too-few-public-methods
_fields_ = [
('cbSize', ctypes.c_uint),
('dwTime', ctypes.c_uint),
]
def initIdleDuration(atLeastSeconds: int): # pylint: disable=unused-argument
'''
In windows, there is no need to set screensaver
'''
return
def getIdleDuration() -> float:
try:
lastInputInfo = LASTINPUTINFO()
lastInputInfo.cbSize = ctypes.sizeof(
lastInputInfo
) # pylint: disable=attribute-defined-outside-init
if ctypes.windll.user32.GetLastInputInfo(ctypes.byref(lastInputInfo)) == 0:
return 0
current = ctypes.c_uint(ctypes.windll.kernel32.GetTickCount()).value
if current < lastInputInfo.dwTime:
current += 4294967296 # If current has "rolled" to zero, adjust it so it is greater than lastInputInfo
millis = current - lastInputInfo.dwTime # @UndefinedVariable
return millis / 1000.0
except Exception as e:
logger.error('Getting idle duration: {}'.format(e))
return 0
def getCurrentUser() -> str:
'''
Returns current logged in username
'''
return os.environ['USERNAME']
def getSessionType() -> str:
'''
Known values:
* Unknown -> No SESSIONNAME environment variable
* Console -> Local session
* RDP-Tcp#[0-9]+ -> RDP Session
'''
return os.environ.get('SESSIONNAME', 'unknown')
def writeToPipe(
pipeName: str, bytesPayload: bytes, waitForResponse: bool
) -> typing.Optional[bytes]:
# (str, bytes, bool) -> Optional[bytes]
try:
with open(pipeName, 'r+b', 0) as f:
f.write(bytesPayload)
# f.seek(0) # As recommended on intenet, but seems to work fin without thos
if waitForResponse:
return f.read()
return b'ok'
except Exception:
return None
def forceTimeSync() -> None:
try:
subprocess.call(
[r'c:\WINDOWS\System32\w32tm.exe', ' /resync']
) # , '/rediscover'])
except Exception as e:
logger.error('Error invoking time sync command: %s', e)

View File

@ -0,0 +1,77 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2019-2022 Virtual Cable S.L.U.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
# pylint: disable=invalid-name
import sys
import win32service
import win32serviceutil
import servicemanager
import win32timezone # pylint: disable=unused-import
from .service import UDSActorSvc
def setupRecoverService():
svc_name = UDSActorSvc._svc_name_ # pylint: disable=protected-access
hs = None
hscm = None
try:
hscm = win32service.OpenSCManager(None, None, win32service.SC_MANAGER_ALL_ACCESS)
try:
hs = win32serviceutil.SmartOpenService(hscm, svc_name, win32service.SERVICE_ALL_ACCESS)
service_failure_actions = {
'ResetPeriod': 864000, # Time in ms after which to reset the failure count to zero.
'RebootMsg': u'', # Not using reboot option
'Command': u'', # Not using run-command option
'Actions': [
(win32service.SC_ACTION_RESTART, 5000), # action, delay in ms
(win32service.SC_ACTION_RESTART, 5000)
]
}
win32service.ChangeServiceConfig2(hs, win32service.SERVICE_CONFIG_FAILURE_ACTIONS, service_failure_actions)
finally:
if hs:
win32service.CloseServiceHandle(hs)
finally:
if hscm:
win32service.CloseServiceHandle(hscm)
def run() -> None:
if len(sys.argv) == 1:
servicemanager.Initialize()
servicemanager.PrepareToHostSingle(UDSActorSvc)
servicemanager.StartServiceCtrlDispatcher()
elif sys.argv[1] == '--setup-recovery':
setupRecoverService()
else:
win32serviceutil.HandleCommandLine(UDSActorSvc)

View File

@ -0,0 +1,276 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
# pylint: disable=invalid-name
import struct
import typing
import win32serviceutil
import win32service
import win32security
import win32net
import win32event
import pythoncom
import servicemanager
import winreg as wreg
from . import operations
from . import store
from ..service import CommonService
from ..log import logger
REMOTE_USERS_SID = 'S-1-5-32-555' # Well nown sid for remote desktop users
class UDSActorSvc(win32serviceutil.ServiceFramework, CommonService):
'''
This class represents a Windows Service for managing actor interactions
with UDS Broker and Machine
'''
# ServiceeFramework related
_svc_name_ = "UDSActorNG"
_svc_display_name_ = "UDS Actor Service"
_svc_description_ = "UDS Actor Management Service"
_svc_deps_ = ['EventLog']
_user: typing.Optional[str]
_hWaitStop: typing.Any
def __init__(self, args):
win32serviceutil.ServiceFramework.__init__(self, args)
CommonService.__init__(self)
self._hWaitStop = win32event.CreateEvent(None, 1, 0, None)
self._user = None
def SvcStop(self) -> None:
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
self._isAlive = False
win32event.SetEvent(self._hWaitStop)
SvcShutdown = SvcStop
def notifyStop(self) -> None:
servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STOPPED, (self._svc_name_, ''))
super().notifyStop()
def doWait(self, miliseconds: int) -> None:
win32event.WaitForSingleObject(self._hWaitStop, miliseconds)
# On windows, and while on tasks, ensure that our app processes waiting messages on "wait times"
pythoncom.PumpWaitingMessages() # pylint: disable=no-member
def oneStepJoin(self, name: str, domain: str, ou: str, account: str, password: str) -> None: # pylint: disable=too-many-arguments
'''
Ejecutes the join domain in exactly one step
'''
currName = operations.getComputerName()
# If name is desired, simply execute multiStepJoin, because computer
# name will not change
if currName.lower() == name.lower():
self.multiStepJoin(name, domain, ou, account, password)
return
operations.renameComputer(name)
logger.debug('Computer renamed to {} without reboot'.format(name))
operations.joinDomain(domain, ou, account, password, executeInOneStep=True)
logger.debug('Requested join domain {} without errors'.format(domain))
self.reboot()
def multiStepJoin(self, name: str, domain: str, ou: str, account: str, password: str) -> None: # pylint: disable=too-many-arguments
currName = operations.getComputerName()
if currName.lower() == name.lower():
currDomain = operations.getDomainName()
if currDomain:
# logger.debug('Name: "{}" vs "{}", Domain: "{}" vs "{}"'.format(currName.lower(), name.lower(), currDomain.lower(), domain.lower()))
logger.debug('Machine {} is part of domain {}'.format(name, domain))
self.setReady()
else:
operations.joinDomain(domain, ou, account, password, executeInOneStep=False)
self.reboot()
else:
operations.renameComputer(name)
logger.info('Rebooting computer for activating new name {}'.format(name))
self.reboot()
def joinDomain( # pylint: disable=unused-argument, too-many-arguments
self,
name: str,
domain: str,
ou: str,
account: str,
password: str
) -> None:
versionData = operations.getWindowsVersion()
versionInt = versionData[0] * 10 + versionData[1]
logger.debug('Starting joining domain {} with name {} (detected operating version: {})'.format(domain, name, versionData))
# Accepts one step joinDomain, also remember XP is no more supported by
# microsoft, but this also must works with it because will do a "multi
# step" join
if versionInt >= 60 and not store.useOldJoinSystem():
self.oneStepJoin(name, domain, ou, account, password)
else:
logger.info('Using multiple step join because configuration requests to do so')
self.multiStepJoin(name, domain, ou, account, password)
def preConnect(self, userName: str, protocol: str, ip: str, hostname: str, udsUserName: str) -> str:
logger.debug('Pre connect invoked')
if protocol == 'rdp': # If connection is not using rdp, skip adding user
# Well known SSID for Remote Desktop Users
groupName = win32security.LookupAccountSid(None, win32security.GetBinarySid(REMOTE_USERS_SID))[0]
useraAlreadyInGroup = False
resumeHandle = 0
while True:
users, _, resumeHandle = win32net.NetLocalGroupGetMembers(None, groupName, 1, resumeHandle, 32768)
if userName.lower() in [u['name'].lower() for u in users]:
useraAlreadyInGroup = True
break
if resumeHandle == 0:
break
if not useraAlreadyInGroup:
logger.debug('User not in group, adding it')
self._user = userName
try:
userSSID = win32security.LookupAccountName(None, userName)[0]
win32net.NetLocalGroupAddMembers(None, groupName, 0, [{'sid': userSSID}])
except Exception as e:
logger.error('Exception adding user to Remote Desktop Users: {}'.format(e))
else:
self._user = None
logger.debug('User {} already in group'.format(userName))
return super().preConnect(userName, protocol, ip, hostname, udsUserName)
def ovLogon(self, username: str, password: str) -> str:
"""
Logon on oVirt agent
currently not used.
"""
# Compose packet for ov
usernameBytes = username.encode()
passwordBytes = password.encode()
packet = struct.pack('!I', len(usernameBytes)) + usernameBytes + struct.pack('!I', len(passwordBytes)) + passwordBytes
# Send packet with username/password to ov pipe
operations.writeToPipe("\\\\.\\pipe\\VDSMDPipe", packet, True)
return 'done'
def onLogout(self, userName: str, session_id: str) -> None:
logger.debug('Windows onLogout invoked: {}, {}'.format(userName, self._user))
try:
p = win32security.GetBinarySid(REMOTE_USERS_SID)
groupName = win32security.LookupAccountSid(None, p)[0]
except Exception:
logger.error('Exception getting Windows Group')
return
if self._user:
try:
win32net.NetLocalGroupDelMembers(None, groupName, [self._user])
except Exception as e:
logger.error('Exception removing user from Remote Desktop Users: {}'.format(e))
def isInstallationRunning(self):
'''
Detect if windows is installing anything, so we can delay the execution of Service
'''
try:
key = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State')
data, _ = wreg.QueryValueEx(key, 'ImageState')
logger.debug('State: %s', data)
return data != 'IMAGE_STATE_COMPLETE' # If ImageState is different of ImageStateComplete, there is something running on installation
except Exception: # If not found, means that no installation is running
return False
def SvcDoRun(self) -> None: # pylint: disable=too-many-statements, too-many-branches
'''
Main service loop
'''
servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STARTED, (self._svc_name_, ''))
# call the CoInitialize to allow the registration to run in an other
# thread
logger.debug('Initializing coms')
pythoncom.CoInitialize() # pylint: disable=no-member
# Check if some install is running on windows before proceeding
while self._isAlive:
if self.isInstallationRunning():
win32event.WaitForSingleObject(self._hWaitStop, 1000) # Wait a bit, and check again
continue
break
if not self._isAlive: # Has been stopped while waiting windows installations
self.finish()
return
# Unmanaged services does not initializes "on start", but rather when user logs in (because userservice does not exists "as such" before that)
if self.isManaged():
if not self.initialize():
logger.info('Service stopped due to init')
self.finish()
win32event.WaitForSingleObject(self._hWaitStop, 5000)
return # Stop daemon if initializes told to do so
# Initialization is done, set machine to ready for UDS, communicate urls, etc...
self.setReady()
else:
if not self.initializeUnmanaged():
self.finish()
return
# Start listening for petitions
self.startHttpServer()
# *********************
# * Main Service loop *
# *********************
# Counter used to check ip changes only once every 10 seconds
counter = 0
while self._isAlive:
counter += 1
try:
pythoncom.PumpWaitingMessages() # pylint: disable=no-member
if counter % 5 == 0: # Once every 5 seconds
self.loop()
except Exception as e:
logger.error('Got exception on main loop: %s', e)
# Continue after a while...
# In milliseconds, will break if event hWaitStop is set
win32event.WaitForSingleObject(self._hWaitStop, 1000)
logger.debug('Exited main loop')
self.finish()

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