Coder Social home page Coder Social logo

screego / server Goto Github PK

View Code? Open in Web Editor NEW
6.7K 98.0 483.0 1.26 MB

screen sharing for developers https://screego.net/

Home Page: https://app.screego.net

License: GNU General Public License v3.0

HTML 0.80% CSS 0.03% TypeScript 47.11% Go 51.94% Dockerfile 0.12%
webrtc screensharing-tool privacy selfhosted docker go

server's Introduction

screego/server

screen sharing for developers

Build Status Go Report Card Docker Pulls latest release

Intro

In the past I've had some problems sharing my screen with coworkers using corporate chatting solutions like Microsoft Teams. I wanted to show them some of my code, but either the stream lagged several seconds behind or the quality was so poor that my colleagues couldn't read the code. Or both.

That's why I created screego. It allows you to share your screen with good quality and low latency. Screego is an addition to existing software and only helps to share your screen. Nothing else (:.

Features

  • Multi User Screenshare
  • Secure transfer via WebRTC
  • Low latency / High resolution
  • Simple Install via Docker / single binary
  • Integrated TURN Server see NAT Traversal

Demo / Public InstanceInstallationConfiguration

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

server's People

Contributors

0mp avatar dennisbecker avatar fbrandt-dev avatar fulachs avatar jmattheis avatar maximbaz avatar mpldr avatar mrtip0 avatar patrickhempel avatar shyim avatar svenkube avatar tomonsoejang avatar tvrg avatar wdalmut avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

server's Issues

Screenshare not working for public and private instances

Hey fellows,

at first: thanks for this awesome software! ❤️

But I am getting the bug, that neither the public instance nor a private install with docker-compose have the screenshare working.

Sharing the screen is working but no one can see it (except if you open the same room in a private window on your own machine) (both instances (public + self-hosted))

There are no entries in the developer console nor in the output of the screego server where we could get a hint for the bug.

SSL is used for the private instance (with traefik on a .dev domain (which also only accepts SSL connections)).

I am using Chromium version 86.0.4240.111 for sharing the screen.

Shortcuts for common functions

It would be nice to use shortcuts for common functions, like:

  • s to trigger screen sharing (start/stop)
  • someKey to switch between available streams
  • f to trigger full screen
  • c to copy the room url

Feature Request: Audio

It would be great if it's possible to also stream the audio of the desktop e.g. from applications, presentations etc.

could not start turn server

trying to run it on windows leads to the following:
FTL could not start turn server error="turn: RelayAddress must be valid IP to use RelayAddressGeneratorStatic"

> set SCREEGO_EXTERNAL_IP=217.X.X.249
> screego.exe serve
2020-10-07T10:42:16+02:00 INF SCREEGO_SECRET unset, user logins will be invalidated on restart
2020-10-07T10:42:16+02:00 INF Users file not specified
2020-10-07T10:42:16+02:00 FTL could not start turn server error="turn: RelayAddress must be valid IP to use RelayAddressGeneratorStatic"

Screego inside local network?

i am currently trying to find a way to stream windows I have open on my Computer to my phone.
Now I could setup Screego on my external server, but it would be simpler if i could just install it on my Computer (which is a Linux PC so no problem there). my question is about all the config with external ip etc.. what do i put there if i only want to use it inside my own home network?

Feature request: Start fullscreen mode by URL parameter

Hi,

thank you for developing screego :-)

Could you please add an URL option that makes it possible to join a running screego session in fullscreen without clicking on the fullscreen button?

A complete URL (with login) could look like this: https://user:[email protected]:12345/?room=room&fullscreen=true

Background: In OBS a browser element can be added to a scene. This browser opens an URL and is non-interactive. If you have a site (eg with screego) someone is streaming to, it can be embedded into OBS. This could be used to have screens shared by multiple praticipiants that are composed together into a scene and broadcasted.

Cu Hauke

Automatic fallback to TURN

Hello, thanks so much for this project, it is amazing!

While learning about STUN and TURN I stumbled upon this quote from Nextcloud docs:

Nextcloud Talk will try direct P2P in the first place, use STUN if needed and TURN as last resort fallback. Thus to be most flexible and guarantee functionality of your Nextcloud Talk instance in all possible connection cases, you most properly want to setup a TURN server.

What do you think of implementing the same approach? We won't need to ask users to pick STUN or TURN before creating a room, it will always start as STUN, and only if connection cannot be established screego would automatically try TURN next.

Of course all the existing options should be respected, e.g. with SCREEGO_AUTH_MODE=turn the fallback to TURN would only happen if user is authenticated - exactly as it is today, I'm just thinking that we don't really have to ask users what they want, we can pick the best of the available options ourselves.

STUN and TURN not working with Docker without "network_mode: host", as described in install instructions for "Port Range" docker-compose.yml

I've spent quite some time testing v1.1.1 in a Docker environment according to the "Port Range" section of the installation guide. I think with the current version it's (nearly?) impossible to get Screego to work outside of a local network with port mappings such as:

    ports:
      - 5050:5050
      - 3478:3478
      - 50000-50100:50000-50100/udp

Locally it works fine, but behind a NAT, both STUN as well as TURN fail and the stream remains black.
The only solution I found to get it working with Docker was to use the network_mode: host syntax.
(Other potential solutions approaches might involve additional firewall rules or explicitly specifying every in ports: with the - mode: host syntax since docker-compose does not support ranges here, but I didn't check these.)

I'm not really sure why the issue was closed but at least for me it's not working.

Further, I've tested Screego with STUN in various scenarios, all except one worked well. However, the demo instance at app.screego.net didn't work at all as soon as at least one NAT was in-between the connection path. If the demo instance is hosted using via Docker this might be caused by the same issue.

Originally posted by @ThelloD in #27 (comment)

screengo is not working in private instance for Ubuntu 16.04

While sharing the screen one pop-up should generate for which screen you want to share.That pop-up itself is not coming, so that screen share button is not working in my private instance. I have checked the logs and there is no error message.

sample screen I have attached for clarity.
screenGoError

In public instances it's working. Let me know if anything requires configurations for private instances.

I have made the setup through docker.

version: "3.3"
services:
  screego:
    image: screego/server:1.0.7
    network_mode: host
    environment:
      SCREEGO_EXTERNAL_IP: "164.52.196.20"

Ubuntu : 16.04

Docker + Login to Screego

Hi,

we are using screego in docker and it works good, but i want to user the "Login" option.

Here is my docker-compose.yml.

version: "3.7"
services:
    screego:
        image: screego/server:1.0.7
        network_mode: host
        volumes:
                - /root/screengo/screengo.passwd:/root/screengo.passwd
        environment:
            SCREEGO_EXTERNAL_IP: "X.X.X.X"
            SCREEGO_SECRET: "...................."
            SCREEGO_USERS_FILE: "/root/screengo.passwd"
            SCREEGO_LOG_LEVEL: "debug"
            SCREEGO_SERVER_ADDRESS: "screego.docker:5050"
            SCREEGO_TURN_ADDRESS: "X.X.X.X:3478"  

I understand that these settings should be correct.
When I start docker-compose and go to screego to test the login, I get this error message "Login Failed: could not authenticate". It seems that the user file will not be transferred.

Does anyone have any advice how I can solve the problem?

Great project 😀

It would be great if you add some credit about PION community without with it would have not be possible.

NPE on hostoffer

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x40 pc=0x8e3015]

goroutine 10 [running]:
github.com/screego/server/ws.(*HostOffer).Execute(0xc0001c9680, 0xc000175400, 0x8319a3a4552c7d5f, 0x206d13e1, 0xc0001de420, 0x16, 0x0, 0xc000060780, 0xc000060900, 0xc0001be430, ...)
        /home/jm/src/screego/server/ws/event_hostoffer.go:33 +0x215
github.com/screego/server/ws.(*Rooms).Start(0xc000175400)
        /home/jm/src/screego/server/ws/rooms.go:70 +0xe2
created by github.com/screego/server/cmd.serveCmd.func1
        /home/jm/src/screego/server/cmd/serve.go:49 +0x2e5

'No stream available' on both sides.

First, my setup:
Downloaded and extracted https://github.com/screego/server/releases/download/v1.0.1/screego_1.0.1_linux_arm64.tar.gz
I've build my own image using Dockerfile from https://github.com/screego/server/blob/master/Dockerfile

Finally, my docker-compose.yaml

version: "3.7"
services:
  screego:
    container_name: screego
    image: bielej/screengo
    ports:
      - 5050:5050
      - 3478:3478
    environment:
      SCREEGO_EXTERNAL_IP: "0.0.0.0"
      SCREEGO_TRUST_PROXY_HEADERS: "true"
      SCREEGO_AUTH_MODE: "none"
      SCREEGO_LOG_LEVEL: "debug"

That gives:

$ docker exec -it screego /screego --version
screego version 1.0.1; screego/server@fa388f6e59401059530fae9d6d15da809fe2abb7
$ docker ps | grep screego
28f5f4500155        bielej/screengo         "/screego serve"         5 minutes ago       Up 5 minutes            0.0.0.0:3478->3478/tcp, 0.0.0.0:5050->5050/tcp                                                   screego

That runs behind Nginx with proper HTTPS (using the config from https://screego.net/#/proxy?id=at-root-path).
I've tried both STUN and TURN - same result. Filling SCREEGO_EXTERNAL_IP with a real, valid IP address does not help.

chrome_2020-10-06_18-22-42

In that example I've tried sharing a sample window.
The screen/window does not get shared.

Logs:

screengo   | 2020-10-06T16:03:55Z DBG Logger initialized
screengo   | 2020-10-06T16:03:55Z INF SCREEGO_SECRET unset, user logins will be invalidated on restart
screengo   | 2020-10-06T16:03:55Z INF Users file not specified
screengo   | 2020-10-06T16:03:55Z INF Start TURN/STUN addr=0.0.0.0:3478
screengo   | 2020-10-06T16:03:55Z INF Start HTTP addr=0.0.0.0:5050
screengo   | 2020-10-06T16:04:36Z DBG WebSocket Close code=1001 reason=
screengo   | 2020-10-06T16:04:44Z DBG WebSocket error="websocket: close 1006 (abnormal closure): unexpected EOF" type=read
screengo   | 2020-10-06T16:07:04Z DBG WebSocket Close code=1001 reason=
screengo   | 2020-10-06T16:07:29Z DBG WebSocket Close code=1001 reason=
screengo   | 2020-10-06T16:07:43Z DBG WebSocket Close code=1001 reason=
screengo   | 2020-10-06T16:07:59Z DBG WebSocket Close code=1000 reason="room with id test does already existn"
screengo   | 2020-10-06T16:07:59Z DBG WebSocket error="read tcp 172.23.0.2:5050->192.168.0.128:63295: use of closed network connection" type=read
screengo   | 2020-10-06T16:08:16Z DBG WebSocket Close code=1000 reason="room with id test does already existn"
screengo   | 2020-10-06T16:08:16Z DBG WebSocket error="read tcp 172.23.0.2:5050->192.168.0.128:63298: use of closed network connection" type=read
screengo   | 2020-10-06T16:08:21Z DBG WebSocket Close code=1001 reason=
screengo   | 2020-10-06T16:08:23Z DBG WebSocket Close code=1001 reason=
screengo   | 2020-10-06T16:08:24Z DBG WebSocket Close code=1000 reason="room with id test does not exist"
screengo   | 2020-10-06T16:08:24Z DBG WebSocket error="read tcp 172.23.0.2:5050->192.168.0.128:63300: use of closed network connection" type=read
screengo   | 2020-10-06T16:08:37Z DBG WebSocket Close code=1001 reason=
screengo   | 2020-10-06T16:08:38Z DBG WebSocket Close code=1000 reason="room with id test does not exist"
screengo   | 2020-10-06T16:08:38Z DBG WebSocket error="read tcp 172.23.0.2:5050->192.168.0.128:63309: use of closed network connection" type=read

Also, the demo/public instance suffers from the same issue.

Screego does not contain UI when built from source

Hi,

what's the correct way of building Screego from source? I'm trying to add Screego to FreeBSD Ports, but the problem is that the binary I get does not contain the UI apparently. I've checked the official FreeBSD binaries you release, and they seem to work just fine by which I mean the website looks like the one on the demo site (after I configure screego.config and run screego serve, of course). With my manually built binaries, however, I get this kind of errors:

2020/10/09 17:45:02 http: panic serving 127.0.0.1:47506: stat /usr/home/user/f/ports/head/www/screego/build/index.html: no such file or directory
goroutine 22 [running]:
net/http.(*conn).serve.func1(0xc0000be000)
        /usr/local/go/src/net/http/server.go:1801 +0x147
panic(0xa93940, 0xc000390450)
        /usr/local/go/src/runtime/panic.go:975 +0x3e9
github.com/screego/server/ui.serveFile.func1(0x8289b6088, 0xc00038c1c0, 0xc0003b6100)
        /usr/home/0mp/f/ports/head/www/screego/work/server-1.0.5/ui/serve.go:34 +0x1fe
net/http.HandlerFunc.ServeHTTP(0xc0002f1b90, 0x8289b6088, 0xc00038c1c0, 0xc0003b6100)
        /usr/local/go/src/net/http/server.go:2042 +0x44
github.com/gorilla/handlers.(*cors).ServeHTTP(0xc0003ac120, 0x8289b6088, 0xc00038c1c0, 0xc0003b6100)
        /usr/home/0mp/f/ports/head/www/screego/work/server-1.0.5/vendor/github.com/gorilla/handlers/cors.go:54 +0x103e
github.com/rs/zerolog/hlog.AccessHandler.func1.1(0xc0f0e0, 0xc0003b0000, 0xc0003b6100)
        /usr/home/0mp/f/ports/head/www/screego/work/server-1.0.5/vendor/github.com/rs/zerolog/hlog/hlog.go:196 +0x243
net/http.HandlerFunc.ServeHTTP(0xc00039a100, 0xc0f0e0, 0xc0003b0000, 0xc0003b6100)
        /usr/local/go/src/net/http/server.go:2042 +0x44
github.com/gorilla/mux.(*Router).ServeHTTP(0xc000348000, 0xc0f0e0, 0xc0003b0000, 0xc0000c6000)
        /usr/home/0mp/f/ports/head/www/screego/work/server-1.0.5/vendor/github.com/gorilla/mux/mux.go:212 +0xd3
net/http.serverHandler.ServeHTTP(0xc00018a1c0, 0xc0f0e0, 0xc0003b0000, 0xc0000c6000)
        /usr/local/go/src/net/http/server.go:2843 +0xa3
net/http.(*conn).serve(0xc0000be000, 0xc10de0, 0xc000090080)
        /usr/local/go/src/net/http/server.go:1925 +0x8ad
created by net/http.(*Server).Serve
        /usr/local/go/src/net/http/server.go:2969 +0x36c
zaz^C2020-10-09T17:45:09+02:00 INF Received interrupt. Shutting down...

What's the secret source needed to get the UI included in the binary?

Cheers!

IPv6 Support

Add support for IPv6 for the TURN server. This should include:

  • New setting for IPv6 external ip
  • Listen on tcp6 & udp6

See also #4

panic: runtime error: slice bounds out of range [:3524] with capacity 1500

While trying your cool solution both in a Docker environment and native on my EC2 box, it reproducedly crashes after some seconds of sharing my local screen to another local browser.

Config:

      SCREEGO_EXTERNAL_IP: "x.x.x.20"
      SCREEGO_TURN_ADDRESS: "0.0.0.0:443"
      SCREEGO_SERVER_ADDRESS: "0.0.0.0:80"
      SCREEGO_SECRET: "totallysecret"
      SCREEGO_TURN_PORT_RANGE: "50000:55000"
      SCREEGO_TURN_STRICT_AUTH: "false"
      SCREEGO_TRUST_PROXY_HEADERS: "true"
      SCREEGO_AUTH_MODE: "none"
      SCREEGO_CORS_ALLOWED_ORIGINS: "https://other.tld"
      SCREEGO_LOG_LEVEL: "debug"

Log:

ubuntu@ip-172-31-42-4:~/screego$ sudo ./screego serve
2021-02-18T14:49:11Z DBG Logger initialized
2021-02-18T14:49:11Z DBG Loading file /home/ubuntu/screego/screego.config
2021-02-18T14:49:11Z INF Users file not specified
2021-02-18T14:49:11Z DBG Using Port Range max=55000 min=50000
2021-02-18T14:49:11Z INF Start TURN/STUN addr=0.0.0.0:443
2021-02-18T14:49:11Z INF Start HTTP addr=0.0.0.0:80
2021-02-18T14:49:15Z DBG HTTP duration="345.412µs" host=host.tld ip=172.31.35.145:64080 path=/ size=2158 status=200
2021-02-18T14:49:15Z DBG HTTP duration=2.592104ms host=host.tld ip=172.31.35.145:64080 path=/static/css/main.08e397cf.chunk.css size=0 status=200
2021-02-18T14:49:15Z DBG HTTP duration=17.883149ms host=host.tld ip=172.31.35.145:64082 path=/static/js/2.6c008a11.chunk.js size=0 status=200
2021-02-18T14:49:15Z DBG HTTP duration=3.990749ms host=host.tld ip=172.31.35.145:64080 path=/static/js/main.4606f178.chunk.js size=0 status=200
2021-02-18T14:49:15Z DBG HTTP duration="46.64µs" host=host.tld ip=172.31.35.145:64082 path=/config size=70 status=200
2021-02-18T14:49:15Z DBG HTTP duration="548.608µs" host=host.tld ip=172.31.35.145:64082 path=/favicon.ico size=15086 status=200
2021-02-18T14:49:15Z DBG HTTP duration=10.723208ms host=host.tld ip=172.31.35.145:64082 path=/static/media/logo.d2ceaca5.svg size=0 status=200
2021-02-18T14:49:15Z DBG WebSocket New Connection id=c0n7squa08d27mvfd2ng ip=172.31.35.145
2021-02-18T14:49:15Z DBG HTTP duration="185.827µs" host=host.tld ip=172.31.35.145:64084 path=/stream size=0 status=0
2021-02-18T14:49:15Z DBG WebSocket Receive event=*ws.Join id=c0n7squa08d27mvfd2ng ip=172.31.35.145
2021-02-18T14:49:15Z DBG WebSocket Close code=1000 id=c0n7squa08d27mvfd2ng ip=172.31.35.145 reason="room with id obliged-beige-salamander does not exist"
2021-02-18T14:49:15Z DBG HTTP duration="125.84µs" host=172.31.42.4 ip=172.31.17.53:24862 path=/ size=2158 status=200
2021-02-18T14:49:16Z DBG HTTP duration="134.916µs" host=172.31.42.4 ip=172.31.35.145:64088 path=/ size=2158 status=200
2021-02-18T14:49:20Z DBG WebSocket New Connection id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:20Z DBG HTTP duration="177.001µs" host=host.tld ip=172.31.35.145:64082 path=/stream size=0 status=0
2021-02-18T14:49:20Z DBG WebSocket Receive event=*ws.Create id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:20Z DBG WebSocket Send event=room id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:24Z DBG HTTP duration="105.697µs" host=host.tld ip=172.31.35.145:64096 path=/ size=2158 status=200
2021-02-18T14:49:24Z DBG HTTP duration="95.075µs" host=host.tld ip=172.31.35.145:64096 path=/static/css/main.08e397cf.chunk.css size=0 status=200
2021-02-18T14:49:24Z DBG HTTP duration=3.70267ms host=host.tld ip=172.31.35.145:64098 path=/static/js/2.6c008a11.chunk.js size=0 status=200
2021-02-18T14:49:24Z DBG HTTP duration="188.866µs" host=host.tld ip=172.31.35.145:64096 path=/static/js/main.4606f178.chunk.js size=0 status=200
2021-02-18T14:49:25Z DBG HTTP duration="20.124µs" host=host.tld ip=172.31.35.145:64098 path=/config size=70 status=200
2021-02-18T14:49:25Z DBG HTTP duration="109.365µs" host=host.tld ip=172.31.35.145:64098 path=/favicon.ico size=15086 status=200
2021-02-18T14:49:25Z DBG HTTP duration=1.796977ms host=host.tld ip=172.31.35.145:64098 path=/static/media/logo.d2ceaca5.svg size=0 status=200
2021-02-18T14:49:25Z DBG WebSocket New Connection id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:25Z DBG HTTP duration="168.819µs" host=host.tld ip=172.31.35.145:64100 path=/stream size=0 status=0
2021-02-18T14:49:25Z DBG WebSocket Receive event=*ws.Join id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:25Z DBG WebSocket Send event=room id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:25Z DBG WebSocket Send event=room id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
turn ERROR: 2021/02/18 14:49:25 error when handling datagram: unable to handle ChannelData from 46.100.86.24:13778: no allocation found 46.100.86.24:13778:172.31.42.4:443
2021-02-18T14:49:34Z DBG WebSocket Receive event=*ws.StartShare id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=clientsession id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=hostsession id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=room id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=room id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Receive event=*ws.HostOffer id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Receive event=*ws.HostICE id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Receive event=*ws.HostICE id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=hostoffer id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=hostice id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=hostice id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Receive event=*ws.HostICE id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=hostice id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG TURN authenticated addr=89.247.119.26:58526 realm=screego
2021-02-18T14:49:34Z DBG TURN allocated addr=[::]:53934 relayaddr=3.64.59.20:53934
2021-02-18T14:49:34Z DBG WebSocket Receive event=*ws.HostICE id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=hostice id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Receive event=*ws.ClientAnswer id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=clientanswer id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Receive event=*ws.ClientICE id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=clientice id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG TURN authenticated addr=89.247.119.26:51089 realm=screego
2021-02-18T14:49:34Z DBG TURN allocated addr=[::]:54764 relayaddr=3.64.59.20:54764
2021-02-18T14:49:34Z DBG WebSocket Receive event=*ws.ClientICE id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=clientice id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:35Z DBG WebSocket Receive event=*ws.HostICE id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:35Z DBG WebSocket Send event=hostice id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:45Z DBG HTTP duration="101.239µs" host=172.31.42.4 ip=172.31.17.53:24880 path=/ size=2158 status=200
2021-02-18T14:49:46Z DBG HTTP duration="115.434µs" host=172.31.42.4 ip=172.31.35.145:64114 path=/ size=2158 status=200
panic: runtime error: slice bounds out of range [:3524] with capacity 1500

goroutine 60 [running]:
github.com/pion/turn/v2.(*Server).readLoop(0xc000271a40, 0xd85b20, 0xc0001a10e0, 0xc00006afc0)
	/home/runner/go/pkg/mod/github.com/pion/turn/[email protected]/server.go:150 +0x3ac
created by github.com/pion/turn/v2.NewServer.func2
	/home/runner/go/pkg/mod/github.com/pion/turn/[email protected]/server.go:102 +0x1b2

Hide video controls in full screen (to avoid pausing the stream unintentionally)

When going into full-screen, the (annoying) room title and controls are hidden, which is good (see #17 for more information). However, then, the regular HTML5 video controls are shown. While that wouldn't be so much of an issue (I mean, a play/pause button doesn't make too much sense, but it's not a problem), this video player just pauses whenever I click into the window.

This behavior is problematic, and it took me some time to realize why the video apparently stopped. When pressing the play button (or clicking into the window otherwise again), the stream continues.

I would suggest to completely hide the video controls, as they're not needed at all. This should also remove the ability to pause the stream by clicking into the window.

Edit: this behavior was observed in Chromium 85.0.4183.121.

Share Code Words

Is the only way to join a session to share the link or manually type in the URL?

Can you not type in the three code words? Am I missing something?

Recording

It would be handful to have a function to record the stream.

  • Users can record the stream of a user if the user allows ist.
  • A user can self record his own stream.

Docker + TURN not working

In our company, direct traffic between PCs is blocked, so we have to use the built-in TURN server.

This works fine when I'm using the binary, but not with the docker image (same configuration).

When inspecting port 3478 with tcpdump, it seems like some (not all) UDP packets use an internal docker IP address, which looks a bit suspicious to me.

  screego:
    image: screego/server:1.0.1
    ports:
      - mode: host
        target: 5050
        published: 5050
      - mode: host
        protocol: tcp
        target: 3478
        published: 3478
      - mode: host
        protocol: udp
        target: 3478
        published: 3478
    environment:
      - SCREEGO_EXTERNAL_IP=X.X.151.230
      - SCREEGO_SERVER_ADDRESS=0.0.0.0:5050
      - SCREEGO_TURN_ADDRESS=0.0.0.0:3478
      - SCREEGO_AUTH_MODE=none
      - SCREEGO_SERVER_TLS=true
      - SCREEGO_TLS_CERT_FILE=/etc/letsencrypt/live/xxx/fullchain.pem
      - SCREEGO_TLS_KEY_FILE=/etc/letsencrypt/live/xxx/privkey.pem
      - SCREEGO_LOG_LEVEL=debug
    volumes:
      - /etc/letsencrypt:/etc/letsencrypt:ro

Be able to hide controls and room name

When not running in full-screen, the controls on the bottom and the room name on the top cannot be hidden in any way. As they're really large (especially the name could be smaller), they're likely in the way and cover interesting content.

I would like to be able to hide those elements. Maybe they can also just be transitioned out of the way after some timeout, and brought back when a mouse pointer hovers over the page again, like most alternative solutions do (e.g., Jitsi Meet).

Cancelling a presentation destroys the room you're in

Steps to reproduce

  1. Visit https://app.screego.net.
  2. Click on the "Create room" button.
  3. Click on the "Start presentation" button and select a screen.
  4. Click on the "Cancel presentation" button.
  5. Observe the room you're in getting destroyed.
  6. See error message malformed message: kekw unexpected end of JSON input pop up in the browser.

Environment

  • OS: Windows 10
  • Browser: Chromium 85 (no add-ons)

Unchecking 'Close Room after you leave' has no effect

Steps to reproduce:

  1. Visit your Screego instance
  2. Set a room name (ie. test)
  3. Uncheck Close Room after you leave
  4. Click Create room
  5. After creating the room, close the browser tab (or close the browser)
  6. Reopen closed tab
  7. See the error room with id test does not exist

Expected behavior:
Room should remain available after leaving the site.

Version:

screego version 1.0.1; screego/server@fa388f6e59401059530fae9d6d15da809fe2abb7

allow to specify room in url that is automatically created

It would be great to support "deep links" with a room-id that will automatically create the room specified in the URL if not already existing. Alternatively some kind of API would be helpful, that allow for "room-creation" similar to the form an the welcome page.

PS: Thanks for sharing this great project as OSS!

Screego in Docker without nginx

Hi all,

i ´m actually using screego in docker with nginx, all in all it works fine.
I have noticed that some users cannot share their screens. Now I want to try it out without nginx.
Now i would like to use screego in docker without nginx and now i have the problem that i can´t configure SSL.

Do you have a solution for that? Do I have to use nginx for SSL? Or is this procedure not intended?

Thanks for your help.

panic: send on closed channel

panic: send on closed channel

goroutine 10 [running]:
github.com/screego/server/ws.(*Room).notifyInfoChanged(0xc000172c40)
        /home/jm/src/screego/server/ws/room.go:99 +0x35f
github.com/screego/server/ws.(*Name).Execute(0xc0001adcf0, 0xc000175400, 0x8019a3a43be67d5f, 0x426be058, 0xc0001def80, 0x13, 0x
0, 0xc000060fc0, 0xc000061140, 0xc00028a620, ...)
        /home/jm/src/screego/server/ws/event_name.go:29 +0xd4
github.com/screego/server/ws.(*Rooms).Start(0xc000175400)
        /home/jm/src/screego/server/ws/rooms.go:70 +0xe2
created by github.com/screego/server/cmd.serveCmd.func1
        /home/jm/src/screego/server/cmd/serve.go:49 +0x2e5

Android phones can't share screens

I can create room in my phone,but clicked the button "Start Presentation" ,shared is not successful, browsers such as :google chrome ,firefox

BUG: Screenshare isn't stopped when using browser based "Stop sharing" button is clicked

Hey,

in Google Chrome (and mabe other browsers) you have a "native" Button to stop your screen share. In german its called "Freigabe beenden" in English "Stop Share" (or simmilar).
image

When pressing this button, the screen share window goes black and you need to click on "cancel presentation", to disable screen share.
image

I think there is an event, which you can hook on to toggle this, without the need to click on "cancel presentation".

Be able to "escape" from opening your own stream

Once you start sharing your screen you'll see a "preview" of it in the bottom right corner.
If you click on it, it extends and there seems to be no way to "escape" out of it, so you would need to restart the stream.

Not really bothering because why would you want to show the sreego app while sharing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.