Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

a few questions #1

Open
robertnax opened this issue Mar 9, 2022 · 3 comments
Open

a few questions #1

robertnax opened this issue Mar 9, 2022 · 3 comments

Comments

@robertnax
Copy link

  1. cloned the repositiory - the 'make clean / make en' instructions didnt work - it complains like this :
/dev/go/hall$ make en
go mod download
go mod vendor
go get -v -o hall -trimpath -tags lang_en -ldflags='-s -w -X "main.BUILDDATE=2022-03-09 07:51:36" -X "main.VERSION=2.2.6"' .
flag provided but not defined: -o
usage: go get [-d] [-t] [-u] [-v] [build flags] [packages]
Run 'go help get' for details.
make: *** [Makefile:12: en] Error 2
  1. if i just do 'go build' then it builds the hall executable - when i run it though it complains about missing config file :
Hall dev
Mumble Protocol 1.4.0 (Revision 66560)
Built on (not set)

[Coordinator] Using data directory: /home/deer/dev/go/hall/data
[Coordinator] Loading config file
[Coordinator] Unable to open config file (/home/deer/dev/go/hall/config.json): open /home/deer/dev/go/hall/config.json: no such file or directory

There is no example config included in the repository here ?

  1. you got any idea how many connections this could handle ?
@wfjsw
Copy link
Owner

wfjsw commented Mar 9, 2022

  1. cloned the repositiory - the 'make clean / make en' instructions didnt work - it complains like this :

There might be an error in Makefile for en directive since I don't use it personally. You can edit Makefile manually and replace the go get with go build. I'll change this later.

2. if i just do 'go build' then it builds the hall executable - when i run it though it complains about missing config file :

Checkout https://github.com/wfjsw/hall/blob/master/config.go it specified a JSON structure. Craft that file manually and use it as config.json.

3. you got any idea how many connections this could handle ?

On my server it once handled 1000 simultaneous connections before my CPU drained. When supplied with more resource it should scale pretty well, since this makes uses of goroutines to achieve higher multicore performance than original Murmur server. Note that there are extra optimizations for UDP thus UDP is preferred over TCP.

@robertnax
Copy link
Author

robertnax commented Mar 9, 2022

thanks alot for your answer.

Got an additional question - does it support to automatically switch to TCP in case UDP is unstable & back to TCP again if UDP becomes stable again ( or is this handled in the clients ) ?

and do you by the way have an example config.json that is populated ?

@wfjsw
Copy link
Owner

wfjsw commented Mar 10, 2022

Got an additional question - does it support to automatically switch to TCP in case UDP is unstable & back to TCP again if UDP becomes stable again ( or is this handled in the clients ) ?

It should be client-side, however mumble-voip/mumble#5421

Hall features a way to disable UDP when it see packet drops through UDP Packet Statistics configurable in udp_mark_unstable_rate but it is not sufficient to resolve mumble-voip/mumble#5421 specifically when clients are no longer able to receive ANY UDP packet after a timepoint. Additionally when the server decides a connection as unstable it won't switch back again. This is based on real-world tests.

Here is an config example:

{
    "server_id": 1,
    "welcome_text": "",
    "host": "0.0.0.0",
    "port": 64738,
    "accept_proxy_protocol": false,
    "bandwidth": 48000,
    "users": 5000,
    "debug": false,
    "max_channel_users": 0,
    "allow_udp": true,
    "allow_udp_voice": true,
    "allow_ping": true,
    "max_text_message_length": 5000,
    "max_image_message_length": 131072,
    "allow_html": true,
    "publish": true,
    "ssl_cert": "cert.pem",
    "ssl_key": "key.pem",
    "cert_required": true,
    "send_version": true,
    "timeout": 60,
    "required_group": [],
    "direct_voice_behavior": "vanilla",
    "min_client_version": 66048,
    "require_client_platform_info": false,
    "send_build_info": true,
    "api_url": "https://example.com/api",
    "api_key": "xxx",
    "api_insecure": true,
    "register_name": "",
    "register_password": "",
    "register_url": "",
    "register_hostname": "",
    "register_location": "",
    "trusted_proxies": ["127.0.0.0/24"],
    "max_multiple_login_count": 3,
    "default_channel": 1,
    "opus_threshold": 0,
    "suggest_version": 66304,
    "suggest_positional": false,
    "suggest_ptt": true,
    "check_last_channel_permission": true,
    "hide_user_cert_hashes": true,
    "udp_buffer_size": 65536,
    "allow_guest": true,
    "udp_mark_unstable_rate": 0.05,
    "send_permission_info": true,
    "acl_cache_size": 65536
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants