1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-04-22 20:00:29 +03:00

2456 Commits

Author SHA1 Message Date
Athanasius
c0e7be98f8 Move journal locking code into new monitor.JournalLock class 2021-03-05 12:03:54 +00:00
Athanasius
872f380831 PLUGINS.md: Correct and expand on monitor.game_running() documentation 2021-02-18 09:29:52 +00:00
Athanasius
9b1b34f273
Merge pull request #857 from EDCD/enhancement/856-CL-arg-force-local-webserver
Add `--force-localserver-for-auth` CL arg to EDMarketConnector
2021-01-23 09:05:36 +00:00
Athanasius
b0f52b3d55 'import fcntl' failing means we need to lie about no other instances. 2021-01-22 14:15:32 +00:00
Athanasius
e1757a3a99 protocol: Don't use win32-specific edmc://auth if --force-localserver-for-auth
Tested with a build/install and run with:

	"c:\Program Files (x86)\EDMarketConnector\EDMarketConnector.exe" --force-localserver-for-auth --trace

2021-01-22 12:57:11.020 - TRACE - protocol.ProtocolHandler.__init__:222: Web ser
ver listening on http://localhost:53657/auth
2021-01-22 13:11:42 +00:00
Athanasius
3b2b658881 Add --force-localserver-for-auth CL arg to EDMarketConnector 2021-01-22 13:11:42 +00:00
Athanasius
11b1c436a7 seek(0) before sys.stdout.truncate()
Without this we only truncate to where the file was when we did the
stdout/err redirect.

What I observed was it truncated out the "journal locking" output, but
not anything from a prior run of the program.
2021-01-22 13:10:03 +00:00
Athanasius
831367c30b Need to flush the journal dir lock file contents after write. 2021-01-20 14:45:09 +00:00
Athanasius
8f94a259be
Merge pull request #852 from EDCD/enhancement/process-dupe-check-using-folder-lock
Switch to using a journals folder lockfile to enforce single process
2021-01-19 20:44:37 +00:00
Athanasius
b3e4eafb14 Properly document the l_param passed to enumwindowsproc() 2021-01-19 20:40:56 +00:00
Athanasius
479bfe58eb Log truncate outside the 'else' & misc logging cleanups and comments
* The "truncate the stdout redirect" code was erroneously inside the
  else of a try.
* Added some comments about exceptions found on Linux when unable to
  open the journals_dir lock file
* Changed 'assuming another process running' logging to not split lines.
* "Couldn't open <journal lock file>" isn't inside no_other_instances()
  so made the message more obvious.
2021-01-19 12:39:32 +00:00
Athanasius
45619622af Catch when we can't open the journal_dir lockfile 2021-01-19 12:27:55 +00:00
Athanasius
0530eecc52 Fully set up logging early, and use it in no_other_instance() checks 2021-01-19 12:21:07 +00:00
Athanasius
7ed90aee83 Comment EnumWindows()/enumwindowsproc() to document function. 2021-01-19 11:54:17 +00:00
Athanasius
f86f1ac188 imports tweaks to pass isort 2021-01-18 22:27:53 +00:00
Athanasius
d2490673f4 Add some noqa: C901 & remove old SIGTERM -> stack trace
* We're not going to refactor those 'complex' sections any time soon, so
  clean up flake8 output for now.
* No-one still uses "send SIGTERM to see a stack trace".
2021-01-18 22:25:11 +00:00
Athanasius
2be09a5db1 Add back the "restore/foreground the existing window" code 2021-01-18 22:20:01 +00:00
Athanasius
35a476f209 Comments added, some noqa and split a line 2021-01-18 22:18:54 +00:00
Athanasius
1714219c17 Split enumwindowsproc() conditional into multiple lines 2021-01-18 21:54:45 +00:00
Athanasius
bf7e21a94f protocol.py: Reinstate 'from config import appname' 2021-01-18 21:42:04 +00:00
Athanasius
a75f5b9130 Move sys.stdout redirect to top.
* In `develop` config import will set up logging, so let's head that off
  at the pass and put the redirect right at the top.
* Also moved the EDMCLogging import to right after the config import's
  new position, to emulate `develop` behaviour.
* We *append* on the initial open of the redirect log file.  Then once
  we're sure we're the only process we truncate this.
2021-01-18 21:40:18 +00:00
Athanasius
820d481ca9 Restore old "another window with this handle?" code for edmc://auth
The edmc://auth catch/forward code relies on the old "is there another
window with this handle already?" check, so need to reinstate that code
*after* the lock check in order to forward the message.
2021-01-18 21:28:07 +00:00
Athanasius
377eef9c2b config import needs to be up top for now & misc
* The end of the win32/else conditional was identical, so only do that
  write to the successfully locked file in one place.

* No need to go out of `__main__` only to go straight back in.
2021-01-18 21:15:52 +00:00
Athanasius
397eda8d3e Catch only 'ImportError' for fcntl & 'Exception' for fcntl.flock() 2021-01-18 21:09:12 +00:00
Athanasius
bf2a10f88b Catch only 'Exception' off mvscrt.locking()
* It *should* only be a PermissionError, although the docs actually say
  the 'higher' OSError.  This way we will always catch whatever it is.
* The print uses {e!r} so as to make it explicit what the type of the
  exception is.
2021-01-18 21:09:12 +00:00
Athanasius
dbba1d24c7 Minor cleanups: Correct filename for lockfile, ...
* The variable is journal_dir_lockfile not lockfile.
* Typehint on journal_dir (likely not needed in `develop` as config.py
  is cleaned up there).
* Tweak the per-platform prints
2021-01-18 21:09:11 +00:00
Athanasius
0263dc628b Added some fcntl-based locking code for !win32
* If fcntl can't be imported it will just let things slide.
2021-01-18 21:09:11 +00:00
Athanasius
5c09ef78f8 Add comment as to why the file open is done at top level 2021-01-18 21:09:11 +00:00
Athanasius
ab281bca5a Implement msvcrt.locking() under win32
NB: The locked file *must* be opened at top level in order for the file
handle to not get cleaned up, which also removes the locks.
2021-01-18 21:09:11 +00:00
Athanasius
937a38f0b5 Remove extraneous enforce_single_instance() code & add opening of journal lock file 2021-01-18 21:09:10 +00:00
Athanasius
4689666b13 Strip out old win32 only window handle checking code. 2021-01-18 21:08:15 +00:00
Athanasius
61275b73a1
Merge pull request #851 from EDCD/enhancement/848-suppress-dupe-process-popup
Add --suppress-dupe-process-popup and move enforce_single_instance() call after
2021-01-18 21:05:34 +00:00
Athanasius
7e0c141547 This version of protocol.py doesn't yet need EDMCLogging 2021-01-18 14:53:44 +00:00
Athanasius
c67b1b76f7 Move argsparse code to top & do rename enforce_single_instance() -> no_other_instance_running()
1. We need the args available at the top.
2. In `develop` we'd renamed `enforce_single_instance()` to
   `no_other_instance_running()` so that it's obvious it's a function
   returning a boolean, rather than the function that does the
   enforcement.
2021-01-18 14:48:17 +00:00
Athanasius
c3663d8be8 Move the 'duplicate' constants into a new constants.py
1. So now they're only defined in one place.
2. config.py does an import of them, and `from config import ...` then
   chains through, so no need to update other users.
3. No need to ' # noqa E402' the killswitch/config imports now.
2021-01-18 14:43:45 +00:00
Athanasius
778668f680 Add --suppress-dupe-process-popup and move enforce_single_instance() call after 2021-01-18 14:35:46 +00:00
Athanasius
966599d82c
Merge pull request #844 from alterNERDtive/alterNERDtive-patch-1
PLUGINS.md: fix typo & example for `journal_entry`
2021-01-13 13:14:34 +00:00
alterNERDtive
589f0cf454
PLUGINS.md: fix typo & example for journal_entry 2021-01-13 14:06:27 +01:00
Athanasius
52193a9f07 Release 4.1.6: config version and changelog Release/4.1.6 2021-01-12 16:24:10 +00:00
Athanasius
6a8d950b87 Change all requirements to latest tested and use '==' on all.
Although the issue we've identified with GitHub builds isn't to do with
a python module version it's best to nail precise versions so we can be
sure it will build with the same as we've tested locally.
2021-01-11 19:28:56 +00:00
Athanasius
3d515ba919 protocol.py: Need from config import config Release/4.1.6-rc3 2021-01-11 18:20:58 +00:00
Athanasius
501f34836a update.py: Need to from config import config to access shutting_down 2021-01-11 17:48:47 +00:00
Athanasius
67e72f7477 Pre-Release 4.1.6-rc3: config version and changelog 2021-01-11 17:35:54 +00:00
Athanasius
c90392ab89 Merge branch 'release-4.1.6-rc2' into release-4.1.6-rc3 2021-01-11 17:24:42 +00:00
Athanasius
6831c45c59
Merge pull request #840 from EDCD/fix/678-check-for-shutdown-when-tk-event-generate
Avoid Tk event_generate() calls during shutdown.
2021-01-11 17:23:15 +00:00
Athanasius
247577c5f4 config: Also set Config.shutting_down to be @propety on win32 and linux 2021-01-11 17:13:31 +00:00
Athanasius
462cd25312 config: Make config.shutting_down() a property, and change 'callers' 2021-01-11 16:54:09 +00:00
Athanasius
111f445cac plugins/inara: Avoid Tk event_generate() calls during shutdown 2021-01-11 16:45:45 +00:00
Athanasius
bca0231dfc plugins/edsm: Avoid Tk event_generate() calls during shutdown 2021-01-11 16:45:26 +00:00
Athanasius
fb1c9fc034 update: Avoid Tk event_generate() calls during shutdown. 2021-01-11 16:44:11 +00:00