Commit Graph

154 Commits

Author SHA1 Message Date
Ben Wallis
73b5c03510 Changed veloren-server-cli to run in interactive basic mode as default. Removed -b and added -t which enables the tui. 2021-07-14 20:03:16 +01:00
Marcel Märtens
9b3b21f368 fix clippy warnings 2021-07-12 12:09:09 +02:00
Marcel Märtens
a65ef892ca use split_inclusive instead 2021-05-12 18:40:12 +02:00
Marcel Märtens
863e11d5e3 enable TUI to actually handle newline character.
but we are not sure if NEWLINEs are wanted in logs as it could cause problems with automated parsing.
2021-05-12 18:40:08 +02:00
Joshua Yanovski
33494c0e29 More fixes to stdin input.
Adding tty makes sure docker attach won't be accidentally detached
by ctrl-C (there are better ways of doing this but this one works
for now)

shell-words more closely emulates Bash's tokenizer rules (but without
doing things like environment variable expansion) which allows us to use
multiline strings as reasons, etc.  Unfortunately entering newlines
still won't work the way we've written things since shell-words does not
right now give enough information to incrementally build up a valid
string, just says there was a tokenizing error; but maybe in the future
we can fix that.
2021-05-11 04:15:59 -07:00
Joshua Yanovski
e7587c4d9d Added non-admin moderators and timed bans.
The security model has been updated to reflect this change (for example,
moderators cannot revert a ban by an administrator).  Ban history is
also now recorded in the ban file, and much more information about the
ban is stored (whitelists and administrators also have extra
information).

To support the new information without losing important information,
this commit also introduces a new migration path for editable settings
(both from legacy to the new format, and between versions).  Examples
of how to do this correctly, and migrate to new versions of a settings
file, are in the settings/ subdirectory.

As part of this effort, editable settings have been revamped to
guarantee atomic saves (due to the increased amount of information in
each file), some latent bugs in networking were fixed, and server-cli
has been updated to go through StructOpt for both calls through TUI
and argv, greatly simplifying parsing logic.
2021-05-09 21:19:16 -07:00
Marcel Märtens
4cfdbdd069 use a constant for recommended_threads 2021-05-05 14:35:06 +02:00
Marcel Märtens
0142cf37f0 limit tokio threads to 1/4 of num_cpus
make sure that rayon has at least 2 threads even on 1cpu systems to increase stability
2021-05-04 21:06:11 +02:00
Ben Wallis
95d7a3d761 Fixed cargo test-server. Removed -Z package-features from .cargo/config as it is no longer required 2021-04-15 19:07:46 +01:00
Ben Wallis
1de94a9979 * Replaced diesel with rusqlite and refinery
* Added "migration of migrations" to transfer the data from the __diesel_schema_migrations table to the refinery_schema_history table
* Removed all down migrations as refinery does not support down migrations
* Changed all diesel up migrations to refinery naming format
* Added --sql-log-mode parameter to veloren-server-cli to allow SQL tracing and profiling
* Added /disconnect_all_players admin command
* Added disconnectall CLI command
* Fixes for several potential persistence-related race conditions
2021-04-13 22:05:47 +00:00
Marcel Märtens
ccb78eeb5c move tracing code to own crate 2021-03-30 16:35:36 +02:00
Marcel Märtens
edebe06a10 make interactive OPT-OUT isntead so that it's not forgotten when its important. and its more userfriendly for the average user. scripts prob just add a -n or -b 2021-03-26 00:22:46 +01:00
Marcel Märtens
fdc40f52d9 give more threads a fixed name 2021-03-22 12:37:03 +01:00
Marcel Märtens
96049904a6 add keepalive in server-cli so we know it still ticks, ~ all 30s 2021-03-21 19:15:40 +01:00
Marcel Märtens
a286eb084a create a wrapper around rayon, slowjobpool, that spawns on rayon but drop feed it 2021-03-16 13:31:04 +01:00
Imbris
8d0b776f18 Move server-cli commands to separate file, tracy profiling par_join improvements, misc improvements
- remove overwritten logging setting in server-cli
- add server-cli command to load a random area for testing without a client
- make admin add/remove commands modify ingame players instead of needing to reconnect
- add spans to par_join jobs
- added test command that loads up an area of the world
- add tracy-world-server alias
- set debug directives to info for logging
2021-03-13 02:28:59 -05:00
Marcel Märtens
381bb5eef0 fix tracy 2021-03-11 17:05:17 +01:00
Marcel Märtens
a98e72c391 Auth requests are now done async, the register system is fetching it, via a PendingLogin component
The auth server no longer allows the protocol to be specified. we enforce `https` for the auth server, so DO NOT provide a auth url with `https://` but without.
correct is now `auth.veloren.net`
incorrect is: `https://auth.veloren.net`
2021-03-11 17:05:02 +01:00
Marcel Märtens
d7df741671 update dependencies, including removal of some tracy deps as they are get through common/tracy 2021-03-09 20:17:29 +01:00
Marcel Märtens
4ebfbdde0f Move Specs code to own common_ecs create, put tracy and macros into common_base 2021-03-09 00:54:01 +01:00
Marcel Märtens
514d5db038 Update Network Protocol
- now last digit version is compatible 0.6.0 will connect to 0.6.1
 - the TCP DATA Frames no longer contain START field, as it's not needed
 - the TCP OPENSTREAM Frames will now contain the BANDWIDTH field
 - MID is not Protocol internal

Update network
 - update API with Bandwidth

Update veloren
 - introduce better runtime and `async` things that are IO bound.
 - Remove `uvth` and instead use `tokio::runtime::Runtime::spawn_blocking`
 - remove futures_execute from client and server use tokio::runtime::Runtime instead
 - give threads a Name
2021-02-22 17:34:55 +01:00
Marcel Märtens
03af9937cf Stabelize Network again:
- completly switch to Bytes, even in api. speed up TCP by fak 2
 - improve benchmarks
 - speed up mpsc metrics
 - gracefully handle shutdown by interpreting Ok(0) as tokio::tcpstream closed now.
 - fix hotloop in participants by adding `Some(n)` to fix endless handing.
 - fix closing bug by closing streams after `recv_mgr` is shutdown even if now shutdown is triggered locally.
 - fix prometheus
 - no longer throw when a `Stream` is dropped while participant still receives a msg for it.
 - fix the bandwith handling, TCP network send speed is up to 1.5GiB/s while recv is 150MiB/s
 - add documentation
 - tmp require rt-multi-threaded in client for tokio, to not fail cargo check

this is prob stable, i tested over 1 hour.
after that some optimisations in priomgr.
and impl. propper bandwith.
Speed is up to 2GB/s write and 150MB/s recv on a single core

sync add documentation
2021-02-17 19:37:48 +01:00
Marcel Märtens
ea8ab1ce7a Great improvements to the codebase:
- better logging in network
 - we now notify the send of what happened in recv in participant.
 - works with veloren master servers
 - works in singleplayer, using a actual mid.
 - add `mpsc` in whole stack incl tests
 - speed up internal read/write with `Bytes` crate
 - use `prometheus-hyper` for metrics
 - use a metrics cache
2021-02-17 16:15:00 +01:00
Marcel Märtens
5aa1940ef8 get rid of async_std::channel
switch to `tokio` and `async_channel` crate.
I wanted to do tokio first, but it doesnt feature Sender::close(), thus i included async_channel
Got rid of `futures` and only need `futures_core` and `futures_util`.

Tokio does not support `Stream` and `StreamExt` so for now i need to use `tokio-stream`, i think this will go in `std` in the future

Created `b2b_close_stream_opened_sender_r` as the shutdown procedure does not need a copy of a Sender, it just need to stop it.

Various adjustments, e.g. for `select!` which now requieres a `&mut` for oneshots.

Future things to do:
 - Use some better signalling than oneshot<()> in some cases.
 - Use a Watch for the Prio propergation (impl. it ofc)
 - Use Bounded Channels in order to improve performance
 - adjust tests coding

bring tests to work
2021-02-17 12:38:53 +01:00
Marcel Märtens
1b77b6dc41 Initial switch to tokio for network, minimum working example. 2021-02-17 12:37:59 +01:00
Ben Wallis
c785e75e60 Follow-up fixes from review of inventory MR 2021-01-10 11:27:09 +00:00
Ben Wallis
aef2637288 Refactored loadout to have public functions for each slot instead of requiring callers to use the _INDEX consts 2021-01-08 19:12:09 +00:00
Joshua Barretto
f8c8e342e6 Moved common networking code to common/net, clippy fixes 2020-12-13 17:23:45 +00:00
Marcel Märtens
ccb01e1898 adjust fmt and clippy after toolchain upgrade 2020-12-10 14:53:01 +01:00
Ben Wallis
81a8ee0c19 Changed logging to use termcolor crate to fix ansi control codes showing when run under Windows Command Prompt 2020-12-06 14:49:13 +00:00
Imbris
1355c1e8f5 Move tracy frame markers to proper locations, add a few spans 2020-11-22 14:22:39 -05:00
Imbris
a97b188bea Make fps display and specification more precise 2020-11-11 21:47:22 -05:00
Marcel Märtens
e4e5c6e55b massivly switch clock algorithm.
- before we had a Clock that tried to average multiple ticks and predict the next sleep.
   This system is massivly bugged.
   a) We know exactly how long the busy time took, so we dont need to predict anything in the first place
   b) Preduction was totally unrealistic after a single lag spike
   c) When a very slow tick happens, we dont benefit from 10 fast ticks.
 - Instead we just try to keep the tick time exact what we expect.
   If we can't manage a constant tick time because we are to slow, the systems have to "catch" this via the `dt` anyway.
2020-11-10 18:31:42 +01:00
Marcel Märtens
00456c8373 extract a Presence Component, which is server only and has state of Player and Client. Presence is only valid for Clients that are in game 2020-11-03 08:56:02 +01:00
Imbris
47b06658b0 Log where the userdata folder is in binary crates, fix bug where the old
path was logged instead of the new path when renaming invalid settings
2020-10-29 18:30:49 -04:00
Capucho
e77cc3eae2 Fixed the server cli dropping new lines 2020-10-23 20:30:33 +01:00
Marcel Märtens
f1c9b959f4 rename a file, fix error msg, dont spam persistence by default 2020-10-13 00:06:24 +02:00
Imbris
fa45edb541 Fix clippy, minor fmt, add TODO comments 2020-10-10 03:01:30 -04:00
Imbris
71251ca6a6 Change admins from Vec<String> into Hashset<Uuid>, add commands to server-cli-bin for adding and removing admins 2020-10-10 02:10:32 -04:00
Imbris
83fb26c4f9 Group editable server settings into one struct that is stored in the ecs, don't expose DataDir, use Uuid in the whitelist instead of usernames, replace Banlist record tuple with new type with named fields, remove commented code 2020-10-10 02:10:32 -04:00
Imbris
fb2cf1a292 Fix clippy warnings 2020-10-10 02:10:32 -04:00
Imbris
308cca0dc9 Put server-cli specific settings in their own structure, serde_derive -> serde 2020-10-10 02:10:32 -04:00
Imbris
7c14a3f4a4 New userdata folder that holds voxygen settings and logs and server saves and settings, split up server settings file into parts that are persisted back to their files and parts that are read-only, misc fixes 2020-10-10 02:10:32 -04:00
Imbris
66d2d636ee Add server-cli option to disable auth 2020-10-10 02:10:32 -04:00
Imbris
873ea1ec46 Make basic server-cli mode default to not reading input and add interactive option 2020-10-10 02:10:31 -04:00
Ben Wallis
51459c0733 Implemented graceful shutdown on SIGUSR1 signal. Added shutdown <seconds> TUI command. Added abortshutdown TUI command. Fixed a bug in TUI that caused a panic on quit in basic mode on windows. 2020-10-04 21:24:45 +01:00
Ben Wallis
b3dd8e8a02 Added #![deny(clippy::clone_on_ref_ptr)] to all crates and fixed resulting lint errors 2020-09-27 17:25:33 +01:00
Marcel Märtens
8eec46424f switching veloren naming scheme, to either one of the following:
`stable-0.7.0 (<hash>-<datetime>)` for release versions.
And
`nightly-<date> (<hash>)` for nightly and master versions

Reason is, many players only give information that they are running `0.x.0` but are not giving us the information which day, or commit they are running. So we should make master builds less confusing.
2020-09-22 11:47:18 +02:00
Marcel Märtens
9833ec91ea fix spam due to mio tracing 2020-09-16 10:13:37 +02:00
Imbris
c3ae641fbb Merge branch 'imbris/tracy' into 'master'
Add more tracing instrumentation and tracy support

See merge request veloren/veloren!1359
2020-09-10 05:07:51 +00:00
Marcel Märtens
a50757b88b fix comment 2020-09-07 17:45:00 +02:00
Marcel Märtens
a0eebf15d0 fixed #757 2020-09-07 17:20:52 +02:00
Marcel Märtens
4cf86c725e detect EOL on stdin and no longer try to read commands.
This can be locally tested with CTRL+D on basic mode.
RUST_LOG=trace might help
2020-09-07 16:28:13 +02:00
Marcel Märtens
5f15555fc5 decrease TUI to only draw 10 frames on idle.
add tracing when a cmd is entered
2020-09-07 14:32:46 +02:00
Imbris
0683a40741 Use finish_continuous_frame directly 2020-09-06 22:28:14 -04:00
Imbris
4f68a6df27 Update tracy crates, reduce overhead of timing, add more misc instrumentation 2020-09-06 22:28:14 -04:00
Capucho
5fd0e0a5b7 Added commands to basic mode 2020-09-03 09:05:15 +02:00
Capucho
6e24ff31ee Fix all the problems with the tui 2020-09-03 09:04:42 +02:00
Marcel Märtens
36350a08b1 clean shutdown and do a full frame all 10 ticks. also increase polling time to 100ms and dont poll while drawing but afterwards 2020-09-01 23:03:50 +02:00
Marcel Märtens
f5c8f3fcf8 move tui in multiple files 2020-09-01 23:03:48 +02:00
Capucho
337860de93 Fix lack of scrolling 2020-09-01 23:03:47 +02:00
Capucho
8b1ba19b4f Fix panic when window is too small 2020-09-01 23:03:45 +02:00
Capucho
752b2510ee Fix resize issue 2020-09-01 23:03:43 +02:00
Capucho
8fd052768e Fix typo and clippy warnings 2020-09-01 23:03:40 +02:00
Capucho
332cb20df1 Added flags to toggle the tui 2020-09-01 23:03:38 +02:00
Capucho
bf8e455839 Make it easier to add commands and added the help command 2020-09-01 23:03:36 +02:00
Capucho
a893ccc228 Fix the offsetting problem after using the cli 2020-09-01 23:03:35 +02:00
Capucho
83ff13a035 Coloring done very badly 2020-09-01 23:03:32 +02:00
Capucho
a2d70e6ff6 Escape ansi sequences 2020-09-01 23:03:31 +02:00
Capucho
c399afa7c5 Made the server cli great 2020-09-01 23:03:29 +02:00
Marcel Märtens
6535fa5744 fix various clippy issues 2020-07-01 00:37:06 +02:00
Marcel Märtens
c558c9de7c fix server-cli tracing accepting RUST_LOG env var and pass RUST_LOG via docker-compose rather than hardcoding it
- however RUST_BACKTRACE=1 is still hardcoded as its probably useful
- dont spam the server-cli with debug
2020-06-29 11:05:55 +02:00
CapsizeGlimmer
aabf9d7b21 fix chat-cli name formatting. 2020-06-27 17:20:26 -04:00
Marcel Märtens
9485b45e70 switch to tracing stlye and enhance logs with usefull information
- Updated CHANGELOG
- reduce dependencies
- found out that we have alot of duplicate coding... alot...
2020-06-22 09:53:15 +02:00
Kevin Glasson
589254e4ab Convert all other veloren crates to use tracing
- Completely removed both `log` and `pretty_env_logger` and replaced
with `tracing` and `tracing_subscriber` where necessary.

- Converted all `log::info!(...)` et al. statements to just use the
shorthand macro i.e. `info!`. This was mostly to make renaming easier.
2020-06-21 23:19:41 +08:00
Ben Wallis
c1c968f479 Globally suppressed clippy lint option_map_unit_fn for #587 2020-06-14 16:48:07 +00:00
Ben Wallis
950c62efc6 Suppressed all existing clippy warnings in preparation for fixes as part of #587 2020-06-10 22:01:42 +01:00
Songtronix
604a6cf169 feat: log server version 2020-03-26 12:41:30 +01:00
Shane Handley
f7cfcc5394
Re-add the metrics port logging which was lost in the merge. 2019-11-06 21:34:19 +01:00
Shane Handley
15c725bfde
Address code review points:
- Clarify caffeine fueled comment
- Be better at comparing Instant's, and catch the 0 seconds case to say
Goodbye to the user
- Switch println for 'info!'
2019-11-06 21:34:18 +01:00
timokoesters
c733c95718
improvement: UI for connecting to singleplayer servers + threading fixes 2019-11-06 21:34:15 +01:00
Acrimon
5beea76624 Remove heaptrack as it is now deprecated. 2019-10-29 06:55:45 +00:00
Forest Anderson
b13f9f37f7 Revert "Merge branch 'angelonfira/change-memory-allocator-to-jemalloc' into 'master'"
This reverts merge request !547
2019-10-06 01:31:47 +00:00
Forest Anderson
0304b51159 Chanced to ignore msvc instead of windows
Change server to ignore msvc
2019-10-05 17:57:29 -04:00
Forest Anderson
e1bab6afe0 Added jemalloc for Linux systems 2019-10-05 17:57:29 -04:00
Forest Anderson
9ef98ce1a5 Remove heaptrack 2019-10-05 17:57:29 -04:00
Acrimon
a41cf1a83d Disabled unsafe using lint level. 2019-08-19 14:39:23 +02:00
Acrimon
deb6c6adef Some other stuff I missed to commit. (Hooked into server-cli) 2019-07-24 02:20:35 +02:00
Songtronix
5b31c7c1f9 little cleanup 2019-07-17 19:03:37 +02:00
Songtronix
e2b83883f3 fmt 2019-07-17 18:32:01 +02:00
Songtronix
bbb024224d add configureable server info 2019-07-17 18:32:01 +02:00
Songtronix
1213d9844b add customizable port and worldseed 2019-07-17 18:32:00 +02:00
timokoesters
f5da167ce5
Fix warnings and clippy recommendations in common 2019-07-02 15:48:25 +02:00
Cody
14ac5babd4 Removes most unused imports; changes some unused variables to underscores or provides a leading underscore; removes some unnecessary variables and mutable declarations; and performs other miscellaneous warning fixes. 2019-06-06 14:48:41 +00:00
Cody
6b09fd7c53 Pedantic comment and language fixes.
Former-commit-id: eb49765c911aaa97a9c8ed351216a7a6f8411213
2019-05-17 18:32:07 -04:00
Forest Anderson
993388e56a Ran fmt on codebase
Former-commit-id: 7fecffa1dc66fffba4f07d45fb80960dc5178f4f
2019-04-29 20:37:19 +00:00
Joshua Barretto
62b91eb01b Integrated Sphynx
Former-commit-id: 5d96983a385bb77a2876aa7439158252b7e2f0fc
2019-04-14 14:23:43 +01:00
Joshua Barretto
26906d8674 Minor changes
Former-commit-id: 39beb7858926cb62a1f2d0db5c74e71c804c5962
2019-03-19 19:53:35 +00:00
Joshua Barretto
99bd0630b7 Added post refactor unit tests
Former-commit-id: 66ea368de32dc6dfe22fc752476b71856e0588a0
2019-03-19 11:35:38 +00:00
Joshua Barretto
664f28a972 Patched in netcode refactor
Former-commit-id: 34a3b9a95129edad6dc8280d9a3cb41581d4d386
2019-03-19 11:35:38 +00:00