Commit Graph

152 Commits

Author SHA1 Message Date
CaitSith2
66894dbd86 Add further safeties to sending of location checks.
This safety is able to be turned off, but has to be done so on EVERY connection explicitly.
2020-10-27 16:24:21 -07:00
CaitSith2
6ff4b20d81 Only save reported locations that actually exist in the multidata. 2020-10-27 02:20:56 -07:00
CaitSith2
83db79815a Make multiclient/multiserver/tracker keydropshuffle aware 2020-10-27 00:53:32 -07:00
CaitSith2
119a5a2b66 Allow client side login and remote issuing of server side commands.
Disabled by default. Requires a password to be set for it to be enabled.
2020-09-21 22:11:43 -07:00
CaitSith2
e77cd7c38a Add command to allow or forbid a specific player from using the !forfeit command despite server restrictions on the command.
Allows for allowing a player to forfeit if they are under a time restriction where they have to leave the game, without allowing the command globally.
2020-09-02 02:23:31 -07:00
Fabian Dill
bca1a2d9e0 WebHost: Automatic !hint tracking 2020-07-27 19:30:31 +02:00
Fabian Dill
789d0245cc MultiServer: supposed to restart savefile on older formats too 2020-07-24 14:14:45 +02:00
Fabian Dill
88ba7b55d2 Multiserver: [0,1] == (0,1) -> False, turns out. 2020-07-24 14:00:59 +02:00
Berserker66
35e2b2d20d set_save adjustments for older DB savegames 2020-07-22 12:02:09 +02:00
Fabian Dill
78c85cce14 WebHost: List Rooms in a sortable table 2020-07-21 23:15:19 +02:00
Fabian Dill
ac238d9b14 WebHost: Don't count exit saving as activity, thereby creating a hosting loop 2020-07-20 14:17:05 +02:00
Fabian Dill
1d036c0d3c add compatibility server setting 2020-07-16 16:57:38 +02:00
Fabian Dill
626b6b0521 fix loading old savegames from ponyorm DB 2020-07-16 02:29:36 +02:00
Fabian Dill
93ecf5988b implement secrets.SystemRandom() for --race 2020-07-14 07:01:51 +02:00
Fabian Dill
59a71dbb05 restore multidata backwards compatibility 2020-07-14 05:06:25 +02:00
Fabian Dill
ea9e103cb0 update rom name handling 2020-07-14 04:48:56 +02:00
Fabian Dill
ead9a0ef15 use modern formatting for joined message 2020-07-13 03:38:19 +02:00
Fabian Dill
baba4b7c02 !hint now properly gives you prior collection info without needing enough to pay for another hint 2020-07-13 03:21:28 +02:00
caitsith2
319a315ec5 Fix !countdown and actually make !options work 2020-07-11 13:20:16 -07:00
Fabian Dill
d190fe65c6 webhost update 2020-07-10 17:42:22 +02:00
Fabian Dill
f998ae1a09 fix that countdown can get stuck 2020-07-05 21:46:44 +02:00
Fabian Dill
12273c396b add /countdown and !options 2020-07-05 21:45:52 +02:00
Fabian Dill
68e92ae5b4 assign option to correct instance 2020-06-27 16:54:07 +02:00
Fabian Dill
de2cb1692e refine option changing 2020-06-27 14:25:46 +02:00
Fabian Dill
12120ac995 implement option changing 2020-06-27 14:16:51 +02:00
Fabian Dill
6f9f5cbe14 Add twitch hyperlinking to webhost 2020-06-27 13:52:03 +02:00
Fabian Dill
46038830c3 fix trailing could not pay notification if there was nothing left to pay for 2020-06-26 07:30:26 +02:00
Fabian Dill
45a24fab27 save client activity data to multisave 2020-06-23 14:12:27 +02:00
Fabian Dill
26eb44ef15 revenge of the player number offset 2020-06-21 17:04:25 +02:00
Fabian Dill
6421a373e1 Webhost Update
introduce a very WIP tracker
Server will try to reuse port and also try to only use one port
2020-06-21 15:32:31 +02:00
Fabian Dill
9e18c6f1cd Database-backed Webhosting 2020-06-20 20:03:06 +02:00
Fabian Dill
7e3ee8101f implement lazy multisave saving using a daemon thread 2020-06-20 15:46:33 +02:00
Fabian Dill
facecdf487 implement --auto_shutdown <minutes>, shutting down a multiserver after that many minutes of inactivity
and set WebHost to a default of 6 hours
2020-06-16 11:26:54 +02:00
Fabian Dill
bd1c9f896b allow ghosted slots with same ID to be replaced 2020-06-16 01:05:32 +02:00
Fabian Dill
3fbb959622 fix !missing for older clients 2020-06-15 22:15:04 +02:00
Fabian Dill
7353b489ce add available hint points to UI 2020-06-15 06:30:51 +02:00
Fabian Dill
c486cd77bb fix missed rename 2020-06-14 04:12:38 +02:00
Fabian Dill
ddc7be0794 update webhost 2020-06-13 22:49:57 +02:00
Fabian Dill
5da5847805 allow multiserver to defer to embedded options 2020-06-13 08:37:05 +02:00
Fabian Dill
4125995bdd Adjust output to "BM" (Berserker's Multiworld) to differentiate spoiler logs, roms and server data at a glance
Rename _multidata to .multidata and embed .multidata as MultiServer-openable file into windows registry
2020-06-10 21:25:14 +02:00
Fabian Dill
90b24e3d59 alias now goes to 16, same as rom-name. Also improve some docstrings 2020-06-10 06:13:14 +02:00
Fabian Dill
27901008bc fix that hints print already collected items again 2020-06-09 05:22:48 +02:00
Fabian Dill
68f453f802 remove duplicate old hints 2020-06-07 03:50:28 +02:00
Fabian Dill
55b37a998d hotfix hint cost problem 2020-06-07 03:08:53 +02:00
Fabian Dill
2302150521 adjust hint payment rejected text 2020-06-07 02:38:03 +02:00
Fabian Dill
2e21e41c16 Allow partial hints 2020-06-07 02:13:41 +02:00
Fabian Dill
b36738f3f4 reraise the crash 2020-06-07 00:50:39 +02:00
Fabian Dill
55152515f6 move stuff out of main(), for alternative server implementations 2020-06-07 00:49:10 +02:00
Fabian Dill
00d7667771 extend hint system with group names 2020-06-07 00:19:19 +02:00
Fabian Dill
38cbcc662f WebUI (#100)
* Object-Oriented base changes for web-ui prep

* remove debug raise

* optimize broadcast to serialize once

* Implement WebUI socket, static assets, and classes

- Still need to wrap logging functions and send output to UI
- UI commands are successfully being sent to the server

* GUI operational. Wrap logging functions, implement server address selection on GUI, automatically launch web browser when client websocket is served

* Update MultiServer status when a user disconnects / reconnects

* Implement colored item and hint checks, improve GUI readability

* Fix improper formatting on received items

* Update SNES connection status on disconnect / reconnect. Implement itemFound, prevent accidentally printing JS objects

* Minor text change for itemFound

* Fixed a very wrong comment

* Fixed client commands not working, fixed un-helpful error messages appearing in GUI

* Fix a bug causing a failure to connect to a multiworld server if a previously existing cached address was present and the client was loaded without an address passed in

* Convert WebUI to React /w Redux. WebSocket communications not yet operational.

* WebUI fully converted to React / Redux.

- Websocket communication operational
- Added a button to connect to the multiserver which appears only when a SNES is connected and a server connection is not active

* Restore some features lost in WebUI

- Restore (found) notification on hints if the item has already been obtained
- Restore (x/y) indicator on received items, which indicates the number of items the client is waiting to receive from the client in a queue

* Fix a grammatical UI big causing player names to show only an apostrophe when possessive

* Add support for multiple SNES Devices, and switching between them

* freeze support for client

* make sure flask works when frozen

* UI Improvements

- Hint messages now actually show a found status via ✔ and  emoji
- Active player name is always a different color than other players (orange for now)
- Add a toggle to show only entries relevant to the active player
- Added a WidgetArea
- Added a notes widget

* Received items now marked as relevant

* Include production build for deployment

* Notes now survive a browser close. Minimum width applied to monitor to prevent CSS issues.

* include webUi folder in setup.py

* Bugfixes for Monitor

- Fix a bug causing the monitor window to grow beyond it's intended content limit
- Reduced monitor content limit to 200 items
- Ensured each monitor entry has a unique key

* Prevent eslint from yelling at me about stupid things

* Add button to collapse sidebar, press enter on empty server input to disconnect on purpose

* WebUI is now aware of client disconnect, message log limit increased to 350, fix !missing output

* Update WebUI to v2.2.1

- Added color to WebUI for entrance-span
- Make !missing show total count at bottom of list to match /missing behavior

* Fix a bug causing clients version <= 2.2.0 to crash when anyone asks for a hint

- Also fix a bug in the WebUI causing the entrance location to always show as "somewhere"

* Update WebUI color palette (this cost me $50)

* allow text console input alongside web-ui

* remove Flask
a bit overkill for what we're doing

* remove jinja2

* Update WebUI to work with new hosting mechanism

* with flask gone, we no longer need subprocess shenanigans

* If multiple web ui clients try to run, at least present a working console

* Update MultiClient and WebUI to handle multiple clients simultaneously.

- The port on which the websocket for the WebUI is hosted is not chosen randomly from 5000 - 5999. This port is passed to the browser so it knows which MultiClient to connect to

- Removed failure condition if a web server is already running, as there is no need to run more than one web server on a single system. If an exception is thrown while attempting to launch a web server, a check is made for the port being unavailable. If the port is unavailable, it probably means the user is launching a second MultiClient. A web browser is then opened with a connection to the correct webui_socket_port.

- Add a /web command to the MultiClient to repoen the appropriate browser window and get params in case a user accidentally closes the tab

* Use proper name for WebUI

* move webui into /data with other data files

* make web ui optional
This is mostly for laptop users wanting to preserve some battery, should not be needed outside of that.

* fix direct server start

* re-add connection timer

* fix indentation

Co-authored-by: Chris <chris@legendserver.info>
2020-06-03 21:29:43 +02:00