mirror of
https://github.com/aclist/dztui.git
synced 2026-08-31 12:16:55 +02:00
Compare commits
127 Commits
6aa1ec4201
...
5654b327d4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5654b327d4 | ||
|
|
0ad6366f0a | ||
|
|
a7c647aa6b | ||
|
|
3d32721683 | ||
|
|
881b0b3008 | ||
|
|
2a59441dbc | ||
|
|
acdb34d36a | ||
|
|
d6d0b241e0 | ||
|
|
2ba07bbba8 | ||
|
|
65eda05d9f | ||
|
|
f3b3f79bfb | ||
|
|
28c7d7f949 | ||
|
|
d072c8107e | ||
|
|
0629c8a6ba | ||
|
|
8aea4af687 | ||
|
|
0562d8230d | ||
|
|
759327e932 | ||
|
|
36753e02f1 | ||
|
|
2ab2e23736 | ||
|
|
34e7b2e480 | ||
|
|
540d0ad7e4 | ||
|
|
47bea45111 | ||
|
|
d03346b56a | ||
|
|
54e0762882 | ||
|
|
0834a86d33 | ||
|
|
c6a8841614 | ||
|
|
df92acb7dc | ||
|
|
a333571f94 | ||
|
|
05f88b6019 | ||
|
|
1f31c43fe4 | ||
|
|
0763416903 | ||
|
|
3b384c5a4d | ||
|
|
3ab666a807 | ||
|
|
c8f7a32284 | ||
|
|
a070e9fc65 | ||
|
|
5f55e3c664 | ||
|
|
07606d8852 | ||
|
|
afffc90abc | ||
|
|
70db7b45b3 | ||
|
|
aac8558079 | ||
|
|
ac8ff2febf | ||
|
|
6369d895fd | ||
|
|
7413f7c029 | ||
|
|
3f1d8cb24f | ||
|
|
4df12605fc | ||
|
|
2c5da88e06 | ||
|
|
3cb6175436 | ||
|
|
3739f19ab2 | ||
|
|
2da4d001d6 | ||
|
|
5d61a1f513 | ||
|
|
56c80d187b | ||
|
|
e08f66cdcb | ||
|
|
48fee301bb | ||
|
|
20511f5661 | ||
|
|
d2e8333ba9 | ||
|
|
5d37039064 | ||
|
|
ce44cdbc54 | ||
|
|
5b2738420e | ||
|
|
1e29288e2a | ||
|
|
745cc06091 | ||
|
|
0311cc8a95 | ||
|
|
7c3521cf97 | ||
|
|
bb0eefadd2 | ||
|
|
7eb5a4fac5 | ||
|
|
ebce329c3d | ||
|
|
23464d3b51 | ||
|
|
602a7b8edc | ||
|
|
59c58a1df5 | ||
|
|
830318d98e | ||
|
|
271c3e6197 | ||
|
|
1ab9634069 | ||
|
|
8666b0055a | ||
|
|
406554e011 | ||
|
|
5334d07f7f | ||
|
|
6cab96d1f8 | ||
|
|
bc94d989d4 | ||
|
|
e4fff5f242 | ||
|
|
53f2fe922a | ||
|
|
800f68a1b7 | ||
|
|
c6c377e8b9 | ||
|
|
7a68d7e097 | ||
|
|
f60a6edf2b | ||
|
|
8c33a1b371 | ||
|
|
e5f7391b89 | ||
|
|
a8f51280e8 | ||
|
|
c19346529b | ||
|
|
85451f765b | ||
|
|
5a144f7815 | ||
|
|
2370e81403 | ||
|
|
c11511abff | ||
|
|
bda7223ac8 | ||
|
|
6b48ee127d | ||
|
|
aa8a52bfc0 | ||
|
|
8ea62434ee | ||
|
|
baeaeb1b64 | ||
|
|
32b424da5c | ||
|
|
d71110d0a1 | ||
|
|
bc9178d2de | ||
|
|
1533febf9a | ||
|
|
c3c8872fad | ||
|
|
bae6a57e1e | ||
|
|
3bdc0057a2 | ||
|
|
5496f914f2 | ||
|
|
cb9db55bcb | ||
|
|
c0ab8111fd | ||
|
|
10c6a79b17 | ||
|
|
2b4b533a5b | ||
|
|
dcb8be9132 | ||
|
|
278aa8c28a | ||
|
|
32e5bafb33 | ||
|
|
59e19510e3 | ||
|
|
45ab112970 | ||
|
|
ed07fd0343 | ||
|
|
c2c7b37b90 | ||
|
|
23798c91d3 | ||
|
|
659cbb83a3 | ||
|
|
32c467fc6d | ||
|
|
d01add3573 | ||
|
|
0de89a3ef1 | ||
|
|
5686ea76c2 | ||
|
|
5fda598173 | ||
|
|
049fb47019 | ||
|
|
81f269b71b | ||
|
|
c97a7a260f | ||
|
|
b715eb5a3e | ||
|
|
8e6cf7e792 | ||
|
|
98868073a5 |
53
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
53
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
name: Bug report
|
||||
description: Submit bugs that affect functionality here
|
||||
title: "[BUG] Your title here"
|
||||
labels: ["bug"]
|
||||
assignees:
|
||||
- aclist
|
||||
body:
|
||||
- type: checkboxes
|
||||
id: kb
|
||||
attributes:
|
||||
label: Did you check if this issue already exists?
|
||||
options:
|
||||
- label: I have checked the [Knowledge Base](https://aclist.github.io/dzgui/kb.html) and searched through [past issues](https://github.com/aclist/dztui/issues?q=is%3Aissue+is%3Aclosed) and did not find my issue there.
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: device
|
||||
attributes:
|
||||
label: Device type
|
||||
options:
|
||||
- Desktop PC
|
||||
- Steam Deck
|
||||
default: 0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
label: DZGUI version
|
||||
validations:
|
||||
required: true
|
||||
placeholder: "5.6.0"
|
||||
- type: input
|
||||
id: distro
|
||||
attributes:
|
||||
label: Linux distribution
|
||||
validations:
|
||||
required: true
|
||||
placeholder: "Arch Linux"
|
||||
- type: textarea
|
||||
id: what-happened
|
||||
attributes:
|
||||
label: Describe the bug
|
||||
description: What did you expect to happen?
|
||||
placeholder: "E.g., When doing X, Y occurred. Include as much detail as possible."
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Additional log output
|
||||
description: Attach the file `$HOME/.local/state/dzgui/DZGUI_DEBUG.log` by clicking this area to highlight it and then dragging the file in.
|
||||
validations:
|
||||
required: false
|
||||
1
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
1
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@ -0,0 +1 @@
|
||||
blank_issues_enabled: false
|
||||
47
.github/ISSUE_TEMPLATE/feature.yml
vendored
Normal file
47
.github/ISSUE_TEMPLATE/feature.yml
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
name: Feature suggestion
|
||||
description: Submit requests for new features here
|
||||
title: "[FEAT] Your title here"
|
||||
labels: ["enhancement"]
|
||||
assignees:
|
||||
- aclist
|
||||
body:
|
||||
- type: dropdown
|
||||
id: device
|
||||
attributes:
|
||||
label: Device type
|
||||
options:
|
||||
- Desktop PC
|
||||
- Steam Deck
|
||||
default: 0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
label: DZGUI version
|
||||
validations:
|
||||
required: true
|
||||
placeholder: "5.6.0"
|
||||
- type: input
|
||||
id: distro
|
||||
attributes:
|
||||
label: Linux distribution
|
||||
validations:
|
||||
required: true
|
||||
placeholder: "Arch Linux"
|
||||
- type: textarea
|
||||
id: what-happened
|
||||
attributes:
|
||||
label: Describe the feature
|
||||
description: A clear and detailed description
|
||||
placeholder: "E.g., Add a dialog to the Options menu that automatically lets the user do Y"
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: why
|
||||
attributes:
|
||||
label: Describe the benefit
|
||||
description: How will this feature benefit large numbers of users?
|
||||
placeholder: "E.g., Currently, users have to manually do X to achieve Y. Implementing this feature would achieve A, B, and C."
|
||||
validations:
|
||||
required: true
|
||||
46
.github/ISSUE_TEMPLATE/trouble.yml
vendored
Normal file
46
.github/ISSUE_TEMPLATE/trouble.yml
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
name: Troubleshooting
|
||||
description: Submit user error/troubleshooting questions here
|
||||
title: "[HELP] Your title here"
|
||||
labels: ["troubleshooting"]
|
||||
assignees:
|
||||
- aclist
|
||||
body:
|
||||
- type: dropdown
|
||||
id: device
|
||||
attributes:
|
||||
label: Device type
|
||||
options:
|
||||
- Desktop PC
|
||||
- Steam Deck
|
||||
default: 0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
label: DZGUI version
|
||||
validations:
|
||||
required: true
|
||||
placeholder: "5.6.0"
|
||||
- type: input
|
||||
id: distro
|
||||
attributes:
|
||||
label: Linux distribution
|
||||
validations:
|
||||
required: true
|
||||
placeholder: "Arch Linux"
|
||||
- type: textarea
|
||||
id: what-happened
|
||||
attributes:
|
||||
label: Describe the issue
|
||||
description: A detailed description. What did you expect to happen?
|
||||
placeholder: "Include as much detail as possible and state the steps leading up to the problem. E.g., First I do this, then I do this, then this happens."
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Additional log output
|
||||
description: Attach the file `$HOME/.local/state/dzgui/DZGUI_DEBUG.log` by clicking this area to highlight it and then dragging the file in.
|
||||
validations:
|
||||
required: false
|
||||
230
CHANGELOG.md
230
CHANGELOG.md
@ -1,197 +1,113 @@
|
||||
# Changelog
|
||||
|
||||
## [5.6.0-beta.21] 2024-01-06
|
||||
### Added
|
||||
- Add in-app documentation link to Codeberg mirror
|
||||
- Hover tooltips to most buttons
|
||||
### Fixed
|
||||
- Prevent ArrowUp/ArrowDown input when inside keyword field
|
||||
## [5.6.6] 2024-02-09
|
||||
### Changed
|
||||
- Update IP database records for 2025-02
|
||||
|
||||
## [5.6.2] 2024-01-22
|
||||
### Fixed
|
||||
- Resolve regression introduced with IP resolution feature in 5.6.0 (restores functionality of right-click action: Add to My Servers)
|
||||
|
||||
## [5.6.1] 2024-01-10
|
||||
### Fixed
|
||||
- Add fallback support for jq 1.6
|
||||
|
||||
## [5.6.0] 2024-01-06
|
||||
### Added
|
||||
- Application header bar and controls
|
||||
- Menu context subtitle in header bar
|
||||
- Bulk delete mods (via 'List installed mods' list). Not compatible with Manual Mod install mode
|
||||
- Highlight stale mods in mods list
|
||||
- Added --steam launch parameter
|
||||
- Open Steam workshop subscriptions dialog when switching from Manual to Auto mode
|
||||
- Hover tooltips to most buttons
|
||||
- Add in-app documentation link to Codeberg mirror
|
||||
- Additional logging
|
||||
### Fixed
|
||||
- Avoid sudo escalation if system map count is sufficient (jiriks74)
|
||||
- Duplicate dialog title on Steam Deck
|
||||
- Resolve remote IP when saving records for game servers with multiple hosts
|
||||
- More performant symlink traversal when checking for legacy links
|
||||
- Only iterate on missing symlinks at boot (400% performance uplift)
|
||||
- Fix for server list truncation causing some servers to not appear in results
|
||||
- Empty dialog popups if user manually deletes local mods while application is running
|
||||
- Update statusbar when removing servers from list/repopulating
|
||||
- Abort DayZ path discovery if Steam files are not synched
|
||||
- Race condition when checking for installed mods
|
||||
- Favorite server message not updating correctly
|
||||
- Improved handling for cases where there are no locally installed mods
|
||||
- Set up mod symlinks at boot, rather than only on server connect
|
||||
- Prevent context menus from opening when table is empty
|
||||
- When reloading table in-place, prevent duplicate panel elements from being added if already present
|
||||
- Clean up local mod signatures from versions file when deleting mods
|
||||
- Focus first row when opening mods list
|
||||
### Changed
|
||||
- Redact usernames in log files
|
||||
- Prevent ArrowUp/ArrowDown input when inside keyword field
|
||||
- Admonish user to restart Steam in error dialog if DayZ path could not be found
|
||||
- Refactor control flow for more robust contextual parsing
|
||||
- Stop sending modal dialog hints to outer window
|
||||
- Clean up signal emission
|
||||
- Clarify some error messages and normalize text formatting
|
||||
- Update forum URL
|
||||
- Reword Help section links to include destination
|
||||
- Update README.md
|
||||
- Update IP database to 2025-01
|
||||
- Reduce IP database size by 50%
|
||||
- Update documentation to 5.6.x standard
|
||||
### Dropped
|
||||
- Removed temporary mod ID output in debug logs
|
||||
- Removed Hall of Fame section from button links, moved inside documentation
|
||||
- Remove unused imports
|
||||
- Hall of Fame section from button links, to be moved inside documentation
|
||||
- Unused imports
|
||||
|
||||
## [5.6.0-beta.20] 2024-12-23
|
||||
### Added
|
||||
- Output real and resolved mod ids to logs (temporary)
|
||||
- Added -steam launch parameter
|
||||
### Fixed
|
||||
- Only iterate on missing symlinks
|
||||
- Move logging up
|
||||
|
||||
## [5.6.0-beta.19] 2024-12-18
|
||||
### Added
|
||||
- Redact usernames in log files
|
||||
### Fixed
|
||||
- More performant symlink traversal when checking for legacy links
|
||||
|
||||
## [5.6.0-beta.18] 2024-12-14
|
||||
### Added
|
||||
- Open Steam workshop subscriptions dialog
|
||||
- Additional logging
|
||||
### Fixed
|
||||
- Empty dialog popups if user manually deletes local mods while application is running
|
||||
- Abort DayZ path discovery if VDF if Steam files are not synched
|
||||
- Avoid sudo escalation if system map count is sufficient (jiriks74)
|
||||
### Changed
|
||||
- Admonish user to restart Steam in error dialog if DayZ path could not be found
|
||||
|
||||
## [5.6.0-beta.17] 2024-12-14
|
||||
### Added
|
||||
- Additional logging
|
||||
|
||||
## [5.6.0-beta.16] 2024-12-13
|
||||
## [5.5.3] 2024-12-13
|
||||
### Fixed
|
||||
- Add remote resource health checks before downloading updates
|
||||
### Added
|
||||
- Add fallback repository
|
||||
|
||||
## [5.6.0-beta.11] 2024-12-07
|
||||
## [5.5.1] 2024-12-03
|
||||
### Fixed
|
||||
- Add missing function definition
|
||||
- Support localized decimal separators when parsing installed mod sizes
|
||||
|
||||
## [5.6.0-beta.10] 2024-12-04
|
||||
### Fixed
|
||||
- Untoggle highlight button when repopulating mod list
|
||||
- Resolve remote IP when saving records for game servers with multiple hosts
|
||||
- Update statusbar when removing servers from list/repopulating
|
||||
### Added:
|
||||
- "Select stale" button to bulk select mods marked as obsolete
|
||||
|
||||
## [5.6.0-beta.9] 2024-12-03
|
||||
### Fixed
|
||||
- Normalize user locale when parsing floats
|
||||
|
||||
## [5.6.0-beta.8] 2024-11-28
|
||||
### Fixed
|
||||
- Normalize user locale when parsing floats
|
||||
|
||||
## [5.6.0-beta.7] 2024-11-28
|
||||
### Changed
|
||||
- Add additional logging when fetching installed mods
|
||||
|
||||
## [5.6.0-beta.6] 2024-11-28
|
||||
### Fixed
|
||||
- Race condition when checking for installed mods
|
||||
|
||||
## [5.6.0-beta.5] 2024-11-21
|
||||
### Added
|
||||
- Highlight stale mods in mods list
|
||||
### Fixed
|
||||
- Duplicate dialog title on Steam Deck
|
||||
|
||||
## [5.6.0-beta.4] 2024-11-20
|
||||
### Added
|
||||
- Application header bar and controls
|
||||
- Menu context subtitle in header bar
|
||||
### Changed
|
||||
- Refactor control flow for more robust contextual parsing
|
||||
- Stop sending modal dialog hints to outer window
|
||||
### Fixed
|
||||
- Favorite server message not updating correctly
|
||||
|
||||
## [5.6.0-beta.3] 2024-11-18
|
||||
### Fixed
|
||||
- Improved handling for cases where there are no locally installed mods
|
||||
- Set up mod symlinks at boot, rather than only on server connect
|
||||
- Prevent context menus from opening when table is empty
|
||||
- When reloading table in-place, prevent duplicate panel elements from being added if already present
|
||||
- Clean up signal emission
|
||||
|
||||
## [5.6.0-beta.2] 2024-11-15
|
||||
### Fixed
|
||||
- Clean up local mod signatures from versions file when deleting mods
|
||||
|
||||
## [5.6.0-beta.1] 2024-11-12
|
||||
### Added
|
||||
- Bulk delete mods (via 'List installed mods' list). Not compatible with Manual Mod install mode
|
||||
### Fixed
|
||||
- Fix for server list truncation causing some servers to not appear in results
|
||||
- Suppress signal emission when switching menu contexts
|
||||
- Focus first row when opening mods list
|
||||
### Changed
|
||||
- Clarify some error messages and normalize text formatting
|
||||
|
||||
## [5.5.0-beta.5] 2024-11-03
|
||||
### Changed
|
||||
- Use updated A2S_RULES logic
|
||||
### Fixed
|
||||
- Servers in saved servers list would populate context menu with same option when right-clicking in server browser
|
||||
|
||||
## [5.5.0-beta.4] 2024-10-31
|
||||
### Added
|
||||
- Expose a toggle setting for whether to launch the application in fullscreen
|
||||
### Fixed
|
||||
- Enable adding/removing servers to/from My Saved Servers when in Recent Servers context
|
||||
|
||||
## [5.5.0-beta.3] 2024-10-31
|
||||
### Fixed
|
||||
- Prevent maps combobox from duplicating contents
|
||||
|
||||
## [5.5.0-beta.2] 2024-10-31
|
||||
### Fixed
|
||||
- Restore keyboard input to keyword entry field
|
||||
|
||||
## [5.5.0-beta.1] 2024-10-30
|
||||
## [5.5.0] 2024-11-10
|
||||
### Added
|
||||
- Support servers running DLC content (fixes Frostline servers)
|
||||
- Text autocompletion in maps search field
|
||||
- Add disk space warning to popup dialog
|
||||
- Expose a toggle setting for whether to launch the application in fullscreen
|
||||
- Text autocompletion in maps search field (partial search)
|
||||
- Add disk space warning to popup dialog when downloading mods
|
||||
### Fixed
|
||||
- Servers in saved servers list would populate context menu with same option when right-clicking in server browser
|
||||
- Enable adding/removing servers to/from My Saved Servers when in Recent Servers context
|
||||
- Prevent maps combobox from duplicating contents
|
||||
- Restore keyboard input to keyword entry field
|
||||
### Changed
|
||||
- Abort fallback query method if DLC is required
|
||||
|
||||
## [5.4.2-beta.1] 2024-10-05
|
||||
## [5.4.2] 2024-10-05
|
||||
### Fixed
|
||||
- Sanitize third-party API IDs to remove UGC collisions
|
||||
|
||||
## [5.4.1-beta.2] 2024-09-12
|
||||
### Fixed
|
||||
- Use fallback logic for modlist queries when user traverses networks
|
||||
|
||||
## [5.4.1-beta.2] 2024-09-10
|
||||
### Fixed
|
||||
- Fix signal handling control flow for checkbox toggles
|
||||
|
||||
## [5.4.1-beta.1] 2024-09-10
|
||||
## [5.4.1] 2024-09-25
|
||||
### Added
|
||||
- Pre-boot validation check for users with self-compiled version of jq
|
||||
### Fixed
|
||||
- Use fallback logic for modlist queries when user traverses networks
|
||||
- Fix signal handling control flow for checkbox toggles
|
||||
- When reloading the server browser, the map combobox selection would revert to the last selected map instead of All Maps
|
||||
- Server filter toggle signals were accessible from the main menu when switching between menu contexts
|
||||
- Global cooldown dialog could sometimes block filter toggles after cooldown reset
|
||||
- Normalized minor version number due to a previous clerical error
|
||||
|
||||
## [5.4.0-beta.5] 2024-08-27
|
||||
### Added
|
||||
- Freedesktop application icons for system taskbar, tray, and other dialogs
|
||||
### Fixed
|
||||
- Errors being printed to the console when Exit button was explicitly clicked
|
||||
|
||||
## [5.4.0-beta.4] 2024-08-21
|
||||
### Added
|
||||
- Emit CPU model name when exporting system debug log
|
||||
### Fixed
|
||||
- Detect Steam Deck OLED APU variant during initial setup
|
||||
|
||||
## [5.4.0-beta.3] 2024-08-04
|
||||
## [5.4.0] 2024-08-27
|
||||
### Added
|
||||
- Scan local area network for DayZ servers
|
||||
|
||||
## [5.4.0-beta.2] 2024-08-03
|
||||
### Fixed
|
||||
- Clerical hotfix for previous player names fix
|
||||
- Test if DayZ directory is empty at startup, implying that the game was moved to a new library collection
|
||||
|
||||
## [5.4.0-beta.1] 2024-07-16
|
||||
- Freedesktop application icons for system taskbar, tray, and other dialogs
|
||||
- Emit CPU model name when exporting system debug log
|
||||
### Fixed
|
||||
- Errors being printed to the console when Exit button was explicitly clicked
|
||||
- Detect Steam Deck OLED APU variant during initial setup
|
||||
- Encapsulate player names correctly so that names with whitespace in them are supported
|
||||
- Test if DayZ directory is empty at startup, implying that the game was moved to a new library collection
|
||||
- Report WM_CLASS name to the window manager
|
||||
|
||||
## [5.3.2] 2024-07-02
|
||||
### Fixed
|
||||
|
||||
34
CODE_OF_CONDUCT.md
Normal file
34
CODE_OF_CONDUCT.md
Normal file
@ -0,0 +1,34 @@
|
||||
# Preamble
|
||||
This project is free and open source software (FOSS) that is improved upon through the collaborative efforts of its community.
|
||||
|
||||
To foster a collegial and productive atmosphere, all interactions with this project and its members shall be subject to these standards.
|
||||
|
||||
"Members" refers to all project maintainers, contributors, developers, and end-users.
|
||||
Bear in mind that members may come from different countries, age groups, and backgrounds, and have differing experience levels.
|
||||
|
||||
# Standards
|
||||
- Do not engage in antagonistic, offensive, discriminatory, threatening, or inflammatory behavior or trolling towards other members under any circumstances.
|
||||
- Engage in professional communication and stay on topic. Keep banter and jokes to a minimum, as they are liable to be misconstrued.
|
||||
- Do not post offensive or inflammatory off-site content, or content violating the above standards or the terms of service of this site.
|
||||
- Do not post spam. The site operator implements anti-spam measures that may lead to your account being revoked.
|
||||
- While this project relates to the DayZ computer game, it is not a forum for non-technical discussion about the game, or a place to post unsolicited links.
|
||||
- Do not use images, emoji reactions, or other non-verbal gags as justification for skirting the above standards.
|
||||
|
||||
# Off-site content
|
||||
From time to time, it may be necessary to include off-site reference material or links. Use discretion when selecting this content and provide
|
||||
the minimum necessary for a technical discussion of the matter. Do not willfully include content that violates the above standards.
|
||||
|
||||
# Enforcement
|
||||
Violations of the above standards will be subject to moderation decisions.
|
||||
|
||||
Project maintainers reserve the right to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned with these standards, and will communicate reasons for moderation decisions when appropriate.
|
||||
|
||||
Depending on the nature of the violation, or if the violation is not corrected after a warning has been issued, the user may be permanently barred from further interaction with the project.
|
||||
|
||||
# Technical support
|
||||
This project is free software, but this does not imply a guarantee of free, unlimited tech support and troubleshooting in perpetuity.
|
||||
The software is provided as-is, and no warranty is made as to its fitness for a given purpose or that it is free from defects.
|
||||
|
||||
Project members volunteer their time. Do not disparage other members when they attempt to assist you.
|
||||
Be aware that if you cannot provide enough information when filing a ticket, this may lead to the ticket being closed as non-actionable.
|
||||
@ -15,7 +15,7 @@ This overcomes certain limitations in the Linux client and helps prepare the gam
|
||||
|
||||
Refer to the documentation for installation and setup instructions:
|
||||
|
||||
- [GitHub](https://aclist.github.io/dzgui/dzgui.html)
|
||||
- [GitHub](https://aclist.github.io/dzgui/index.html)
|
||||
- [Mirror (Codeberg)](https://aclist.codeberg.page)
|
||||
|
||||
|
||||
|
||||
48
dzgui.sh
48
dzgui.sh
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
set -o pipefail
|
||||
|
||||
version=5.6.0-beta.21
|
||||
version=5.6.3
|
||||
|
||||
#CONSTANTS
|
||||
aid=221100
|
||||
@ -76,6 +76,9 @@ set_im_module(){
|
||||
return
|
||||
fi
|
||||
}
|
||||
redact(){
|
||||
sed 's@\(/home/\)[^/]*@\1REDACTED@g'
|
||||
}
|
||||
logger(){
|
||||
local date="$(date "+%F %T,%3N")"
|
||||
local tag="$1"
|
||||
@ -83,8 +86,8 @@ logger(){
|
||||
local self="${BASH_SOURCE[0]}"
|
||||
local caller="${FUNCNAME[1]}"
|
||||
local line="${BASH_LINENO[0]}"
|
||||
self="$(<<< "$self" sed 's@\(/[^/]*/\)\([^/]*\)\(.*\)@\1REDACTED\3@g')"
|
||||
printf "%s␞%s␞%s::%s()::%s␞%s\n" "$date" "$tag" "$self" "$caller" "$line" "$string" >> "$debug_log"
|
||||
printf "%s␞%s␞%s::%s()::%s␞%s\n" "$date" "$tag" "$self" "$caller" "$line" "$string" \
|
||||
| redact >> "$debug_log"
|
||||
}
|
||||
setup_dirs(){
|
||||
for dir in "$state_path" "$cache_path" "$share_path" "$helpers_path" "$freedesktop_path" "$config_path" "$log_path"; do
|
||||
@ -492,20 +495,47 @@ stale_symlinks(){
|
||||
unlink "$l"
|
||||
done
|
||||
}
|
||||
|
||||
check_availability() {
|
||||
if [[ -z $1 ]]; then
|
||||
return 1
|
||||
fi
|
||||
local url=$1
|
||||
local timeout_sec="3"
|
||||
if [[ $2 ]]; then
|
||||
timeout_sec=$2
|
||||
fi
|
||||
if ! ping -w "$timeout_sec" "$url"; then
|
||||
logger WARN "Failed to reach $url, service may be down."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
local_latlon(){
|
||||
if [[ -z $(command -v dig) ]]; then
|
||||
local local_ip=$(curl -Ls "https://ipecho.net/plain")
|
||||
local url_ipecho="https://ipecho.net/plain"
|
||||
if ! check_availability "ipecho.net"; then
|
||||
logger WARN "Failed to get external ip address, ipecho.net service may be down."
|
||||
return 1
|
||||
fi
|
||||
local local_ip=$(curl -Ls "$url_ipecho")
|
||||
else
|
||||
# todo : implement checking remote
|
||||
local local_ip=$(dig -4 +short myip.opendns.com @resolver1.opendns.com)
|
||||
fi
|
||||
local url="http://ip-api.com/json/$local_ip"
|
||||
local res=$(curl -Ls "$url" | jq -r '"\(.lat)\n\(.lon)"')
|
||||
local url_ip_api="http://ip-api.com/json/$local_ip"
|
||||
if ! check_availability "ip-api.com"; then
|
||||
logger WARN "Failed to get local coordinates, ip-api.com service may be down."
|
||||
return 1
|
||||
fi
|
||||
local res=$(curl -Ls "$url_ip_api" | jq -r '"\(.lat)\n\(.lon)"')
|
||||
if [[ -z "$res" ]]; then
|
||||
logger WARN "Failed to get local coordinates"
|
||||
return 1
|
||||
fi
|
||||
echo "$res" > "$coords_file"
|
||||
}
|
||||
|
||||
lock(){
|
||||
[[ ! -f $lock_file ]] && touch $lock_file
|
||||
local pid=$(cat $lock_file)
|
||||
@ -584,10 +614,10 @@ fetch_helpers_by_sum(){
|
||||
[[ -f "$config_file" ]] && source "$config_file"
|
||||
declare -A sums
|
||||
sums=(
|
||||
["ui.py"]="d3ad9153d8599bea0eede9fd3121ee8e"
|
||||
["ui.py"]="5a876efacf208d12b5fe761996425412"
|
||||
["query_v2.py"]="55d339ba02512ac69de288eb3be41067"
|
||||
["vdf2json.py"]="2f49f6f5d3af919bebaab2e9c220f397"
|
||||
["funcs"]="5624b1e44a43c318775caa5d0ceef1f0"
|
||||
["funcs"]="417bd5eaffbefc905a843985c691dc64"
|
||||
["lan"]="c62e84ddd1457b71a85ad21da662b9af"
|
||||
)
|
||||
local author="aclist"
|
||||
@ -636,7 +666,7 @@ fetch_helpers_by_sum(){
|
||||
}
|
||||
fetch_geo_file(){
|
||||
# for binary releases
|
||||
local geo_sum="7b6668eb4535bb432acb42016ba9cc47"
|
||||
local geo_sum="9824e9b9a75a4830a2423932cc188b06"
|
||||
local km_sum="b038fdb8f655798207bd28de3a004706"
|
||||
local gzip="$helpers_path/ips.csv.gz"
|
||||
if [[ ! -f $geo_file ]] || [[ $(get_hash $geo_file) != $geo_sum ]]; then
|
||||
|
||||
@ -30,7 +30,6 @@ log_path="$state_path/logs"
|
||||
debug_log="$log_path/DZGUI_DEBUG.log"
|
||||
system_log="$log_path/DZGUI_SYSTEM.log"
|
||||
mod_log="$log_path/DZGUI_MODIDS.log"
|
||||
meta_log="$log_path/DZGUI_META.log"
|
||||
|
||||
#STATE FILES
|
||||
history_file="$state_path/$prefix.history"
|
||||
@ -131,6 +130,7 @@ declare -A funcs=(
|
||||
["Remove from my servers"]="update_favs_from_table"
|
||||
["Remove from history"]="remove_from_history"
|
||||
["Force update local mods"]="force_update"
|
||||
["Resolve IP"]="resolve_ip"
|
||||
["Handshake"]="final_handshake"
|
||||
["get_player_count"]="get_player_count"
|
||||
["lan_scan"]="lan_scan"
|
||||
@ -162,6 +162,33 @@ find_stale_mods(){
|
||||
printf ""
|
||||
return 99
|
||||
}
|
||||
resolve_ip(){
|
||||
shift
|
||||
local res
|
||||
local record="$1"
|
||||
local ip=$(<<< "$record" awk -F: '{print $1}')
|
||||
local qport=$(<<< "$record" awk -F: '{print $3}')
|
||||
res=$(a2s $ip $qport info)
|
||||
if [[ ! $? -eq 0 ]]; then
|
||||
printf "Server timed out \n"
|
||||
return 1
|
||||
fi
|
||||
local gport=$(<<< "$res" jq -r '.[].gameport')
|
||||
if [[ -z $gport ]]; then
|
||||
printf "Failed to resolve server metadata\n"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# incoming input can only be 'remove' or 'add'
|
||||
# record is in favs => implies deletion
|
||||
# record not in favs => implies addition
|
||||
resolved_record="$ip:$gport:$qport"
|
||||
if [[ ${ip_list[*]} =~ $resolved_record ]]; then
|
||||
remove_from_favs "$resolved_record"
|
||||
else
|
||||
add_to_favs "$resolved_record"
|
||||
fi
|
||||
}
|
||||
get_player_count(){
|
||||
shift
|
||||
local res
|
||||
@ -398,6 +425,10 @@ local_latlon(){
|
||||
get_dist(){
|
||||
shift
|
||||
local given_ip="$1"
|
||||
if [[ ! -f $_cache_coords ]]; then
|
||||
printf "Unknown"
|
||||
return
|
||||
fi
|
||||
readarray -t coords < "$_cache_coords"
|
||||
readarray -t n < <(<<< "$given_ip" awk 'BEGIN{RS="."}{$1=$1}1')
|
||||
|
||||
@ -448,7 +479,9 @@ get_remote_servers(){
|
||||
_fetch "${params[$i]}" > $_cache_temp.${i}
|
||||
done
|
||||
|
||||
jq -n '[ [inputs]|add ].[]' $_cache_temp.* && rm $_cache_temp.*
|
||||
# ubuntu variants do not support jq 1.7 chained operators
|
||||
# https://github.com/jqlang/jq/releases/tag/jq-1.7
|
||||
jq -n '[ [inputs]|add ][]' $_cache_temp.* && rm $_cache_temp.*
|
||||
}
|
||||
get_unique_maps(){
|
||||
shift
|
||||
@ -736,6 +769,9 @@ dump_servers(){
|
||||
logger INFO "Server context is '$subcontext', reading from file '$file'"
|
||||
filter_servers "$file" "$@"
|
||||
}
|
||||
redact(){
|
||||
sed 's@\(/home/\)[^/]*@\1REDACTED@g'
|
||||
}
|
||||
logger(){
|
||||
local date="$(date "+%F %T,%3N")"
|
||||
local tag="$1"
|
||||
@ -743,8 +779,8 @@ logger(){
|
||||
local self="${BASH_SOURCE[0]}"
|
||||
local caller="${FUNCNAME[1]}"
|
||||
local line="${BASH_LINENO[0]}"
|
||||
self="$(<<< "$self" sed 's@\(/[^/]*/\)\([^/]*\)\(.*\)@\1REDACTED\3@g')"
|
||||
printf "%s␞%s␞%s::%s()::%s␞%s\n" "$date" "$tag" "$self" "$caller" "$line" "$string" >> "$debug_log"
|
||||
printf "%s␞%s␞%s::%s()::%s␞%s\n" "$date" "$tag" "$self" "$caller" "$line" "$string" \
|
||||
| redact >> "$debug_log"
|
||||
}
|
||||
test_ping(){
|
||||
shift
|
||||
@ -1244,8 +1280,8 @@ symlinks(){
|
||||
done
|
||||
}
|
||||
|
||||
readarray -t mods < <(find $workshop_dir -mindepth 1 -name meta.cpp | awk -F/ 'NF=NF-1{print $NF}')
|
||||
readarray -t links < <(find $game_dir -type l)
|
||||
readarray -t mods < <(find "$workshop_dir" -mindepth 1 -name meta.cpp | awk -F/ 'NF=NF-1{print $NF}')
|
||||
readarray -t links < <(find "$game_dir" -maxdepth 1 -type l)
|
||||
|
||||
if [[ ${#mods[@]} -eq 0 ]]; then
|
||||
logger INFO "No mods present, aborting"
|
||||
|
||||
@ -1814,10 +1814,16 @@ class TreeView(Gtk.TreeView):
|
||||
|
||||
|
||||
def format_metadata(row_sel):
|
||||
# this function is recycled for the add by ip/id methods +
|
||||
# the right-click context menu (add/remove servers)
|
||||
# in the latter case, there is no metadata to update
|
||||
# see grid.update_statusbar(), so the returned row is None
|
||||
row = None
|
||||
for i in RowType:
|
||||
if i.dict["label"] == row_sel:
|
||||
row = i
|
||||
prefix = i.dict["tooltip"]
|
||||
break
|
||||
vals = {
|
||||
"branch": config_vals[0],
|
||||
"debug": config_vals[1],
|
||||
@ -1827,6 +1833,8 @@ def format_metadata(row_sel):
|
||||
"preferred_client": config_vals[5],
|
||||
"fullscreen": config_vals[6]
|
||||
}
|
||||
if row is None:
|
||||
return None
|
||||
try:
|
||||
alt = row.dict["alt"]
|
||||
default = row.dict["default"]
|
||||
@ -2396,6 +2404,8 @@ class Grid(Gtk.Grid):
|
||||
return True
|
||||
|
||||
def update_statusbar(self, string):
|
||||
if string is None:
|
||||
return
|
||||
meta = self.bar.get_context_id("Statusbar")
|
||||
self.bar.push(meta, string)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user