914 Commits

Author SHA1 Message Date
c8debe9b13 legacy: fix error reporting. 2024-07-22 23:30:45 +02:00
4adf1d7182 fix locks. 2024-07-21 15:29:37 +02:00
75ad4cefe6 fix PluginSettings. 2024-07-21 15:25:49 +02:00
cffeedd6b5 undo ws change on client. 2024-07-21 15:23:31 +02:00
667a54e9d9 fix control give for users. 2024-07-21 14:53:55 +02:00
c0e5804b3b add ADMIN_CONTROL. 2024-07-21 00:33:04 +02:00
4457df94a3 add emote & fix host id. 2024-07-21 00:19:04 +02:00
2adb93bc8e handle sessions on connected / disconnected. 2024-07-20 23:56:14 +02:00
ccd1598b54 add legacy webrtc handler. 2024-07-20 23:37:20 +02:00
771dc1f46f legacy adapter - add http calls. 2024-07-20 16:12:36 +02:00
260a1973f5 WIP legacy adapter. 2024-07-20 15:45:01 +02:00
e4c0c68d79 WIP: legacy WS. 2024-07-19 19:10:27 +02:00
5527642878 fix broadcast typo. 2024-07-18 23:54:20 +02:00
35edeb94b2 add V2: prefix to all config options. 2024-07-18 21:54:53 +02:00
03733a9cd3 allow setting desktop / capture display separately. 2024-07-18 21:52:00 +02:00
dbf9fc6ebc add v2 compatible config. 2024-07-18 21:48:09 +02:00
f2eab73847 WIP: legacy config integration. 2024-07-18 20:44:59 +02:00
51fb1e7bbe add AV1 codec. 2024-07-18 18:45:08 +02:00
ac76894800 Merge remote-tracking branch 'origin/demodesk-client-v3' into v3 2024-06-23 17:57:19 +02:00
5b98344205 move server to server directory. 2024-06-23 17:48:14 +02:00
da45f62ca8 chat: use can send & can receive in settings and profile. 2024-06-16 18:10:55 +02:00
37b131c74c fix plugin settings unmarshal by changing to "name.key". 2024-06-16 18:08:46 +02:00
43467dcac1 filetransfer: use enabeld in settings and profile. 2024-06-16 17:27:42 +02:00
5a04066c55 add PluginSettings unmarshaller. 2024-06-16 16:42:32 +02:00
ae117ccdbb fix dev scripts. 2024-06-16 16:26:42 +02:00
f65f262d48 WIP: add chat plugin. 2024-06-09 19:05:21 +02:00
fc3b6f2e21 OnProfileChanged add new & old profile. 2024-06-09 18:02:01 +02:00
59b2faec66 add control requesting to the host. 2024-05-10 12:41:51 +02:00
0e8108e9a4 add session delete and disconnect to API. 2024-05-09 10:28:58 +02:00
416faa3df4 add session to host change. 2024-05-06 23:47:13 +02:00
b562c797b3 remove goformat from settings.json. 2024-05-05 00:03:47 +02:00
57ffca0bed add session to settings change. 2024-05-05 00:03:32 +02:00
d47302e2cd remo superfluous structs from keyboard api. 2024-05-03 22:41:42 +02:00
b90eb87c22 unify types.ScreenSize and add ID to screen size update. 2024-05-03 22:40:56 +02:00
0f45aa3f19 implement control protection. 2024-04-21 20:10:16 +02:00
3ee6078256 add filetransfer lock. 2024-04-20 17:13:32 +02:00
a61eade929 add LockedLogins to settings. 2024-04-20 14:27:15 +02:00
a178bede87 add filetransfer plugin. 2024-04-19 20:22:43 +02:00
00c7e6dfb2 Move X11 error handler registration to before screen sets (#62)
If X11 throws an error during screen config get/set, the default error
handler at the time will be one which causes a program exit. This
splits the error handler registration in xevent into its own call,
allowing us to register our error handler earlier on. This results in
the safe error handling logic actually being called instead of a full
program exit.
2024-03-27 21:38:33 +01:00
8981051945 remove webrtc.iceservers from flags. 2024-02-20 18:16:02 +01:00
5a16143cfe fix mode info memory leak. 2024-02-20 18:15:22 +01:00
ce3830f6a0 fix: base64 password hash in file members provider to avoid json issues. 2024-02-14 21:45:04 +01:00
9353773bfb fix vscode settings. 2024-01-26 19:34:09 +01:00
45ca1b7b6c fix docker nvidia. 2024-01-26 19:33:52 +01:00
670b8ec5a7 upgrade go deps. 2024-01-26 18:54:40 +01:00
014c8fa586 Bullseye alongside Bookworm (#61)
* revert to bullseye.

* add bookworm.

* add bookworm to variants.

* include xf86-video-dummy because the remote git instance is offline.

* fix configure.
2024-01-26 18:47:40 +01:00
3dbcc41795 upload drop to config. 2023-11-24 10:44:24 +01:00
b40c0778c8 file chooser dialog diabled by default. 2023-11-24 10:39:09 +01:00
d9bcde3331 sha256 hash password. (#60) 2023-11-19 15:31:18 +01:00
9d1ea87128 members bulk delete. (#59) 2023-11-19 15:19:47 +01:00
501280f8aa server proxy, router opts and optional CORS. 2023-11-19 14:35:19 +01:00
cd9d31a627 upgrade go deps. 2023-11-06 15:21:05 +01:00
801b5b198f Bump golang.org/x/net from 0.12.0 to 0.17.0 (#58)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.12.0 to 0.17.0.
- [Commits](https://github.com/golang/net/compare/v0.12.0...v0.17.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-01 11:16:47 +01:00
8753e7b69a members: add multiuser profile. 2023-09-25 18:28:05 +02:00
d09e421a51 Remove dbus (#55)
* remove dbus.

* xfce needs dbus installed.
2023-09-11 16:49:45 +02:00
4da7869e70 Add Xorg modifiers (#57)
* implement additional modifiers to xorg.

* xorg modifiers to API.

* update modifiers api & add ws.

* scroll pos rename to delta and add ctrl key.
2023-09-11 16:34:57 +02:00
a392163819 fix runtime dockerfile. 2023-09-10 19:38:07 +02:00
5f321b52e5 cleanup nvidia dockerfile. 2023-09-09 15:25:12 +02:00
6f61e0262a xf86-input-neko: extract init touch to own func. 2023-09-07 16:06:20 +02:00
d82b640ecc xf86-input-neko: do not turn off device on uninit. 2023-09-07 14:27:24 +02:00
5ceef394ca maintain backward compatibility with g_memdup. 2023-09-06 19:12:41 +02:00
05403cc0c6 Upgrade to bookworm (#54)
* upgrade to bookworm.

* g_memdup is deprecated: Use g_memdup2 instead.

* upgrade nvidia dockerfile.

* revert devcontainer.
2023-09-05 23:01:18 +02:00
25a65863bb fix devcontainer. 2023-08-17 17:00:09 +02:00
ea5517b270 Xorg input driver (#53)
* add xf86 input driver.

* cleanup.

* rewrite to unix socket PoC.

* add input rebuild.

* lint & docs.

* add input driver struct.

* comments, lint, socket name from config.

* add touch events to webrtc.

* switch to uint32.

* misc update logging & linting,

* fix screen size

* set touchscreen as core pointer.

* add touch to ws control.

* SendCoreEvents.

* extract to own xinput folder.

* add debounce.

* switch pressure to uint8.

* check buffer size.

* send touch events with system init.
2023-08-17 16:14:59 +02:00
4cb1b3e925 upgrade go dependencies. (#52) 2023-07-16 16:49:51 +02:00
ecc68dd644 fix devcontainer. 2023-07-08 16:14:11 +02:00
e3e9d1606d Refactor signaling for video and audio (#51)
* add audio and signal request.

* disable audio by default.

* fix SignalProvide.

* disable estimator when track disabled.
2023-06-26 21:27:14 +02:00
cf17f4f503 add estimator comments to config. 2023-06-07 17:41:16 +02:00
e83c447e52 fix control give API. 2023-06-06 21:49:57 +02:00
6b3bc17334 update README.md. 2023-05-21 13:19:23 +02:00
ac76c81f69 Upgrade go dependencies (#50)
* upgrade go dependencies.

* remove testify deep equal.
2023-05-19 22:29:25 +02:00
dfc7eb3882 Fix noisy errors (#49)
* send message error.

* read message error.

* close webrtc conn only if not closed yet.

* file upload no files received.
2023-05-19 17:19:38 +02:00
3e8d686c0f Bandwidth estimator refactor (#46)
* rewrite to use stream selector.

* WIP.

* add nacks to metrics.

* add estimate trend.

* estimator based on trend detector.

* add estimator unstable duration.

* add estimator debug.

* add stalled duration.

* estimator move values to config.

* change default estimator values.

* minor style changes.

* fix websocket video messages.

* replace video track with ivdeo id.
2023-05-15 19:29:39 +02:00
8660c1a256 add sessions to API. 2023-05-15 16:47:59 +02:00
848556adbd add time stats to state. 2023-05-15 16:47:59 +02:00
82401391c8 add locked_controls to openapi. 2023-05-15 16:47:28 +02:00
0760976b4b set all settings initially using config. 2023-05-15 16:47:28 +02:00
cf4e0666fe add locked controls to settings. 2023-05-15 16:47:28 +02:00
b8fccc4d07 add settings plugins to openapi. 2023-04-28 23:54:01 +02:00
173bc6b053 CI build variant only on tag. 2023-04-28 23:53:05 +02:00
a4f9f0bff5 CI build variant. 2023-04-28 23:12:26 +02:00
a75ae187b4 add plugin scope to settings. 2023-04-28 22:53:41 +02:00
52b4cbcbdf add path prefix to server. 2023-04-28 22:19:52 +02:00
c70c8217de add unminimize. 2023-04-24 22:19:48 +02:00
466185fc24 fixed by using XFlush. 2023-04-24 22:19:48 +02:00
47a3f6d6fb twice toggle maximizes for fullscreen. 2023-04-24 22:19:48 +02:00
3ef4c5ce0f use DefaultRootWindow. 2023-04-24 22:19:48 +02:00
0ea1c2870f Refactor websocket session sync (#44)
* refactor websocket peer and comment functions.

* update comments.

* add DestroyWebSocketPeer.
2023-04-23 11:23:20 +02:00
43f8fe339f webrtc peer do not set nil conn. 2023-04-18 12:07:49 +02:00
5a2fcc1c8a move consts. 2023-04-18 12:07:49 +02:00
3f375c037f fix track rtcp & paused. 2023-04-18 12:07:49 +02:00
fcf6822833 move estimator to peer. 2023-04-18 12:07:49 +02:00
1ba561b192 fix logging. 2023-04-18 12:07:49 +02:00
c2b29ccf21 handle use webrtc logger. 2023-04-18 12:07:49 +02:00
e8aab98012 refactro cursor image and pos. 2023-04-18 12:07:49 +02:00
728e27da34 minor changes, moving things around. 2023-04-18 12:07:49 +02:00
a2e0aeec77 receiver stop error reporting. 2023-04-18 12:07:49 +02:00
dfea7fca42 refactor handler. 2023-04-18 12:07:49 +02:00
c676d7a3a2 move collectors to metrics. 2023-04-18 12:07:49 +02:00
5f0aafca51 remove deprecated functions. 2023-04-18 12:07:49 +02:00
9d362ed036 move change funcs to peer. 2023-04-18 12:07:49 +02:00
ec8560b290 add session & metrics to webrtc peer. 2023-04-18 12:07:49 +02:00
9928feefef refactor metrics. 2023-04-18 12:07:49 +02:00
7cd469f7bd cleanup peer. 2023-04-18 12:07:49 +02:00
e66cd3978d Build gstreamer in nvidia image (#36)
* build gstreamer 1.20 for nvidia dockerfile.

* add nvidia to build.

* add nvidia to start.

* add config for nvidia.

* upgrade cuda ro 11.4.3.

* add cudaconvert to comment.

* fix paths.

* add cuda to ld.

* upgrade supervisord version.

* add config to suprtvisord in rebuild.

* update nvenc params.

* update nvidia dockerfile.

* h264 profile constrained-baseline.

* h264 send SPS PPS with every IDR.
2023-04-04 23:52:15 +02:00
3f117af3b9 upgrade go dependencies. (#41) 2023-03-31 19:35:09 +02:00
bdebcd3221 pulseaudio log level error. 2023-03-31 19:07:38 +02:00
1a752e43d2 Add plugins required flag (#40)
* add required plugins flag.

* update plugins logs.

* add plugins subcommand.

* move preflight to prerun.
2023-03-31 12:02:33 +02:00
43a649d2c4 websockets set max payload log size. (#42) 2023-03-31 12:02:19 +02:00
2ff47ac920 fix: ensure webrtc close is executed only once. 2023-03-27 19:28:28 +02:00
08a5d5abb4 Split ICE Servers to frontend and backend (#37)
* split iceservers to frontend and backend.

* no backend ice servers when ice lite enabled.

* update config.
2023-03-27 18:34:24 +02:00
f8edd988b3 configure pulseaudio from env. (#39) 2023-03-27 18:34:05 +02:00
09508638ce session save & load from a file. (#38) 2023-03-27 18:33:51 +02:00
fa69ddd984 streamsink total bytes metric counter. 2023-03-17 20:20:23 +01:00
362bcd3852 nvidia switch to virtualgl 3.1. 2023-03-17 12:12:38 +01:00
9936a04fea add passive estimator & REMB back. (#35) 2023-03-13 17:55:52 +01:00
0de8ffc773 update screen rate set. (#34) 2023-03-13 17:55:41 +01:00
17bfd2d58f Sample listeners chan (#33)
* switch to sample listeners.

* add streamsink total bytes to metrics.

* on rtcp to chan.

* change logs.

* streamsink add real bitrate.

* add timing information to sample.

* bitrate buckets.

* switch to WriteSample.
2023-03-07 00:08:53 +01:00
38fc21aabc upgrade deps. 2023-02-28 10:09:18 +01:00
a9e6736ca4 upgrade deps. 2023-02-28 10:02:20 +01:00
977662affe Upgrade to go 1.20 (#30)
* upgrade dependencies.

* videoscale element to nearest neighbor.
2023-02-26 21:57:02 +01:00
a4a3ff79ad Toggle estimator config (#32)
* add estimator to conifg.

* ensure video auto is false when estimator is disabled.
2023-02-26 21:54:10 +01:00
64abfd0b1a cursors increase max serial to 300. 2023-02-21 00:14:50 +01:00
ccaaacac7c do not round height to 8. 2023-02-20 19:49:39 +01:00
30200d4057 Switch to listeners for webrtc pause (#31)
* switch to listeners for webrtc pause.

* group track vars.

* do not set or remove stream when paused.
2023-02-20 19:48:04 +01:00
0086900053 GCC No-Op Pacer (#29)
* on rtcp send multiple packets.

* use no op pacer.
2023-02-14 21:19:14 +01:00
124c5ae117 Wait for keyframe on switching streams (#28)
* stream sink add keyframe lobby.

* change streamsink keyframe identifier.

* add h264.

* use gstreamers is delta unit for sample.

* use delta unit.
2023-02-14 21:19:02 +01:00
f8b128e1e9 Custom sizes with XRandR (#25)
* xserver dummy with RandR.

* update.

* remove screen configurations from xorg.

* screen size cannot be nil anymore.

* use predefined screen configurations.

* use screen configurations.

* fix error.

* remove comment.
2023-02-14 21:18:47 +01:00
bfabee12e2 gst emit video keyframe on demand. (#27) 2023-02-07 21:43:14 +01:00
2364facd60 WebRTC congestion control (#26)
* Add congestion control

* Improve stream matching, add manual stream selection, add metrics

* Use a ticker for bitrate estimation and make bandwidth drops switch to lower streams more aggressively

* Missing signal response, fix video auto bug

* Remove redundant mutex

* Bitrate history queue

* Get bitrate fn support h264 & float64

---------

Co-authored-by: Aleksandar Sukovic <aleksandar.sukovic@gmail.com>
2023-02-06 19:45:51 +01:00
e80ae8019e set answering dtls role as server. (#24) 2023-01-30 11:31:30 +01:00
a72648c409 add dockerfile. (#22) 2023-01-27 22:32:33 +01:00
94981e30aa chore: add more resolutions
- 25 fps 2k
- 25 fps 1600x900
- 25 fps 1368x768
- 25 fps 800x1600
2023-01-23 17:04:32 +01:00
813a0da30c WebRTC ping over data channel (#23)
* add datachannel ping to webrtc.

* add ping pong decode func.
2023-01-20 23:08:27 +01:00
ba0dea8022 switch to xkb. 2023-01-16 13:54:17 +01:00
eac9796c47 no free keycodes, pick last two keycodes anyway. 2023-01-16 13:54:17 +01:00
67cc23fd53 circular list for free keycodes. 2023-01-16 13:54:17 +01:00
bd04ca88e8 fix missing error message on wrong config. 2023-01-13 12:01:58 +01:00
8381020415 default provider: multiuser. 2023-01-13 12:01:58 +01:00
7601af9917 fix default pipeline. 2023-01-13 12:01:58 +01:00
1fb5ae43dd allow multiple users to be set in object provider. 2023-01-13 12:01:58 +01:00
107eba22a5 select profile primarily from corresponding session, if exists. 2023-01-13 12:01:58 +01:00
2ff8d84ba2 fix errors. 2023-01-13 12:01:58 +01:00
af95cb4d72 change dummy to noauth mode. 2023-01-13 12:01:58 +01:00
319bd457f3 add multiuser provider. 2023-01-13 12:01:58 +01:00
e5c84469ce MemberProvider: add variable names. 2023-01-13 12:01:58 +01:00
6574470278 login logout proper http error handling. 2023-01-12 23:21:56 +01:00
b793e5b377 add stereo to opus codec. 2023-01-12 20:34:09 +01:00
3c3042d691 Add batch endpoint (#19)
* add batch endpoint.

* keep error code.

* use utils.HttpSuccess.

* add batch to openapi.

* body omitempty.
2023-01-09 23:18:47 +01:00
fb8462b56a Add WebRTC candidate metrics (#18)
* stats: add protocol to iceCandidates.

* add ice candidates used metric.

* NewICECandidate use whole struct.
2022-12-16 13:49:51 +01:00
b49f545094 properly log unhandled panics. 2022-12-15 22:15:50 +01:00
6b39e8e0e8 Fix WebRTC mux issues (#17)
* use NewMultiUDPMuxFromPort.

* tcp mux add write buffer size.
2022-12-13 11:35:03 +01:00
919a554a9e track WriteSample fix log message. 2022-12-12 22:53:26 +01:00
05c4fa34c5 fix indirect dependencies. 2022-11-28 22:09:33 +01:00
833c0d5e86 upgrade dependencies. 2022-11-28 21:32:20 +01:00
09f213f442 remove /var/log/neko fom Dockerfile. 2022-11-11 19:46:25 +01:00
7946afaffe fix dev supervisord. 2022-11-11 19:43:09 +01:00
2cb64d15a0 send heartbeat with ping. (#16) 2022-11-11 17:58:54 +01:00
482476489e supervisord add -s flag (#15)
* fix duplicate supervisord logs.

* add -s flag.
2022-11-11 17:40:50 +01:00
3d131bb42a supervisord separate logging. 2022-11-10 18:18:39 +01:00
d894e888b8 fix generic plugin error message. 2022-10-25 22:46:21 +02:00
6067367acd Capture bandwidth switch (#14)
* Handle bitrate change by finding the stream with closest bitrate as peer

* Convert video id into bitrate when creating peer or changing bitrate

* Try to fix prometheus panic

* Revert metrics label name change

* minor fixes.

* bitrate selector.

* skip if moving to the same stream.

* no closure for getting target bitrate.

* fix: high res switch to lo video, stream bitrate out of range

* revert dev config change.

* white space.

Co-authored-by: Aleksandar Sukovic <aleksandar.sukovic@gmail.com>
2022-10-25 20:25:00 +02:00
e0bee67e85 fix build pipe redirection. 2022-10-24 22:54:28 +02:00
d608e312eb check if we already listen to requested stream. (#13) 2022-10-23 11:31:25 +02:00
5ad5daa6bb Stream bucket manager (#12)
* refactor webrtc.

* bind track with a single connection.

* audio+video codec.

* move stream selection to bucket manager.

* audio w/o bucket manager.

* revert peer changes.

* return video IDs.

* destroy & recreate all.

* add video ID change.

* Track -> Recevier.
2022-10-17 13:39:31 +02:00
095f9fe8ee gst as interface. (#11) 2022-10-13 19:57:31 +02:00
0badeeee36 Fix cursor size. (#10)
* fix cursor size.

* folders -> config.
2022-10-04 20:21:40 +02:00
c34a76c8a3 broadcast url in config. 2022-09-23 17:21:33 +02:00
194fd29679 capture fix replaces for pipelines. 2022-09-23 17:21:33 +02:00
da24f92e72 broadcast log url. 2022-09-23 17:21:33 +02:00
3eedbbf8ea broadcast pipeline fn. 2022-09-23 17:21:33 +02:00
a6f117686f create pipeline fn return error. 2022-09-23 17:21:33 +02:00
d5863d8b95 set WebRTC video codec H.264 profile-level-id to 42e01f to be compatible with Firefox clients. 2022-09-13 22:21:56 +02:00
f512b97708 fix whitespace. 2022-09-13 22:21:08 +02:00
23ce5c0cdd switch to gtk popup window. 2022-09-12 21:19:21 +02:00
d35c237f48 gst remove main loop. 2022-09-12 21:19:21 +02:00
c793ff1ff6 kataras/go-events@v0.0.3 Once workaround. 2022-09-12 21:19:21 +02:00
6d2ba7b640 name caps and encoder. 2022-09-10 23:26:41 +02:00
0488976dd6 gstreamer add API. 2022-09-10 23:26:41 +02:00
938ea38cd6 fix build git repo check. 2022-08-27 16:59:02 +02:00
291750c1d7 fix build git repo check. 2022-08-26 20:21:00 +02:00
691150900b Temporary websocket disconnect handling (#6)
* fix websocket close log error.

* logger session interface no pointer.

* websocket delayet disconnect.

* session host: save id not pointer to a session.

* fix if hostId not stored.
2022-08-26 20:16:40 +02:00
5612b80634 add README. 2022-08-01 00:26:53 +02:00
a6813f994c ws control buttons & keys add optional pos. 2022-07-28 12:43:31 +02:00
7d5ec0190a add button events to control WebSocket. 2022-07-28 12:43:31 +02:00
f4a4e0152e webrtc SetCursorPosition. 2022-07-28 12:43:31 +02:00
81531d74c1 websocket move cursor & scroll. 2022-07-28 12:43:31 +02:00
babddacbf3 Go generics and changes in v1.18 (#5)
* ArrayIn to use generics.

* interface{} -> any.
2022-07-28 12:20:20 +02:00
c725e96c90 change shutdown order. (#4) 2022-07-28 12:19:58 +02:00
472fd5f346 add LICENSE. 2022-07-18 22:08:47 +02:00
c85d1f3159 Add GitHub Actions (#2) 2022-07-15 00:29:57 +02:00
52ba7d987f plugins buildvcs. 2022-07-14 23:47:45 +02:00
d08829493a add plugins folder. 2022-07-14 22:10:41 +02:00
b7926c335e dev config add round. 2022-07-14 22:10:41 +02:00
3cd59b9f30 rename module name from gitlab to github. 2022-07-14 22:10:41 +02:00
41df1bc8d3 build - ensure plugins folder exists. 2022-07-14 22:10:41 +02:00
757437111e add build scripts. 2022-07-14 22:10:41 +02:00
a1f7b23f9d add openapi. 2022-07-14 22:10:41 +02:00
43fa56f5af update gitignore. 2022-07-14 22:10:41 +02:00
e181abf577 set version from git tag. 2022-07-04 19:14:52 +02:00
1064cc4eb5 go mod upgrade. 2022-07-04 18:28:38 +02:00
2bf83f6217 add metrics to config. 2022-07-04 18:26:29 +02:00
bf47e5a8d0 cleanup. 2022-07-04 18:23:35 +02:00
8f83089c8e move to /health and exclude metrics from logging. 2022-07-04 18:09:47 +02:00
e37f5c13ca fix bug. 2022-07-04 18:03:35 +02:00
8ada0217d0 reset counters when closed. 2022-07-04 17:47:04 +02:00
d5c934f2af add ReceiverReport. 2022-07-04 01:01:03 +02:00
fb707f05a6 join bytes by a label. 2022-07-04 00:48:29 +02:00
01b5d61e2b add receiverEstimatedMaximumBitrate. 2022-07-04 00:38:46 +02:00
3fda00bac5 add video id for webrtc metrics. 2022-07-03 23:21:25 +02:00
e4261c53b1 iceCandidatesMu. 2022-07-03 23:06:56 +02:00
bb35695255 split sctp and ice bytes. 2022-07-01 00:16:39 +02:00
7a1c8813e6 metrics connection State Count. 2022-06-30 23:54:06 +02:00
fc5c017666 stats ice Candidates Count. 2022-06-30 23:50:47 +02:00
8e80ef2c69 streamsrc mutex. 2022-06-25 23:53:19 +02:00
527b1f08f8 add webrtc metrtics. 2022-06-25 20:12:42 +02:00
555fd803bc add active pipelines. 2022-06-19 01:03:16 +02:00
5ab4848580 join pipelines_total. 2022-06-19 00:51:17 +02:00
ef7e9b1a53 move metrics to /metrics. 2022-06-14 22:34:51 +00:00
6deaa64884 capture metrics. 2022-06-15 00:23:16 +02:00
0952be6a94 add chi metrics middleware. 2022-06-15 00:22:27 +02:00
5b7784f2a4 add auth test. 2022-05-14 17:40:49 +02:00
ff85f0b11b PluginsGenericOnly debug types. 2022-05-14 00:30:58 +02:00
a31ad44bb8 plugins generic only. 2022-05-12 00:12:15 +02:00
91c8f0886b optionally rebuild plugins. 2022-05-08 00:32:20 +02:00
0e6b411988 skip plugin build if no go.plug.mod. 2022-05-08 00:22:45 +02:00
52642dbeb6 add plugins to member profile. 2022-05-08 00:15:36 +02:00
d5425ea457 clipboard set for control paste. 2022-05-03 19:57:31 +00:00
49ff490640 load plugins in order of dependencies. 2022-05-03 11:17:04 +00:00
cd2d9b413d build plugins with own modfile. 2022-05-03 08:15:44 +00:00
ae7e6dc2d7 add error to plugin start. 2022-04-20 09:31:37 +00:00
61059c9b3c revert backwards compatibility. 2022-04-19 10:16:59 +00:00
fdd0639036 expose plugin service. 2022-04-19 10:14:59 +00:00
35892f4ed1 upgrade to go 1.18. 2022-04-15 19:38:12 +00:00
a4bb108168 replace modules with go plugins. 2022-04-15 19:28:00 +00:00
f447cabe2e add patch method to router. 2022-04-14 08:47:47 +00:00
149d74150b sessions in private still get cursor info & send inactive. 2022-03-27 00:35:33 +01:00
470f670865 private mode release control. 2022-03-27 00:32:21 +01:00
58fca708a7 add settings update to API. 2022-03-27 00:26:25 +01:00
7d53e59945 properly clear inactive cursors. 2022-03-27 00:26:11 +01:00
81867d811b sessions: switch to settings struct. 2022-03-27 00:08:06 +01:00
d004ddd68f private mode implementation. 2022-03-26 23:20:38 +01:00
f549171ded opus useinbandfec. 2022-03-24 21:48:51 +01:00
192095da86 upgrade dependencies. 2022-03-23 12:07:56 +01:00
8593d2d0fd move shared code to pkg. 2022-03-20 11:43:00 +01:00
94c17e9a42 rename module to gitlab.com/demodesk/neko/server. 2022-03-20 11:27:41 +01:00
aa556b7839 go mod tidy. 2022-03-09 13:34:01 +01:00
d108343ced Logs JSON output. 2022-03-07 10:05:02 +00:00
f32e7e7075 fix-races. 2022-02-14 17:41:47 +00:00
89ba775a71 add pprof. 2022-02-12 20:22:50 +01:00
d068698836 update logging. 2022-02-12 18:55:56 +01:00
55a2b14aea webrtc implement signal close. 2022-02-12 18:46:00 +01:00
d20fa071e7 register negotiation event after initial offer. 2022-02-10 23:39:52 +01:00
369d8f3ccf peer webrtc connection check. 2022-02-10 00:12:30 +01:00
c83883fd1e vscode debugging. 2022-02-09 23:10:29 +01:00
924be20505 WebRTC TCP and UDP mux. 2022-02-09 20:45:03 +00:00
c2cf9277dc emit /recevie samples on demand. 2022-01-22 17:58:05 +01:00
26ab7fa12d add control cut. 2022-01-30 17:53:22 +01:00
e8c7ab421a control actions with requests. 2022-01-30 17:52:50 +01:00
f6eb8d0315 ws handler simplify logging. 2022-01-30 17:47:28 +01:00
fcc85aa9d6 desktop control websocket. 2022-01-30 01:25:04 +01:00
0d6335ebcd fileChooserDialog use keypress. 2022-01-30 01:23:05 +01:00
b261217cbe add KeyPress func. 2022-01-30 01:22:07 +01:00
5c05d1009b add keysymdef generator. 2022-01-30 01:20:26 +01:00
c129c99a36 add zip and curl to container. 2022-01-21 09:43:38 +01:00
9475e917a3 upgrade deps. 2022-01-17 19:39:15 +01:00
499256492a config flag with -c. 2022-01-16 21:03:37 +01:00
646b6ecaff cookie expiration as time duration. 2022-01-16 21:03:25 +01:00
0dd11fc1b7 move configs to serve. 2022-01-16 20:35:57 +01:00
66d22dede4 configs to root. 2022-01-14 00:22:23 +01:00
62353c776d move logic to serve. 2022-01-14 00:21:56 +01:00
552c4e37bc change pulseaudio log level. 2022-01-08 23:56:10 +01:00
8b6a2ed6d6 add webcam resolution + to config. 2022-01-08 23:53:45 +01:00
dc33aa37bc add v4l2loopback to comments. 2022-01-06 22:35:12 +01:00
14a2e698ac add stop fn to remote track. 2022-01-06 22:28:34 +01:00
0f9f9a376c fix remote track logging. 2022-01-06 20:41:44 +01:00
6b14e01415 add media to capture config. 2021-12-09 23:22:24 +01:00
21140d3dd3 fix broadcast config. 2021-12-09 22:58:12 +01:00
670e0ee17d member profile can share media. 2021-12-09 21:48:02 +01:00
b653856994 fix v4l2sink sync. 2021-12-05 22:25:35 +01:00
6431f63da7 v4l2 drop-allocation. 2021-12-05 22:11:52 +01:00
9a6eb942a4 keep appsrc / appsink in ctx. 2021-12-05 22:06:42 +01:00
8de5cb2f4a fix gst log. 2021-12-05 21:33:30 +01:00
f9fe303b50 gst destroy remove. 2021-12-05 21:31:40 +01:00
b932e94f77 gst refactor to use ctx. 2021-12-05 18:16:26 +01:00
7c3a24a613 add zerolog to gst. 2021-12-05 17:52:25 +01:00
09cb1e9c6a webcam add videoconvert. 2021-12-05 16:35:04 +01:00
64c3449322 pipeline error handling. 2021-12-02 23:35:38 +01:00
d70ae4410f implement webcam. 2021-12-02 23:06:21 +01:00
9f9956d047 upgrade deps. 2021-12-02 21:41:53 +01:00
5643e7abbc add streamsrc to capture. 2021-12-01 22:36:45 +01:00
a6eca45e7f implement codec parse. 2021-12-01 22:34:36 +01:00
0a94191a5f rename to StreamSink. 2021-12-01 20:30:18 +01:00
065a7a2e84 gst minor changes. 2021-12-01 19:55:57 +01:00
75b1e08874 virtual microphone OnTrack. 2021-11-28 23:16:26 +01:00
7bc9a40677 gst push function. 2021-11-28 22:37:17 +01:00
710d0c9cd0 gst extract appsink. 2021-11-28 22:19:06 +01:00
7b2c1570bf add SDP answer. 2021-11-28 18:36:47 +01:00
096efe9b38 add on track log. 2021-11-25 23:46:06 +01:00
0075cdca2b implement OnNegotiationNeeded. 2021-11-25 21:43:39 +01:00
44e74e3088 implement signal offer. 2021-11-25 00:07:17 +01:00
a260ce6a60 fix comments. 2021-11-18 22:01:41 +01:00
ddf44cbeac add audio input sink. 2021-11-18 21:48:43 +01:00
097e8d2a87 Inactive cursors - multiple positions. 2021-11-12 15:27:05 +00:00
8dbe0d1d2d add .idea to .gitignore. 2021-11-09 15:40:47 +00:00
1b95728870 clear CanHost dependency from SendsInactiveCursor. 2021-11-08 18:45:34 +01:00
15cb4300a5 cursors add currentEmpty. 2021-11-07 21:23:23 +01:00
6b77f54b8c inactiveCursors to own func. 2021-11-03 23:52:44 +01:00
437eb44003 inactive cursors access control. 2021-11-03 21:59:38 +01:00
6b417131f2 inactive cursors default false. 2021-11-01 21:35:15 +01:00
6fa2f4513f add InactiveCursors to ws init. 2021-11-01 18:38:16 +01:00
3528766e7f inactive cursors to config. 2021-11-01 17:49:02 +01:00
28c22a254b use types.Cursor. 2021-11-01 17:31:00 +01:00
1025eedc22 inactive cursor length rewrite. 2021-10-26 22:35:38 +02:00
78e4c38264 lastEmpty session cursors. 2021-10-26 21:07:57 +02:00
0b5e064cab add sessions cursors. 2021-10-24 01:09:41 +02:00
318b833b30 set position in session. 2021-10-23 20:25:18 +02:00
60f459392a webrtc handle. 2021-10-21 22:55:01 +02:00
2068c0ee05 webrtc remote desktop from cursor pos. 2021-10-21 22:53:54 +02:00
d5c0c62675 lint fix minor problems. 2021-10-07 21:41:19 +02:00
e45bd7098f replace chan struct{}. 2021-10-04 14:40:20 +02:00
74dbdea78a fix typo. 2021-10-02 13:51:22 +02:00
8960fc2371 MoveListenerTo ensure atomic execution. 2021-10-01 14:41:21 +02:00
27cb473ef9 stream implement MoveListenerTo. 2021-10-01 13:46:10 +02:00
0245c73e2b rename to PeerStreamTrack. 2021-10-01 00:02:54 +02:00
c9c8cc67ca refactor broadcast pipeline. 2021-09-30 20:06:43 +02:00
4debddf27d remove leftover variable from capture manager. 2021-09-30 20:03:30 +02:00
550084e195 refactor screencast pipeline. 2021-09-30 20:01:26 +02:00
e9502b0d9b session update mutex logic. 2021-09-30 19:42:25 +02:00
325af8fc5a RemoveListener add dispatcher. 2021-09-29 01:03:39 +02:00
5bae3503d0 session websocket & webrtc add mutex. 2021-09-29 01:01:03 +02:00
77d2ef9aaf stream listener use channel dispatcher. 2021-09-29 00:22:51 +02:00
18fbdb2ff8 stream listener count <0 handling. 2021-09-29 00:21:53 +02:00
5bb2da2732 stream fix listener counts. 2021-09-27 01:17:25 +02:00
9d4d5766ef webrtc refactor peer track. 2021-09-27 00:50:49 +02:00
beac1cb088 peer configuration multiple codecs. 2021-09-26 22:59:45 +02:00
fa168a53c9 webrtc extract connection. 2021-09-26 22:26:22 +02:00
e623a15771 update cmd root. 2021-09-26 21:29:56 +02:00
d91c0a9f7f move websocket Ping to peer. 2021-09-24 15:15:59 +02:00
41d8fa7e22 do not panic if capture pipeline already exists. 2021-09-20 20:21:13 +02:00
51577ecff4 screen size retype one struct. 2021-09-20 18:28:13 +02:00
31eb743a5d fix static server response code. 2021-09-20 00:19:33 +02:00
e95cc99ea2 fix whitespaces. 2021-09-20 00:19:10 +02:00
f96466b7b9 websocket upgrade as router handler. 2021-09-18 14:59:15 +02:00
fd9d5ec6f8 websocket shutdown + log. 2021-09-18 13:41:20 +02:00
137614c087 fix deadlock. 2021-09-18 00:56:03 +02:00
6bd46b438e exclude healthcheck from logs. 2021-09-17 20:35:41 +02:00
c2d2557704 http logger add panic. 2021-09-17 20:20:10 +02:00
6026ab8a27 log http panic. 2021-09-17 19:37:09 +02:00
7e548ec00a logger wrap zerolog. 2021-09-17 19:27:21 +02:00
fb6042ada1 do not export router context. 2021-09-17 19:23:04 +02:00
fe84e218e6 logger use chi's middleware. 2021-09-17 19:22:49 +02:00
5688be80ba fix logger. 2021-09-17 00:58:50 +02:00
8d0fcbde70 use custom logger. 2021-09-17 00:58:50 +02:00
5a7cdd31fe http refactor. 2021-09-17 00:24:33 +02:00
4fa11e6a2a refactor HTTP error. 2021-09-16 20:16:51 +02:00
d46c5d9d30 desktop module use shutdown close. 2021-09-13 23:50:16 +02:00
d21cb9f336 client logs use module. 2021-09-12 17:00:29 +02:00
4f7bd48bec ws close connections on shutdown and add wg. 2021-09-09 23:55:53 +02:00
51207c2b50 FE logs: no handler context. 2021-09-09 22:51:37 +02:00
d0e283f1a9 do not log info about FE log messages. 2021-09-09 22:51:24 +02:00
fb2c479325 logs: interface instead of string. 2021-09-09 22:51:03 +02:00
afc79ed847 receive frontend logs using WS. 2021-09-09 22:08:39 +02:00
83aa2dde41 go upgrade deps. 2021-09-09 20:38:21 +02:00
9deb5adee1 MemberAlreadyExists returns UnprocessableEntity. 2021-09-09 00:33:11 +02:00
e0f1857c51 fx WebRTC logging. 2021-09-05 22:44:16 +02:00
75c1dd6d22 peer close simplified logging. 2021-09-02 21:58:00 +02:00
c85d00e507 add websocket destroy reason. 2021-09-02 21:52:23 +02:00
d7671942a6 code fmt change. 2021-09-02 21:37:24 +02:00
00fc3afcd7 extract webrtc payload to own module. 2021-09-02 21:06:58 +02:00
e812cb9fbf pionlog to own folder. 2021-09-02 20:48:15 +02:00
1dab0bd859 remove session from websocket peer. 2021-09-02 20:30:50 +02:00
f18ae2b972 add waitgroups. 2021-09-02 00:00:56 +02:00
7e2f173460 unify shutdown logs. 2021-09-02 00:00:29 +02:00
fd35254487 simplified logging. 2021-09-01 23:30:09 +02:00
5130d94bbc websocket handler simplified logging. 2021-09-01 23:10:18 +02:00
c2fe224562 audit errors and warnings. 2021-09-01 23:10:06 +02:00
49c48b3200 remove event from messages. 2021-09-01 21:58:39 +02:00
3ac1b481ad session websocket add event. 2021-09-01 21:16:36 +02:00
5b5e541cc0 websocket peer add event. 2021-09-01 21:11:07 +02:00
4341257f14 bump to debian 11. 2021-09-01 19:45:58 +02:00
2be75421ea go mod tidy. 2021-09-01 19:45:21 +02:00
f763c810cc bump golang version to 1.16. 2021-08-31 18:42:06 +02:00
6a32dbadf4 updated websocket logging. 2021-08-29 23:03:04 +02:00
402b8f1a08 rename WebSocket handler. 2021-08-29 23:01:51 +02:00
c82a083fb6 use websocket message. 2021-08-29 23:00:51 +02:00
47d0359106 remove unknown message from handler. 2021-08-29 19:28:01 +02:00
a95a987fb6 Destroy() does not return error. 2021-08-29 19:17:10 +02:00
a03507227d webrtc logging. 2021-08-29 18:59:46 +02:00
8f8cd47e85 websockets logging. 2021-08-29 18:23:58 +02:00
d00d66e0ec api forbidden if login disabled. 2021-08-29 17:23:49 +02:00
0501091c96 remove io/ioutil. 2021-08-29 17:12:37 +02:00
343b0c562a common errors as variable. 2021-08-29 17:09:13 +02:00
530cc04805 http use config. 2021-08-29 15:40:58 +02:00
8bb77166e8 stream use video_id in logs. 2021-08-28 20:15:54 +02:00
b2ae808233 add merciful reconnect option. 2021-08-23 18:41:19 +02:00
01c0f269ee use defer for ticker. 2021-08-19 21:19:02 +02:00
bdff2ddabe lint fix errors. 2021-08-18 22:37:19 +02:00
f088ff1d08 browser: use single supervisord.conf. 2021-08-18 22:37:19 +02:00
22964f6af7 upgrade deps. 2021-08-15 16:54:50 +02:00
2329a940c8 fix logging. 2021-08-03 11:06:34 +02:00
45ee1eef3e handle closed peerConnection. 2021-08-03 10:47:05 +02:00
40d820a3e0 fix logging. 2021-08-02 18:37:54 +02:00
3227978725 add screencast enabled bool to system init. 2021-07-14 14:23:51 +02:00
257b642b94 browser_profile to custom module. 2021-07-07 16:18:47 +02:00
7377e24abe zip: omit base dir. 2021-07-04 23:10:31 +02:00
486f9e13df allow supervisord to be controlled by neko user. 2021-07-04 22:32:01 +02:00
18e2ba6390 zip fix file check. 2021-07-04 21:36:42 +02:00
d3206bfd24 add ZIP to utils. 2021-07-04 01:36:09 +02:00
a852eddfb7 add mutex to webrtc peer. 2021-06-30 00:04:41 +02:00
c2277c4917 webrtc: remove offer timeout as this is handled by lib. 2021-06-29 22:41:30 +02:00
d3fb84e582 upgrade deps. 2021-06-28 18:12:36 +02:00
9176fe3782 cgo import not only for linux. 2021-06-28 18:10:48 +02:00
7df642a346 add iceTrickle for restart from config. 2021-06-27 22:05:37 +02:00
09fdea1b11 add ice restarts. 2021-06-27 22:02:05 +02:00
d575d88daf upgrade deps. 2021-06-15 23:30:04 +02:00
014b757734 webrtc connect with selected video. 2021-04-30 14:05:07 +00:00
57deea25d4 golang upgrade deps. 2021-04-30 13:24:49 +00:00
24af5a7c12 add more resolutions. 2021-04-28 10:58:23 +02:00
ec18775e26 change error messages punctuation. 2021-04-24 21:37:43 +02:00
4f1e3c879a read cookies only if enabled. 2021-04-24 21:11:07 +02:00
04d2fa8863 cookie: enabled / disabled. 2021-04-24 20:53:37 +02:00
9b1deb4134 dockerfile fix chown. 2021-04-19 18:03:27 +00:00
2d8574d5d6 add fonts. 2021-04-19 15:39:09 +00:00
45e85c8864 use exact XkbKeysymToKeycode from tigervnc. 2021-04-12 13:25:10 +00:00
cb17046aee lint fix. 2021-04-11 19:06:56 +02:00
cfdcafc611 xorg fix naming & KeyCode type. 2021-04-11 16:48:59 +02:00
6b2b6594cd fix xorg headers file. 2021-04-11 16:42:57 +02:00
7d06f33ff0 kecode to keysym respecting modifiers. 2021-04-10 01:10:14 +02:00
5acfae72be Revert "workaround for "Keyboard bugs <> → >>"." 2021-04-10 01:07:19 +02:00
536bab14e5 workaround for "Keyboard bugs <> → >>". 2021-04-08 00:08:21 +02:00
3e5e8bfec7 xorg add noreset and nolisten tcp. 2021-04-06 20:51:08 +02:00
b48998f3f9 bulk update members. 2021-04-05 23:03:49 +02:00
ac04eaaa48 add devcontainer. 2021-04-05 21:13:09 +02:00
55b868709d supervisord as root. 2021-04-05 21:08:08 +02:00
d37933cc37 fmt edit. 2021-03-30 00:37:06 +02:00
d84297fbec update pipelines config settings extractor. 2021-03-30 00:36:13 +02:00
051ab9f426 always start pipelines with !. 2021-03-29 22:59:07 +02:00
d8c031af4d add video config evaluation. 2021-03-29 00:58:51 +02:00
78b6264494 split webrtc & WS destroy. 2021-03-25 14:08:26 +01:00
a8e44160dc cursor cache log debug. 2021-03-25 12:20:30 +01:00
5d00e0bdbd fix cursor index out of range error. 2021-03-25 11:59:57 +01:00
bf6181764b clear cookie if non-existent session. 2021-03-25 10:29:28 +01:00
da1d073846 websocket connection change. 2021-03-23 15:38:37 +01:00
89081d9887 do not destroy WebRTC on WS disconnect. 2021-03-23 15:38:09 +01:00
fb845a1f18 update pipelines. 2021-03-23 14:06:40 +01:00
58854d38dd webrtc add interceptor. 2021-03-23 13:46:54 +01:00
9fcc310685 pipelines adding buffer. 2021-03-22 16:45:17 +01:00
7c9c7ec7cb video qualities: modify only FPS. 2021-03-22 16:37:37 +01:00
52e586790e fix static files serving Path. 2021-03-21 21:42:53 +01:00
e4d82673da fix 401 and 403 texts. 2021-03-21 21:32:52 +01:00
0eef9d4d98 update auth middlewares. 2021-03-21 21:26:53 +01:00
5a79212b32 add healthcheck. 2021-03-19 15:04:01 +01:00
cd15e0b03e ice server omitempty credentials. 2021-03-19 11:28:06 +01:00
2a0d9da5ac update packages. 2021-03-18 21:08:55 +01:00
79af4409b5 viper ConfigFileUsed instead of env. 2021-03-18 19:50:37 +01:00
27b1ca54c0 add config file checking. 2021-03-18 19:47:28 +01:00
916222b6df use config file from the environment variable. 2021-03-18 19:37:37 +01:00
77e31bb1bc fmt. 2021-03-18 13:38:32 +01:00
aefb367505 fix initial image error & add cache max. 2021-03-18 13:38:27 +01:00
9c6c107ee0 move broadcast constants to config. 2021-03-18 13:17:10 +01:00
552223d031 iceservers with auth. 2021-03-17 15:47:49 +01:00
4abe0a5dba move cookies to session + config. 2021-03-17 14:09:10 +01:00
d06a5a2ac7 typo fix. 2021-03-17 11:19:35 +01:00
c91e500f00 fix dummy member provider. 2021-03-16 15:38:51 +01:00
0233daf125 members: direct providers config. 2021-03-16 15:28:40 +01:00
524d895db8 scope config variables. 2021-03-16 15:24:58 +01:00
a74bf9986b supervisord kill neko with SIGINT. 2021-03-16 14:08:38 +01:00
0b4c6f50aa remove leftover code. 2021-03-16 13:57:43 +01:00
a9aa62f062 lint & logging fixes. 2021-03-16 10:53:03 +01:00
58d029f455 WS upgrade no returning error. 2021-03-16 10:45:22 +01:00
971e3bff4e handler: log unknown event. 2021-03-16 10:25:13 +01:00
3b0c16b308 handler: include event in error. 2021-03-16 10:22:03 +01:00
0270939ee2 version 1.3.0. 2021-03-16 10:16:57 +01:00
c8328a56c0 Revert "ICE servers as URIs with auth." 2021-03-15 17:15:58 +01:00
fd07597262 Revert "webrtc use ICEServers." 2021-03-15 17:15:34 +01:00
3c3f50af68 webrtc use ICEServers. 2021-03-15 16:40:03 +01:00
a1be9002f7 ICE servers as URIs with auth. 2021-03-15 16:34:13 +01:00
0824c24bf6 add more privileges to API user. 2021-03-15 16:28:38 +01:00
45c9d0c120 add API TOKEN to sessions. 2021-03-15 13:34:14 +01:00
edfe9adde0 change authorization methods request priorities. 2021-03-15 13:01:35 +01:00
900ae006b8 fmt. 2021-03-14 20:26:58 +01:00
85bb26d77c member session mutexes & login if not connected. 2021-03-14 20:26:30 +01:00
524c76ae3c member manager login & logout. 2021-03-14 19:59:34 +01:00
304cb5d655 add CanLogin check for Authenticate. 2021-03-14 19:58:15 +01:00
9483882c89 member mutex move to manager. 2021-03-14 19:36:30 +01:00
4207775fb3 split member manager and provider. 2021-03-14 16:58:18 +01:00
19e732f3ea fix typo. 2021-03-14 16:23:14 +01:00
fad3ab0062 MemberData split ID and profile, return on create. 2021-03-14 16:19:23 +01:00
4d2fb157f9 API implement members. 2021-03-14 14:44:32 +01:00
4898cecd56 members minor bugfixes. 2021-03-14 14:44:03 +01:00
8f277c61c9 members object provider default from config. 2021-03-14 13:11:26 +01:00
00586baffc member providers extracted config. 2021-03-14 13:07:03 +01:00
fceae3818b default object members provider. 2021-03-14 13:06:48 +01:00
f57332ba2a dummy allow all logins. 2021-03-14 13:06:33 +01:00
bf560d5289 implemented member manager. 2021-03-14 12:57:19 +01:00
7c79b48750 added member provider. 2021-03-14 01:08:50 +01:00
594404824f fmt. 2021-03-14 01:05:00 +01:00
ecad2124fd session state decoupled. 2021-03-14 00:50:08 +01:00
4a28307c1e session profile decoupled. 2021-03-14 00:45:51 +01:00
7d4f7694b9 login username password. 2021-03-14 00:32:52 +01:00
5101f0a9c3 fix logs. 2021-03-14 00:12:32 +01:00
fb2078e1ff member -> session. 2021-03-14 00:05:31 +01:00
fa687480a9 member events -> session events. 2021-03-13 23:48:07 +01:00
dafebc79e5 memberState -> sessionState. 2021-03-13 23:42:16 +01:00
b03a730c84 memberId to sessionId. 2021-03-13 23:32:10 +01:00
d83e04e7ec fix logs, unified session_id. 2021-03-13 23:27:28 +01:00
cacdd9e20a Revert 'autogenerate token.' 2021-03-13 22:54:34 +01:00
3fcca6ab52 OnHostChanged event and add tokens to session. 2021-03-13 22:17:49 +01:00
453a6905f7 fmt auth. 2021-03-13 21:44:38 +01:00
93ac4e8332 autogenerate token. 2021-03-13 21:43:36 +01:00
a6b66e4d55 OnHostChanged event. 2021-03-13 21:37:00 +01:00
3aea0c7bf5 remove members from session. 2021-03-13 21:11:48 +01:00
84f0b0aaeb move session database to member folder. 2021-03-13 21:07:51 +01:00
58b00525cc refactor authenticate to use Token. 2021-03-13 20:42:56 +01:00
6b638db825 capture use display from ENV. 2021-03-11 17:55:13 +01:00
d24cea3535 desktop display from env. 2021-03-11 17:44:49 +01:00
0ac2109275 add ip_retrieval_url. 2021-03-10 13:15:18 +01:00
f6114cd410 pipelines: modify default bitrate ratio. 2021-03-03 22:30:45 +01:00
13ffc59209 broadcast pipeline update. 2021-03-03 19:13:53 +01:00
e98237a58c vp8 set CBR and undershoot values. 2021-03-03 19:10:48 +01:00
b78132e6aa WebRTC: add rtp consumer. 2021-03-03 18:53:35 +01:00
9dc96036ce fmt sessionCtx. 2021-03-03 18:46:08 +01:00
0aa1237df9 change pingPeriod to 10s. 2021-03-03 18:35:58 +01:00
fa16b28ac0 set secure cookies by default. 2021-03-01 18:52:05 +01:00
c6a183f766 set AllowCredentials to true. 2021-03-01 18:20:17 +01:00
8f9ad2cd9b capture stream remove listeners on shutdown. 2021-02-28 18:56:04 +01:00
2204400282 cursor cache disable if not available. 2021-02-28 18:52:37 +01:00
663270b0f5 cursor position bypass desktop module. 2021-02-28 18:50:32 +01:00
66618b9e62 WebRTC cursor handler extracted + cache. 2021-02-28 18:37:35 +01:00
9d60468aea xevent DRY, expose emitter. 2021-02-28 17:22:55 +01:00
09625ecca5 session refactor state. 2021-02-26 15:04:50 +01:00
93f8d7f05e adding WebRTC timeouts. 2021-02-25 17:16:37 +01:00
e9840a9579 fmt edit. 2021-02-25 17:16:01 +01:00
2410295ad4 cursor CreatePNGImage in event emitter. 2021-02-25 14:24:17 +01:00
d2eda6f25f cursor utils changed to generic CreatePNGImage. 2021-02-25 14:15:18 +01:00
8f142e4b91 GetCursorImage returns image structure. 2021-02-25 14:03:57 +01:00
dc29f71b0c keysym as uint32. 2021-02-23 21:25:55 +01:00
8f2639412d format code. 2021-02-21 00:41:04 +01:00
0581ce385c clean up repository. 2021-02-21 00:40:52 +01:00
7bc9e669db golang upgrade to 1.16. 2021-02-20 13:49:06 +01:00
7df1040439 remove not needed log message. 2021-02-18 16:59:36 +01:00
c862711e6a update KeyboardModifiers WebSocket struct. 2021-02-18 16:52:49 +01:00
ab34f4a53f WebRTC cursor: set initial state. 2021-02-17 21:55:21 +01:00
5310acfbf0 implement xorg GetCursorPosition. 2021-02-17 21:55:11 +01:00
2ac3f9876f audio start / stop in WebRTC. 2021-02-14 18:16:24 +01:00
cd18a22655 WebRTC events only for active peer connection. 2021-02-14 17:17:06 +01:00
2b693f4e52 fix naming convention. 2021-02-14 17:11:21 +01:00
45679f1b86 format Go source code. 2021-02-14 14:40:17 +01:00
732764991b fix linter errors. 2021-02-14 14:23:33 +01:00
c9b2c93fb8 cursor image/position from WebRTC. 2021-02-13 18:25:40 +01:00
061fbe60cf switch WebRTC to BigEndian. 2021-02-13 00:01:56 +01:00
ed9f0276c7 fix WebRTC send: remove structures with dynamic size. 2021-02-12 23:46:57 +01:00
8a3b3f14cb WebRTC channel from server. 2021-02-12 23:45:16 +01:00
90aa2ce51a cursor utils: split to URI and bytes. 2021-02-12 23:43:52 +01:00
af3a28274d add customized WebRTC send functions. 2021-02-12 22:13:55 +01:00
c54703d7d7 destroy WS and WebRTC peers before assigning. 2021-02-12 21:48:47 +01:00
c8200e3bb7 add WebRTC send function. 2021-02-12 21:06:42 +01:00
f22922191a broadcast cursor position via WebSockets. 2021-02-11 18:36:27 +01:00
e8286dec96 xorg: filter out all irrelevant screen rates. 2021-02-10 18:56:20 +01:00
c0c14b3ac2 add screen-size aware pipelines. 2021-02-09 20:36:22 +01:00
bac69a205f update qualities pipelines with fps. 2021-02-08 22:21:21 +01:00
2733d88d9f edit xorg modelines. 2021-02-08 22:21:01 +01:00
626164df89 SignalVideo reply. 2021-02-07 17:29:40 +01:00
dd2ca03955 choose video with CreatePeer. 2021-02-07 17:07:55 +01:00
5cdb6e074e send video IDs with signal provide. 2021-02-07 16:52:30 +01:00
1838a74213 switch to VP8 with multiple qualities. 2021-02-06 18:18:49 +01:00
eb88c8dc62 independent tracks for users & stream switching. 2021-02-06 18:16:24 +01:00
417a3d1692 stream listeners as pointers. 2021-02-06 17:05:25 +01:00
5d66dcdb7b unsubscribe listeners on shutdown. 2021-02-06 12:59:57 +01:00
f05889bd56 Capture stream: Add- and RemoveListener. 2021-02-06 12:52:02 +01:00
6756114e30 replace video track on demand. 2021-02-05 20:35:30 +01:00
c81bca9b2f session GetWebRTCPeer. 2021-02-05 18:14:45 +01:00
761f6d8a8f add Video error return. 2021-02-05 18:07:58 +01:00
f62d36ac4f WebRTC SetVideoID. 2021-02-05 17:57:33 +01:00
aa7a131da2 refactor single video track to an array. 2021-02-05 17:40:29 +01:00
ebd7e7c065 move gst pipelines to codec. 2021-02-05 15:10:41 +01:00
36b7eca43c name confusion Enabled -> Started. 2021-02-05 14:03:53 +01:00
18b6fa0a03 remove config from capture managers. 2021-02-05 13:58:02 +01:00
3515c67045 capture add mutexes. 2021-02-05 12:49:02 +01:00
2b72f43c9e do not start pipeline when error. 2021-02-05 12:41:02 +01:00
58ea3665b0 unify capture shutdown. 2021-02-05 12:18:46 +01:00
7902d7b1f1 Implement Audio & Video using custom StreamManager. 2021-02-04 20:39:48 +00:00
b488f01b16 vp9enc add properties from vp8enc. 2021-02-04 13:52:32 +01:00
7e7a0c0617 tune gst pipelines. 2021-02-03 21:04:48 +01:00
c2553b150c ICETrickle in config. 2021-02-02 21:12:11 +01:00
cae8201908 add Trickle ICE support. 2021-02-02 20:43:33 +01:00
dd4c67a6c4 registerTracks check for err. 2021-02-02 19:36:11 +01:00
ace7b254a3 split webrtc ConnectPeer function. 2021-02-02 19:21:48 +01:00
91f1727723 lint remove whitespaces. 2021-02-02 18:28:32 +01:00
e152ee295b lint fix. 2021-02-02 18:21:07 +01:00
d880e4384f RTPCodec as functions. 2021-02-02 16:58:17 +01:00
45cf44835c webrtc improved logging & close on disconnect or fail. 2021-02-02 16:21:20 +01:00
5a1fbadcd5 bump chi version. 2021-02-02 12:30:44 +01:00
6d595e8572 refactor to v3 + custom codec handler. 2021-02-01 23:50:18 +01:00
4e79c487e5 bump pion v3 compatible. 2021-02-01 22:45:44 +01:00
9f416b6de1 install pion v3. 2021-02-01 22:44:55 +01:00
7c305b5a27 clipboard lint fix. 2021-02-01 18:29:39 +01:00
b420841f9d no clipboard content bug. 2021-02-01 12:23:37 +01:00
b9df65c216 xevent dialog window based on name. 2021-01-31 15:01:46 +01:00
52670b9415 modules share internal config type. 2021-01-31 12:58:15 +01:00
5134ff5c7e docker build args. 2021-01-31 00:01:43 +01:00
371cfa496c modules decouple and conditional build. 2021-01-30 23:55:50 +01:00
28f3397723 logout correct cookie path. 2021-01-29 23:07:43 +01:00
dabda571d4 session response 200 on login & logout. 2021-01-29 23:03:35 +01:00
57ed35552f websocket in api scope. 2021-01-29 23:02:29 +01:00
6d59b3feff session handler with cookies. 2021-01-29 22:22:14 +01:00
546cd608c3 join plain text and rich text to one struct. 2021-01-29 20:05:13 +01:00
5c9a57ee91 xclip minor changes + image. 2021-01-29 00:03:22 +01:00
1e479dc03f backward compatibility. 2021-01-28 23:59:51 +01:00
2d11b4fa56 xclip multiple clipboard content types. 2021-01-28 22:51:55 +01:00
4602f5f6cf xclip verbose error output. 2021-01-28 21:19:31 +01:00
11e74459ac replace libclipboard with xclip. 2021-01-28 21:12:35 +01:00
ced0a89bbe send: body any type. 2021-01-28 17:11:23 +01:00
8e13a60677 send unicast & broadcast. 2021-01-28 15:56:50 +01:00
c27658d54c HandleFileChooserDialog: fix auocomplete bug. 2021-01-25 20:23:40 +01:00
7cbee94a80 multipart form lint fixes. 2021-01-25 17:45:52 +01:00
794728f4a8 add nolint. 2021-01-25 17:36:43 +01:00
0ead4bc8fd reset keys before drop. 2021-01-25 17:33:29 +01:00
51d061e9aa minor lint fixes. 2021-01-25 17:31:24 +01:00
47689d5372 cors fix typo, default config value. 2021-01-23 20:08:30 +01:00
789d812b3d go upgrade deps. 2021-01-23 18:23:02 +01:00
d30d6deb79 add CORS. 2021-01-23 18:18:14 +01:00
79d67c4a09 screencast atomic expired. 2021-01-23 16:29:47 +01:00
1ffbe337d4 shot.jpg. 2021-01-23 15:23:10 +01:00
fdd98377b3 lazy screencast. 2021-01-23 15:17:52 +01:00
75393905e8 screencast quality and framerate. 2021-01-22 18:44:27 +01:00
3161870906 add screencast to capture. 2021-01-22 18:13:32 +01:00
407853eeb1 decouple BroadcastManager from CaptureManager. 2021-01-22 14:09:47 +01:00
afd3dd2f56 generate screenshot using Xlib. 2021-01-21 20:44:09 +01:00
7ff6ada205 filechooserdialog refactor desktop. 2021-01-20 23:51:53 +01:00
64dd31844b filechooser websocket handler. 2021-01-20 23:48:50 +01:00
dbbbc85c18 xevent file-chooser-dialog-opened onConfigure. 2021-01-20 23:47:49 +01:00
1559c6c3bd filechooser -> filechooserdialog. 2021-01-20 19:45:47 +01:00
d4e0287eb5 file chooser dialog events implementation. 2021-01-19 21:01:31 +01:00
22d31e871c file chooser (WIP). 2021-01-18 22:01:11 +01:00
b49ed65a5c add xorg PutWindowBelow. 2021-01-18 21:43:44 +01:00
54760551f7 add OnWindowConfigured. 2021-01-18 21:40:57 +01:00
bd062d3949 lint fix. 2021-01-18 15:31:00 +01:00
8f60041b2d fix dialog close and add API. 2021-01-18 10:34:33 +01:00
2b3bb6e21a upload dialog API. 2021-01-17 23:50:03 +01:00
98dc08cba9 Dockerfile updated. 2021-01-17 20:47:34 +01:00
46c05aa49f allow debug mode from ENV or config. 2021-01-17 19:10:59 +01:00
ac7200c630 simplify xorg condition. 2021-01-17 19:10:49 +01:00
80550350a8 DROP_MOVE_REPEAT. 2021-01-15 18:00:04 +01:00
3bbe3781c8 set screen size using struct. 2021-01-15 17:30:19 +01:00
0e09609c67 KeyboardLayout to KeyboardMap. 2021-01-15 16:53:03 +01:00
8c47cbae68 multipart form correct destroying. 2021-01-14 19:54:22 +01:00
a96b770052 gtk drop refactored using events. 2021-01-14 19:53:58 +01:00
253247f6ce gkt drag and drop remove duplicity. 2021-01-14 16:42:33 +01:00
c808759709 gst free error only if occurs. 2021-01-14 14:15:17 +01:00
0f27b81f76 drag_window add logging. 2021-01-13 22:46:44 +01:00
98bf62ef5e neko start default without debug. 2021-01-13 21:36:59 +01:00
39d48c3db8 ignore duplicated packet log messages. 2021-01-13 21:36:43 +01:00
71dbdc06f5 add layout variant. 2021-01-12 23:52:44 +01:00
7f18c5842d changing keyboard layout as go exec. 2021-01-12 23:48:15 +01:00
4844225a0b keyboardModifiersGet. 2021-01-12 23:35:46 +01:00
8a9dceafec xorg modifiers fix mask. 2021-01-12 23:35:11 +01:00
a0d8f1b880 xorg modifiers refactor. 2021-01-12 22:54:13 +01:00
d89dd11b18 add icon theme cursors. 2021-01-12 16:37:44 +01:00
c75191edeb capture: hide pointer. 2021-01-12 16:25:14 +01:00
dbc8a7612d gst pipeline app sink refactoring. 2021-01-12 16:24:54 +01:00
3faca29a89 remove codec name from pipeline. 2021-01-12 16:13:59 +01:00
425d9c2ace fix broken pipeline. 2021-01-12 16:12:53 +01:00
f32ebe7935 catch gstreamer errors. 2021-01-12 16:12:05 +01:00
49c3b6d4fe xevent: OnWindowCreated. 2021-01-12 00:09:43 +01:00
94a9c7c10a tidy up C files. 2021-01-11 15:57:14 +01:00
a2ca3727fe xevent to update clipboard. 2021-01-11 15:30:53 +01:00
910f0af995 xevent cursor change. 2021-01-10 15:58:17 +01:00
0f19b6ed57 add xevent c bindings. 2021-01-10 15:55:29 +01:00
a7d4511037 cursor Image on connect. 2021-01-10 12:42:07 +01:00
589628f6ca cursor image as WS event. 2021-01-10 12:37:32 +01:00
9782b8391d cursor updates to client (WIP). 2021-01-09 23:01:39 +01:00
9112d99c54 add cursor image to uri convertor. 2021-01-09 23:01:18 +01:00
93b1553b4d xlib get cursor implementation. 2021-01-09 22:58:18 +01:00
ab1d18b562 zero sized gtk window. 2021-01-09 16:40:24 +01:00
44c8f8f62e gtk window transparent. 2021-01-09 16:33:41 +01:00
9f3bc0261c update upload API error reporting & cleanup. 2021-01-09 16:24:05 +01:00
fad6b649d3 upload, implicit hosting, only members that can control. 2021-01-09 13:42:08 +01:00
d65ba62bfc upload middleware: fix permissions issue. 2021-01-08 23:42:53 +01:00
fc6997d2ac lint fix. 2021-01-08 22:41:37 +01:00
a6afccd079 desktop single mutex shared gtk. 2021-01-08 22:03:50 +01:00
d3340ad085 upload drop change API. 2021-01-07 18:28:23 +01:00
3f9fffe96d desktop drop -> gtk. 2021-01-07 18:27:50 +01:00
39208f1ea5 drop: chrome weird behavior, multiple cursor moves. 2021-01-06 20:16:21 +01:00
3e52b264ba API drop file upload. 2021-01-06 20:03:41 +01:00
a104fc0525 change formatting. 2021-01-06 18:58:16 +01:00
62ba53dc46 implement file drop API. 2021-01-06 18:57:50 +01:00
64187964d4 uris -> files. 2021-01-06 18:54:55 +01:00
a92ead019e add drop bindings. 2021-01-06 18:27:21 +01:00
4aa7da45e1 screen change mutex, fixes "HTTP requests are not buffered - screen changing is failing". 2021-01-04 19:39:21 +01:00
245c3d9635 add CanHostOnly. 2020-12-29 22:00:28 +01:00
655d64105e HttpJsonRequest user friendly message. 2020-12-27 21:07:09 +01:00
da71c9261d API: Target member was not found, return 404. 2020-12-27 17:07:09 +01:00
a6dccc753b API update: control give memberId. 2020-12-26 23:53:04 +01:00
7c8f0e66cb remove chromedp. 2020-12-18 16:38:33 +01:00
1faabe6397 go mod tidy. 2020-12-14 23:36:01 +01:00
15d8673088 add experimental chromedp lib. 2020-12-13 23:26:00 +01:00
b197bb303e add support for modules. 2020-12-12 18:37:19 +01:00
5b69413e01 AddHandler in WebSockets. 2020-12-12 17:40:10 +01:00
af463b1015 AddRouter in API. 2020-12-12 17:07:45 +01:00
9786c8d537 join members endpoints to one file. 2020-12-08 16:05:54 +01:00
f1f26b5f25 MemberDataPayload & membersList implemented. 2020-12-08 16:04:54 +01:00
7fb40c0384 + GetProfile & GetState members. 2020-12-08 15:37:48 +01:00
209971cb8a member profile & state to types. 2020-12-08 15:14:20 +01:00
58c8104ce6 remove unused logger from room api handler. 2020-12-08 14:31:15 +01:00
4b4ddcfe15 use json marshal default values. 2020-12-08 14:13:12 +01:00
303c22bba5 profileChanged tested, minor bugs fixed. 2020-12-06 21:34:23 +01:00
9ca4e04e0b pointer struct to members crud. 2020-12-06 21:10:45 +01:00
2467c94c59 add profileChanged. 2020-12-06 19:29:39 +01:00
a2da60d617 add default access control on users. 2020-12-06 19:19:57 +01:00
c714d17d87 is_receiving - is_watching. 2020-12-06 19:02:33 +01:00
e17e2cb606 + CanAccessClipboard. 2020-12-06 18:55:24 +01:00
5edd9dc97a + CanHost. 2020-12-06 18:50:41 +01:00
92aa717a8d user - member. 2020-12-06 18:50:04 +01:00
4fe74fd112 + CanWatch. 2020-12-06 18:49:20 +01:00
d2ffac3d4b + CanConnect. 2020-12-06 18:49:08 +01:00
0a201d50c8 + CanLogin. 2020-12-06 18:48:50 +01:00
35cd0f5270 add connect / disconnect to adapters. 2020-12-06 18:11:11 +01:00
6ca1e27f01 add file adapter. 2020-12-06 17:28:15 +01:00
100544198b add members database adapters interface. 2020-12-06 00:21:09 +01:00
edb9fef097 remove unused HasHost. 2020-12-05 23:42:40 +01:00
b24c217509 members database import. 2020-12-05 23:31:41 +01:00
9f452aeb01 add database to Sessions. 2020-12-05 23:05:46 +01:00
a6fbafc079 SetProfile changed as Update. 2020-12-05 22:18:45 +01:00
22407825fe destroy only if is WebRTC active. 2020-12-05 21:05:09 +01:00
feb07b97ab resolve deadlock problem with mutexes. 2020-12-03 20:05:44 +01:00
c61f5f2835 WebRTC + peer closed. 2020-12-03 17:03:15 +01:00
4670b5187c Disconnect WebRTC on socket disconnect. 2020-12-03 16:45:41 +01:00
7eee6debc7 WS remove connected & disconnected event. 2020-12-03 16:42:27 +01:00
d7b5bd6842 extract member state to custom struct. 2020-12-03 16:10:52 +01:00
5f3b9f72cf ID in MemberProfile. 2020-12-02 19:22:26 +01:00
f361d0c681 WS added session events. 2020-12-02 18:59:54 +01:00
1f5c0a3547 updated session events. 2020-12-02 18:59:32 +01:00
cf47b7e2fa crud update new member profile. 2020-12-02 17:43:34 +01:00
81b3fbd673 moved capture StopStream to websockets events. 2020-12-02 17:36:06 +01:00
0d2f3405bb new MemberProfile & session refactor. 2020-12-02 17:29:38 +01:00
220e162f42 beautify. 2020-12-02 17:23:35 +01:00
82d37b15e4 HasConnectedMembers and Members returns not connected. 2020-12-02 17:12:00 +01:00
5541675f57 use member id or create new. 2020-12-02 16:50:30 +01:00
123fbd8317 IsAdmin + IsConnected. 2020-12-02 16:49:51 +01:00
25fec63455 WS do not connect if already connected. 2020-12-02 11:45:22 +01:00
1677e38935 introduced ImplicitHosting. 2020-12-02 11:24:20 +01:00
26c0fea840 controlRequest if already is the host. 2020-12-02 10:47:20 +01:00
b7103ca809 ResetKeys on ClearHost. 2020-12-02 10:46:00 +01:00
964588b328 remove HostID. 2020-12-02 00:04:36 +01:00
bdd8bdab72 members as map. 2020-12-01 22:56:08 +01:00
b82fbae597 replace old Member structures. 2020-12-01 19:47:50 +01:00
6599a093c0 remove MemberList structs. 2020-12-01 19:45:21 +01:00
1b6bc44f2a event SystemDisconnect. 2020-12-01 19:44:23 +01:00
21293256ed connected session only websocket. 2020-11-30 22:28:13 +01:00
b194f8034a add MemberId to init. 2020-11-30 22:24:58 +01:00
2c7291324c fix Host ID json name. 2020-11-30 21:27:43 +01:00
5c0dee93ac messages highlight comments. 2020-11-30 21:06:37 +01:00
caa4be4d3b remove unused MEMBER_LIST. 2020-11-30 21:06:19 +01:00
d00015ee91 system init WS. 2020-11-30 20:07:19 +01:00
745ef00cd2 update connected / disconnected events. 2020-11-30 19:13:17 +01:00
753fb01955 removed OnCreated event. 2020-11-30 18:52:16 +01:00
743ab2bf6a signal provide upon request WS. 2020-11-30 18:27:25 +01:00
2e090eb54d update control WS. 2020-11-30 18:24:38 +01:00
4bbf3bb039 update screen WS. 2020-11-30 17:53:05 +01:00
83be51ea0f update keyboard WS. 2020-11-30 17:45:53 +01:00
e93d167be6 update clipboard WS. 2020-11-30 17:40:38 +01:00
2c210f3cf1 signal provide remove ID. 2020-11-30 17:33:34 +01:00
0a75950356 remove admin from websockets. 2020-11-30 17:31:29 +01:00
994a91886d remove broadcast from websocket. 2020-11-30 17:29:05 +01:00
def6248ca7 revert broadcast status. 2020-11-30 17:27:11 +01:00
8f9671689f add new messages. 2020-11-30 17:09:14 +01:00
8cce32c73c edit control event as host. 2020-11-30 17:06:42 +01:00
147aa0e1a3 updated websocket events with TODO comments. 2020-11-30 15:48:19 +01:00
f9b62073ef add control reset. 2020-11-29 15:58:26 +01:00
179a22476c do not remove user on disconnect. 2020-11-28 15:30:35 +01:00
5699ad0bf9 allow login using Query. 2020-11-28 15:22:04 +01:00
b675e4cc82 member name refactor. 2020-11-28 15:03:38 +01:00
c4978ba376 http response name convention. 2020-11-28 15:00:21 +01:00
3f312c84ad remove user kick. 2020-11-28 14:32:38 +01:00
592b2cfd3a no default static serve files. 2020-11-28 11:08:15 +00:00
7c3ee0bd0f add gitattributes. 2020-11-27 22:25:27 +01:00
04861d0921 update runtime. 2020-11-27 22:16:26 +01:00
194836918e remove build. 2020-11-27 21:51:55 +01:00
1ffae72bf1 multistage Dockerfile. 2020-11-27 21:51:33 +01:00
59457b7658 rest CRUD members minor update. 2020-11-27 20:00:14 +01:00
a90bf87e24 login with secret. 2020-11-27 19:59:54 +01:00
a330a3cc76 REST create & Delete member. 2020-11-25 22:39:54 +01:00
71a84963bc fix types - no json. 2020-11-25 22:35:54 +01:00
ecfce6c886 remove room lock. 2020-11-25 22:16:56 +01:00
d1fccf5ab6 MemberProfile as public type & create user on auth. 2020-11-25 22:07:05 +01:00
665d9d2130 Create + Delete session. 2020-11-25 22:06:13 +01:00
104d98d129 comment out yet unused props. 2020-11-25 20:26:29 +01:00
f9b2460c3b replace SetConnected function. 2020-11-25 20:26:11 +01:00
fa54823098 Split connected to WebRTC & WebSocket. 2020-11-25 20:02:53 +01:00
bc77c8f8f5 add MemberProfile to session. 2020-11-25 19:44:50 +01:00
b73e2403af peer -> webrtc_peer. 2020-11-25 18:41:40 +01:00
ff7efe9f3b socket -> websocket_peer. 2020-11-25 18:36:33 +01:00
d49542013b CRUD add payloads. 2020-11-22 00:06:55 +01:00
43781cdf52 fix crud handler. 2020-11-21 23:57:54 +01:00
ce49d975c0 member in plural form. 2020-11-21 23:42:34 +01:00
d39d922f85 add dummy member endpoints. 2020-11-21 23:39:24 +01:00
45f029a2a4 fix broadcast bug. 2020-11-18 23:32:43 +01:00
fb6dabf4e0 add control status. 2020-11-18 23:14:28 +01:00
628abe06fd rest control edit. 2020-11-18 23:05:38 +01:00
428d6939ec use HttpUnprocessableEntity if already broadcasting. 2020-11-18 23:05:26 +01:00
ef03f9ec9d do not export REST functions. 2020-11-18 22:35:50 +01:00
1ae6f05c73 update 401 & 403. 2020-11-18 22:34:42 +01:00
18ca647c76 Data -> Payload & change order. 2020-11-18 21:56:42 +01:00
ac2fc100b4 REST API keyboard. 2020-11-18 21:53:06 +01:00
db820806a4 add broadcast endpoint & broadcast pipeline return error. 2020-11-18 21:34:39 +01:00
6fbb1a2cc7 add control give & control take endpoints. 2020-11-18 21:10:40 +01:00
6d27b0a69c return err socket. 2020-11-18 20:34:33 +01:00
da7e6f7728 Broadcast should not return error. 2020-11-18 20:30:33 +01:00
3f4914d260 REST API control. 2020-11-16 22:48:20 +01:00
eec285cd07 Rename displayname to name. 2020-11-16 22:22:19 +01:00
570efbf3a6 remove unused ban endpoint. 2020-11-16 22:21:21 +01:00
d87a10b23a remove unused mute function. 2020-11-16 22:10:03 +01:00
99068b893b naming convention -> screen size. 2020-11-16 22:04:50 +01:00
227b6b24c2 REST screen change broadcast. 2020-11-16 21:57:53 +01:00
e8f9e2e4e4 fix clipboard bug. 2020-11-16 21:57:35 +01:00
0dab2a99d3 introduce REST API authorization. 2020-11-16 19:37:52 +01:00
316533dab0 remove duplicate error logging. 2020-11-16 18:12:25 +01:00
b411675108 code indentation. 2020-11-16 17:48:10 +01:00
234b0a2e06 remove code duplication. 2020-11-16 16:56:03 +01:00
db706097f6 add mutex on streaming and fix "Fail while changing screen size and no users are joined". 2020-11-14 23:14:48 +01:00
0d419787bc add memberMu. 2020-11-14 23:05:09 +01:00
f11c1c5e54 add hostMu. 2020-11-14 22:54:35 +01:00
1fd53cfb74 CheckKeys() mutex on shared map. 2020-11-14 22:35:50 +01:00
8a9f465d0b add log to http utils. 2020-11-14 18:27:20 +01:00
4a5654f2ef fix lint err. 2020-11-14 18:27:10 +01:00
7524f20cb7 http session context helper function. 2020-11-14 18:22:15 +01:00
40b986c8be use Chi Router instead of Chi Mux. 2020-11-14 18:16:25 +01:00
a18482b54e use websocket authentication & refactor. 2020-11-14 17:51:18 +01:00
f136a31b03 minor refactor ifs. 2020-11-14 16:09:00 +01:00
7c64e6068a minor session changes. 2020-11-14 16:03:39 +01:00
e5eaf5c60c session id to session. 2020-11-14 16:03:12 +01:00
fdf5839547 trim newlines on webrtc logs. 2020-11-14 14:52:15 +01:00
d09b6dcb10 broadcast naming convention & on destroy. 2020-11-14 13:46:12 +01:00
bd45e81afe fixes "Fast changing screen size crashes neko". 2020-11-13 22:22:44 +01:00
9c26f35c76 destroy pipelines func. 2020-11-13 21:23:48 +01:00
ff97242bac normalize logs. 2020-11-13 17:42:04 +01:00
dd8867615e fix naming convention. 2020-11-13 17:34:53 +01:00
e4864b095e http listening not warning. 2020-11-07 20:12:37 +01:00
a6fd0f3d25 fixes "screen size change is sometimes failing". 2020-11-07 17:22:25 +01:00
e4fa855f7b linter fix. 2020-11-04 00:41:04 +01:00
a8173ce02f change screen size only on desktop. 2020-11-04 00:27:47 +01:00
b0ae758d7b refactor xorg race condition. 2020-11-04 00:09:52 +01:00
51c6e0091f Connected / Disconnected refactor. 2020-11-01 21:03:25 +01:00
e51541fe01 separate disconnect from destroy. 2020-11-01 20:53:25 +01:00
311ed987d8 refactor WS authentication. 2020-11-01 20:23:09 +01:00
16d762b6ae GST pipelines refactor. 2020-11-01 20:18:19 +01:00
c10b2212d1 auth moved from websockets to session. 2020-11-01 18:39:12 +01:00
3ea979ed47 minor changes. 2020-11-01 18:12:16 +01:00
c53ae28196 remove emotes structs. 2020-11-01 17:56:06 +01:00
d78f98e78e make serving files as optional feature. 2020-11-01 17:40:22 +01:00
7fb977faa4 edit broadcast. 2020-11-01 17:34:47 +01:00
507fce7862 port new API back to refactor. 2020-11-01 16:54:06 +01:00
9559edf4d4 bug fixes. 2020-11-01 16:37:00 +01:00
5d906e0a8b major refactor. 2020-11-01 16:09:48 +01:00
5c92b75cf7 Refactor: session remove duplicate ID in endpoints. 2020-10-31 23:53:19 +01:00
e150203b54 refactor session remove redundant IDs. 2020-10-31 23:03:37 +01:00
b61495ac0b remove redundant ID parameter in websockets. 2020-10-31 22:43:47 +01:00
b6393c4396 API lint fix. 2020-10-31 21:58:57 +01:00
5a25aefa34 webRTC WS disconnect error handling. 2020-10-31 21:56:20 +01:00
cca147859d refactor WebRTC antipatterns. 2020-10-31 21:46:29 +01:00
b1b5a70c64 WebRTC refactor -> session dependency removal. 2020-10-31 21:20:42 +01:00
dadac4f145 webrtc removed unused function. 2020-10-31 20:11:32 +01:00
06282d8064 remove unused websocket functions. 2020-10-31 19:59:17 +01:00
e852afcf2a start file refactor. 2020-10-31 16:40:33 +01:00
894c0f28dc REST API implement Clipboard. 2020-10-31 12:35:02 +01:00
963d210507 use custom JWT middleware. 2020-10-31 12:27:55 +01:00
c609a28a38 remove unused packages. 2020-10-31 11:54:58 +01:00
71d39a5c74 add API JWT auth. 2020-10-31 10:48:24 +01:00
31bd61e2d3 add jwtauth module. 2020-10-31 10:37:57 +01:00
4e6a78fb54 update errors. 2020-10-30 22:39:35 +01:00
c77d2b0305 ScreenConfigurationsList API. 2020-10-30 22:20:23 +01:00
bff779aee7 add new REST errors. 2020-10-30 22:06:03 +01:00
b6d5df6d04 API screen change websocket broadcast. 2020-10-30 21:29:51 +01:00
9343e85b8f resolution -> screen configuration. 2020-10-30 21:28:07 +01:00
d48b857dfe API resiolution with error handling. 2020-10-30 19:56:22 +01:00
0c40eda36b manager fix naming convention. 2020-10-30 19:39:45 +01:00
b4a233ef2e remove xorg ValidScreenSize double checking. 2020-10-30 19:32:52 +01:00
dc32e64190 api manager. 2020-10-30 18:16:21 +01:00
dabd7e368e add go-chi/render module. 2020-10-30 17:00:42 +01:00
5acd428dee create api skeleton. 2020-10-29 22:23:30 +01:00
fc3ee13f65 move logger to http package. 2020-10-29 22:12:33 +01:00
3c5c01f475 remove chat. 2020-10-29 18:11:30 +01:00
78c397ef54 fix formatting. 2020-10-29 18:07:04 +01:00
cd769c05d3 gst - correctly destroy unused pipelines. 2020-10-29 17:51:17 +01:00
96e99955fc refactor rempte manager - start pipeline only once. 2020-10-29 17:50:04 +01:00
7d5df0346e add nolint. 2020-10-28 22:36:30 +01:00
e1ef49c46a ws upgrade fail error message. 2020-10-28 22:28:10 +01:00
4b39607af0 redundant break statement. 2020-10-28 22:24:19 +01:00
7ec3d5ac6d add nolint. 2020-10-28 22:21:31 +01:00
f5fcf724f4 unnecessary assignment to the blank identifier. 2020-10-28 22:09:48 +01:00
91fed3c480 log socket disconnected error. 2020-10-28 22:09:02 +01:00
1ce6dad973 log clipboard sync error. 2020-10-28 22:07:18 +01:00
541ca80878 unknown session id return error. 2020-10-28 22:02:42 +01:00
1e3abf51af remove unused package. 2020-10-28 22:02:31 +01:00
95ce0063ec set host catch error. 2020-10-28 21:59:37 +01:00
2b0d85a98c redundant break statement. 2020-10-28 21:54:48 +01:00
f751cba428 sessions Destroy log error. 2020-10-28 21:50:47 +01:00
f521373f9b should omit comparison to bool constant. 2020-10-28 21:50:19 +01:00
4093bc5311 peer connection SetLocalDescription error catch. 2020-10-28 20:56:14 +01:00
2f0b159ad6 SetEphemeralUDPPortRange error catch. 2020-10-28 20:54:09 +01:00
7628554356 redundant break statement. 2020-10-28 20:46:34 +01:00
d0d3e6b2d2 should omit comparison to bool constant. 2020-10-28 20:44:50 +01:00
80430e1ef4 the channel used with signal.Notify should be buffered. 2020-10-28 20:43:26 +01:00
cf54343b50 broadcastManager to neko object. 2020-10-28 20:31:04 +01:00
01d125316f WebSocketHandler no return. 2020-10-28 20:29:18 +01:00
26c2bbf10d remove unused HTTP middlewares. 2020-10-28 20:06:34 +01:00
a5014e205e n.eko.moe -> demodesk. 2020-10-28 19:15:48 +01:00
687cf987f8 fix gitignore. 2020-10-25 01:36:57 +02:00
5800ea7df5 fix Dockerfile. 2020-10-22 21:07:37 +02:00
0d7a24befc add Dockerfile. 2020-10-22 17:08:13 +02:00
968ea7d4f2 add gitignore. 2020-10-22 17:00:32 +02:00
56de805f54 initial commit - from neko open source repository.. 2020-10-22 16:54:50 +02:00
380 changed files with 81541 additions and 63 deletions

148
.devcontainer/Dockerfile Normal file
View File

@ -0,0 +1,148 @@
#
# Stage 0: Build xorg dependencies.
#
FROM debian:bullseye-slim as xorg-deps
ENV DEBIAN_FRONTEND=noninteractive
RUN set -eux; \
apt-get update; \
apt-get install -y \
git gcc pkgconf autoconf automake libtool make xorg-dev xutils-dev \
&& rm -rf /var/lib/apt/lists/*;
WORKDIR /xorg
COPY xorg/ /xorg/
# build xserver-xorg-video-dummy 0.3.8-2 with RandR support.
RUN set -eux; \
cd xf86-video-dummy; \
git clone --depth 1 --branch xserver-xorg-video-dummy-1_0.3.8-2 https://salsa.debian.org/xorg-team/driver/xserver-xorg-video-dummy; \
cd xserver-xorg-video-dummy; \
patch -p1 < ../xdummy-randr.patch; \
./autogen.sh; \
make -j$(nproc); \
make install;
# build custom input driver
RUN set -eux; \
cd xf86-input-neko; \
./autogen.sh --prefix=/usr; \
./configure; \
make -j$(nproc); \
make install;
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.166.0/containers/go/.devcontainer/base.Dockerfile
# [Choice] Go version: 1, 1.16, 1.15
ARG VARIANT="1"
FROM mcr.microsoft.com/vscode/devcontainers/go:0-${VARIANT}
# [Option] Install Node.js
ARG INSTALL_NODE="true"
ARG NODE_VERSION="lts/*"
RUN if [ "${INSTALL_NODE}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi
# build dependencies
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y install --no-install-recommends \
libx11-dev libxrandr-dev libxtst-dev libgtk-3-dev \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev; \
# install libxcvt-dev (not available in base image)
wget http://ftp.de.debian.org/debian/pool/main/libx/libxcvt/libxcvt-dev_0.1.2-1_amd64.deb; \
wget http://ftp.de.debian.org/debian/pool/main/libx/libxcvt/libxcvt0_0.1.2-1_amd64.deb; \
apt-get install --no-install-recommends ./libxcvt0_0.1.2-1_amd64.deb ./libxcvt-dev_0.1.2-1_amd64.deb;
# runtime dependencies
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y install --no-install-recommends \
wget ca-certificates supervisor \
pulseaudio dbus-x11 xserver-xorg-video-dummy \
libcairo2 libxcb1 libxrandr2 libxv1 libopus0 libvpx6 \
#
# needed for profile upload preStop hook
zip curl \
#
# file chooser handler, clipboard, drop
xdotool xclip libgtk-3-0 \
#
# gst
gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \
gstreamer1.0-pulseaudio;
# libxcvt already installed
# dev runtime dependencies
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y install --no-install-recommends \
xfce4 xfce4-terminal firefox-esr sudo;
# configure runtime
ARG USERNAME=neko
ARG USER_UID=1001
ARG USER_GID=$USER_UID
RUN set -eux; \
#
# create a non-root user
groupadd --gid $USER_GID $USERNAME; \
useradd --uid $USER_UID --gid $USERNAME --shell /bin/bash --create-home $USERNAME; \
adduser $USERNAME audio; \
adduser $USERNAME video; \
adduser $USERNAME pulse; \
#
# add sudo support
echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME; \
chmod 0440 /etc/sudoers.d/$USERNAME; \
#
# workaround for an X11 problem: http://blog.tigerteufel.de/?p=476
mkdir /tmp/.X11-unix; \
chmod 1777 /tmp/.X11-unix; \
chown $USERNAME /tmp/.X11-unix/; \
#
# make directories for neko
mkdir -p /etc/neko /var/www; \
chown -R $USERNAME:$USERNAME /home/$USERNAME; \
#
# install fonts
apt-get install -y --no-install-recommends \
# Emojis
fonts-noto-color-emoji \
# Chinese fonts
fonts-arphic-ukai fonts-arphic-uming \
# Japanese fonts
fonts-ipafont-mincho fonts-ipafont-gothic \
# Korean fonts
fonts-unfonts-core \
# Indian fonts
fonts-indic;
# copy dependencies from previous stage
COPY --from=xorg-deps /usr/local/lib/xorg/modules/drivers/dummy_drv.so /usr/lib/xorg/modules/drivers/dummy_drv.so
COPY --from=xorg-deps /usr/local/lib/xorg/modules/input/neko_drv.so /usr/lib/xorg/modules/input/neko_drv.so
# copy runtime files
COPY runtime/dbus /usr/bin/dbus
COPY runtime/default.pa /etc/pulse/default.pa
COPY runtime/supervisord.conf /etc/neko/supervisord.conf
COPY runtime/xorg.conf /etc/neko/xorg.conf
COPY runtime/icon-theme /home/$USERNAME/.icons/default
# copy dev runtime files
COPY dev/runtime/config.yml /etc/neko/neko.yml
COPY dev/runtime/supervisord.conf /etc/neko/supervisord/dev.conf
# customized scripts
RUN chmod +x /usr/bin/dbus;\
echo '#!/bin/sh\nsleep infinity' > /usr/bin/neko; \
chmod +x /usr/bin/neko; \
echo '#!/bin/sh\nsudo sh -c "export USER='$USERNAME'\nexport HOME=/home/'$USERNAME'\n/usr/bin/supervisord -c /etc/neko/supervisord.conf"' > /usr/bin/deps; \
chmod +x /usr/bin/deps; \
touch .env.development;
# set default envs
ENV USER=$USERNAME
ENV DISPLAY=:99.0
ENV PULSE_SERVER=unix:/tmp/pulseaudio.socket
ENV NEKO_SERVER_BIND=:3000
ENV NEKO_WEBRTC_EPR=3001-3004

20
.devcontainer/README.md Normal file
View File

@ -0,0 +1,20 @@
# dev container
You need to run all dependencies with `deps` command before you start debugging.
Create `.env.development` in repository root. Make sure your local IP is correct.
```sh
NEKO_WEBRTC_NAT1TO1=10.0.0.8
```
# without container
- Make sure `pulseaudio` contains correct configuration.
- Specify `DISPLAY` that is being used by xorg.
```sh
DISPLAY=:0
NEKO_WEBRTC_NAT1TO1=10.0.0.8
NEKO_SERVER_BIND=:3000
```

View File

@ -0,0 +1,44 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.166.0/containers/go
{
"name": "Go",
"build": {
"dockerfile": "Dockerfile",
"context": "../server/",
"args": {
// Update the VARIANT arg to pick a version of Go: 1, 1.16, 1.15
"VARIANT": "1.20",
// Options
"INSTALL_NODE": "false",
"NODE_VERSION": "lts/*"
}
},
"runArgs": [ "--cap-add=SYS_PTRACE", "--cap-add=SYS_ADMIN", "--shm-size=2G", "--security-opt", "seccomp=unconfined" ],
"customizations": {
"vscode": {
// Set *default* container specific settings.json values on container create.
"settings": {
"terminal.integrated.shell.linux": "/bin/bash",
"go.toolsManagement.checkForUpdates": "local",
"go.useLanguageServer": true,
"go.gopath": "/go",
"go.goroot": "/usr/local/go"
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"golang.Go"
]
}
},
// Use 'forwardPorts' to make a list of ports inside the container available locally.
"appPort": ["3000:3000", "3001:3001/udp", "3002:3002/udp", "3003:3003/udp", "3004:3004/udp"],
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "go version",
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "neko"
}

View File

@ -26,10 +26,11 @@ jobs:
registry-url: 'https://npm.pkg.github.com'
- name: Install dependencies and build
run: npm ci && npm run build
run: cd ./client/ && npm ci && npm run build
- name: Prepare Artifact
run: |
cd ./client/
mkdir artifact
cp LICENSE README.md package.json artifact
cp -r dist artifact/dist
@ -38,7 +39,7 @@ jobs:
uses: actions/upload-artifact@v2
with:
name: package
path: artifact
path: client/artifact
publish-to-npm-pkg-github-com:
runs-on: ubuntu-latest
@ -61,7 +62,7 @@ jobs:
registry-url: 'https://npm.pkg.github.com'
- name: Publish package to npm.pkg.github.com
run: npm publish
run: cd ./client/ && npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@ -86,9 +87,9 @@ jobs:
registry-url: 'https://registry.npmjs.org'
- name: Replace npm.pkg.github.com with registry.npmjs.org
run: sed -i 's/npm\.pkg\.github\.com/registry\.npmjs\.org/' package.json
run: sed -i 's/npm\.pkg\.github\.com/registry\.npmjs\.org/' client/package.json
- name: Publish package to registry.npmjs.org
run: npm publish
run: cd ./client/ &&npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }}

View File

@ -1,4 +1,4 @@
name: Build npm package
name: Build a Docker image
on:
pull_request:
@ -6,7 +6,21 @@ on:
- master
jobs:
build:
build-server:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Build Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
context: ./server
build-client:
runs-on: ubuntu-latest
permissions:
contents: read
@ -22,4 +36,4 @@ jobs:
registry-url: 'https://registry.npmjs.org'
- name: Install dependencies and build
run: npm install && npm run build
run: cd ./client && npm install && npm run build

44
.github/workflows/server_build.yml vendored Normal file
View File

@ -0,0 +1,44 @@
name: Create and publish a Docker image
on:
push:
branches:
- 'master'
tags:
- 'v*'
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
build-and-push-image:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Log in to the Container registry
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
- name: Build and push Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
context: ./server/
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

View File

@ -0,0 +1,53 @@
name: Create and publish a Docker image variant
on:
push:
tags:
- 'v*'
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
build-and-push-image-variant:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
strategy:
matrix:
include:
- variant: bookworm
dockerfile: Dockerfile.bookworm
- variant: nvidia
dockerfile: Dockerfile.nvidia
- variant: nvidia_bookworm
dockerfile: Dockerfile.nvidia.bookworm
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Log in to the Container registry
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/${{ matrix.variant }}
- name: Build and push Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
context: ./server/
file: ${{ matrix.dockerfile }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

60
.gitignore vendored
View File

@ -1,38 +1,36 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
# OS files
.DS_Store
dist
dist-ssr
coverage
*.local
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
/cypress/videos/
/cypress/screenshots/
# Log/Temp files
.tmp/
tmp/
*.tmp
.logs/
logs/
*.log
core
.build
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# TypeScript incremental compilation cache
*.tsbuildinfo
test-results/
playwright-report/
# Node modules
node_modules
dist
bin
/src/page/plugins/*
!/src/page/plugins/filetransfer
!/src/page/plugins/chat
!/src/page/plugins/.gitkeep
# Environment files
*.env
.env.development

20
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,20 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "launch",
"type": "go",
"debugAdapter": "dlv-dap",
"request": "launch",
"mode": "debug",
"program": "${workspaceFolder}/server/cmd/neko",
"output": "${workspaceFolder}/server/bin/debug/neko",
"cwd": "${workspaceFolder}/server/",
"args": ["serve", "-d", "-c", "dev/runtime/config.yml"],
"envFile": "${workspaceFolder}/server/.env.development"
}
]
}

11
.vscode/settings.json vendored
View File

@ -1,8 +1,17 @@
{
"go.inferGopath": false,
"go.delveConfig": {
"useApiV1": false
},
"[go]": {
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
}
},
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.detectIndentation": false,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"files.encoding": "utf8",
"files.eol": "\n",
"editor.formatOnSave": false,

View File

@ -186,7 +186,8 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2020-2022 m1k1o & Demodesk GmbH
Copyright 2020 Nurdism <nurdism.io@gmail.com>
Copyright 2020-2024 m1k1o
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

View File

@ -1,3 +1,43 @@
# neko
This app uses WebRTC to stream a desktop inside of a docker container. Client can be found here: [demodesk/neko-client](https://github.com/demodesk/neko-client).
For **community edition** neko with GUI and _plug & play_ deployment visit [m1k1o/neko](https://github.com/m1k1o/neko).
### **m1k1o/neko** vs **demodesk/neko**, why do we have two of them?
This project started as a fork of [m1k1o/neko](https://github.com/m1k1o/neko). But over time, development went way ahead of the original one in terms of features, updates and refactoring. The goal is to rebase [m1k1o/neko](https://github.com/m1k1o/neko) repository onto this one and move all extra features (such as chat and emotes) to a standalone plugin.
- This project is aimed to be the engine providing foundation for all applications that are streaming desktop environment using WebRTC to the browser.
- [m1k1o/neko](https://github.com/m1k1o/neko) is meant to be self-hosted replacement for [rabb.it](https://en.wikipedia.org/wiki/Rabb.it): Community edition with well-known GUI, all the social functions (such as chat and emotes) and easy deployment.
Notable differences to the [m1k1o/neko](https://github.com/m1k1o/neko) are:
- Go plugin support.
- Multiple encoding qualities simulcast.
- Bandwidth estimation and adaptive quality.
- Custom screen size (with automatic sync).
- Single cursor for host - cursor image proxying.
- Custom cursor style/badge for participants.
- Inactive cursors (participants that are not hosting).
- Fallback mode and reconnection improvements:
- Watching using screencasting.
- Controlling using websockets.
- Members handling:
- Access control (view, interactivity, clipboard).
- Posibility to add external members providers.
- Persistent login (using cookies).
- Drag and drop passthrough.
- File upload passthrough (experimental).
- Microphone passthrough.
- Webcam passthrough (experimental).
- Bi-directional text/html clipboard.
- Keyboard layouts/variants.
- Metrics and REST API.
## Docs
*TBD.*
# neko-client
Connect to [demodesk/neko](https://github.com/demodesk/neko) backend with self contained vue component.

7
client/.gitignore vendored Normal file
View File

@ -0,0 +1,7 @@
test-results/
playwright-report/
/src/page/plugins/*
!/src/page/plugins/filetransfer
!/src/page/plugins/chat
!/src/page/plugins/.gitkeep

View File

View File

@ -50,9 +50,9 @@ export const RoomApiAxiosParamCreator = function (configuration?: Configuration)
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
boradcastStart: async (broadcastStatus: BroadcastStatus, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
broadcastStart: async (broadcastStatus: BroadcastStatus, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
// verify required parameter 'broadcastStatus' is not null or undefined
assertParamExists('boradcastStart', 'broadcastStatus', broadcastStatus)
assertParamExists('broadcastStart', 'broadcastStatus', broadcastStatus)
const localVarPath = `/api/room/broadcast/start`;
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@ -94,7 +94,7 @@ export const RoomApiAxiosParamCreator = function (configuration?: Configuration)
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
boradcastStop: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
broadcastStop: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
const localVarPath = `/api/room/broadcast/stop`;
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@ -1146,10 +1146,10 @@ export const RoomApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async boradcastStart(broadcastStatus: BroadcastStatus, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.boradcastStart(broadcastStatus, options);
async broadcastStart(broadcastStatus: BroadcastStatus, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.broadcastStart(broadcastStatus, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['RoomApi.boradcastStart']?.[localVarOperationServerIndex]?.url;
const localVarOperationServerBasePath = operationServerMap['RoomApi.broadcastStart']?.[localVarOperationServerIndex]?.url;
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
/**
@ -1158,10 +1158,10 @@ export const RoomApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async boradcastStop(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.boradcastStop(options);
async broadcastStop(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.broadcastStop(options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['RoomApi.boradcastStop']?.[localVarOperationServerIndex]?.url;
const localVarOperationServerBasePath = operationServerMap['RoomApi.broadcastStop']?.[localVarOperationServerIndex]?.url;
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
/**
@ -1479,8 +1479,8 @@ export const RoomApiFactory = function (configuration?: Configuration, basePath?
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
boradcastStart(broadcastStatus: BroadcastStatus, options?: any): AxiosPromise<void> {
return localVarFp.boradcastStart(broadcastStatus, options).then((request) => request(axios, basePath));
broadcastStart(broadcastStatus: BroadcastStatus, options?: any): AxiosPromise<void> {
return localVarFp.broadcastStart(broadcastStatus, options).then((request) => request(axios, basePath));
},
/**
*
@ -1488,8 +1488,8 @@ export const RoomApiFactory = function (configuration?: Configuration, basePath?
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
boradcastStop(options?: any): AxiosPromise<void> {
return localVarFp.boradcastStop(options).then((request) => request(axios, basePath));
broadcastStop(options?: any): AxiosPromise<void> {
return localVarFp.broadcastStop(options).then((request) => request(axios, basePath));
},
/**
*
@ -1735,8 +1735,8 @@ export class RoomApi extends BaseAPI {
* @throws {RequiredError}
* @memberof RoomApi
*/
public boradcastStart(broadcastStatus: BroadcastStatus, options?: RawAxiosRequestConfig) {
return RoomApiFp(this.configuration).boradcastStart(broadcastStatus, options).then((request) => request(this.axios, this.basePath));
public broadcastStart(broadcastStatus: BroadcastStatus, options?: RawAxiosRequestConfig) {
return RoomApiFp(this.configuration).broadcastStart(broadcastStatus, options).then((request) => request(this.axios, this.basePath));
}
/**
@ -1746,8 +1746,8 @@ export class RoomApi extends BaseAPI {
* @throws {RequiredError}
* @memberof RoomApi
*/
public boradcastStop(options?: RawAxiosRequestConfig) {
return RoomApiFp(this.configuration).boradcastStop(options).then((request) => request(this.axios, this.basePath));
public broadcastStop(options?: RawAxiosRequestConfig) {
return RoomApiFp(this.configuration).broadcastStop(options).then((request) => request(this.axios, this.basePath));
}
/**

View File

@ -136,7 +136,7 @@ export class NekoMessages extends EventEmitter<NekoEvents> {
this._state.screen.configurations = list // TODO: Vue.Set
this[EVENT.BORADCAST_STATUS](broadcast_status)
this[EVENT.BROADCAST_STATUS](broadcast_status)
}
protected [EVENT.SYSTEM_SETTINGS]({ id, ...settings }: message.SystemSettingsUpdate) {
@ -320,8 +320,8 @@ export class NekoMessages extends EventEmitter<NekoEvents> {
// Broadcast Events
/////////////////////////////
protected [EVENT.BORADCAST_STATUS]({ url, is_active }: message.BroadcastStatus) {
this._localLog.debug(`EVENT.BORADCAST_STATUS`)
protected [EVENT.BROADCAST_STATUS]({ url, is_active }: message.BroadcastStatus) {
this._localLog.debug(`EVENT.BROADCAST_STATUS`)
// TODO: Handle.
this.emit('room.broadcast.status', is_active, url)
}
@ -336,7 +336,7 @@ export class NekoMessages extends EventEmitter<NekoEvents> {
}
protected [EVENT.SEND_BROADCAST]({ sender, subject, body }: message.SendMessage) {
this._localLog.debug(`EVENT.BORADCAST_STATUS`)
this._localLog.debug(`EVENT.BROADCAST_STATUS`)
this.emit('receive.broadcast', sender, subject, body)
}

View File

@ -53,7 +53,7 @@ export const CLIPBOARD_SET = 'clipboard/set'
export const KEYBOARD_MODIFIERS = 'keyboard/modifiers'
export const KEYBOARD_MAP = 'keyboard/map'
export const BORADCAST_STATUS = 'broadcast/status'
export const BROADCAST_STATUS = 'broadcast/status'
export const SEND_UNICAST = 'send/unicast'
export const SEND_BROADCAST = 'send/broadcast'

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