Compare commits

...

3722 Commits

Author SHA1 Message Date
a7ac0986a1 Add support for post arguments 2024-10-19 20:54:20 +02:00
57edfd6d7b Add support for post arguments 2024-10-19 20:54:04 +02:00
3a5d5f07ef Fix for Docker rebuild loop 2024-10-19 19:52:48 +02:00
13413b5d1f share/docker/tailscale_container_hook aktualisiert 2024-10-18 18:46:39 +02:00
47a04e10c0 Add error handling to package installation 2024-10-18 14:04:08 +02:00
44e09d534c Change JSON download routine and audjust paths 2024-10-18 06:38:27 +02:00
1b65b07110 emhttp/plugins/dynamix.docker.manager/include/DockerClient.php aktualisiert 2024-10-17 20:26:10 +02:00
da01e24ff8 Add version comparison 2024-10-17 18:23:50 +02:00
a080ec364d Initial Tailscale Docker integration
- Remove exclusion from share directory from .gitignore
- Add Unraid specific container hook script
- Add Tailscale icon
- Add helptexts for Tailscale

This integration allows users to easily make use of Tailscale in their Docker containers by just clicking a switch on the Docker page.
The Tailscale plugin itself is not needed for this integration but for the best user experience it is strongly recommended to install the Tailscale plugin from Community Applications.

How this works:
1. Configure Tailscale in the Docker template in Unraid and click Apply
2. Unraid will extract the default Entrypoint and CMD from the container
3. The hook script will be mounted in the container to /opt/unraid/tailscale-hook and the Entrypoint from the container will be modified to /opt/unraid/tailscale-hook
4. The original Entrypoint and CMD from the container, alongside with the other necessary variables for Tailscale will be passed over to the container
5. When the container starts the hook script will be executed, install dependencies (currently Alpine, Arch and Debian based containers are supported), download the newest version from Tailscale and run it
6. After the first start with Tailscale the container will halt and wait for the user to click on the link which is presented in the log from the container to add the container to your Tailnet
(alternatively one could also open up a Console from the container and issue `tailscale status` which will also present the link to authenticate the container to your Tailnet)
7. The hook script will pass over the default Entrypoint and CMD which was extracted in step 2 and the container will start as usual

These steps will be repeated after Container update, force update from the Docker page and if changes in the template are made.
If the container is only Started/Restarted the hook script will detect that Tailscale is installed and only start it, if one wants to update Tailscale inside the container simply hit `force update` on the Docker page in Unraid (with Advanced View Enabled)

The integration will show a Tailscale icon on the Docker page for each Tailscale enabled Container and show some basic information from the container (Installed Tailscale Version, Online Status, Hostname, Main Relay, IPs, Exit Node, Auth Expiry,...)
When Serve or Funnel is enabled it will also generate `Tailscale WebUI` in the drop down for the container which you can open up if Tailscale is installed from the device you are accessing Unraid.
2024-10-16 22:55:53 +02:00
Tom Mortensen
95c6913c62 small chang in how rc.cgroup2unaid is invoked 2024-10-11 02:24:43 -07:00
Tom Mortensen
b783d4b207 more killall and pgrep updates. 2024-10-11 02:24:43 -07:00
Tom Mortensen
a866de833a Revert "stop ntpd from complaining about multiple IP addresses" 2024-10-11 02:24:43 -07:00
tom mortensen
ee31e35849 Merge pull request #1882 from desertwitch/fix-rsyslogd
(bugfix) /etc/rc.d/rc.rsyslogd: OS-native PID for decisions
2024-10-10 17:13:35 -07:00
tom mortensen
50e7389c8a Merge pull request #1889 from SimonFair/ntp-fix
killall and pgrep updates.
2024-10-10 17:02:59 -07:00
tom mortensen
d536ef285b Merge pull request #1890 from dlandon/delete_DS_Store_files_when_deleting_user_share
Delete all '*.DS_Store' files when deleting share.
2024-10-10 16:57:08 -07:00
dlandon
2dc82b61de Delete all '*.DS_Store' files when deleting share. 2024-10-10 16:16:09 -05:00
SimonFair
57ec7909e5 Update rc.sshd 2024-10-10 21:54:16 +01:00
SimonFair
01c6f64b52 Revert sshd loops. 2024-10-10 21:03:02 +01:00
SimonFair
80d567dfde killall and pgrep updates.
Set --ns $$ on commands.
2024-10-10 19:18:54 +01:00
tom mortensen
99d60fa08a Merge pull request #1888 from SimonFair/ntp-fix
Samba update and to use smbcontrol for reload
2024-10-10 10:37:49 -07:00
tom mortensen
8bbf176b8b Merge pull request #1887 from unraid/fix-device-list
Fix PHP error in device_list
2024-10-10 10:36:50 -07:00
tom mortensen
ca51a3799b Merge pull request #1885 from dlandon/remove_ps.txt_file_from_diagnostics
Remove ps.txt from diagnostics.
2024-10-10 10:36:28 -07:00
tom mortensen
e4bb758b05 Merge pull request #1884 from dlandon/show_delete_on_shares_settings_page_at_all_times
Delete share is always visible.
2024-10-10 10:35:59 -07:00
SimonFair
3c007fa1d0 Samba update and to use smbcontrol for reload 2024-10-10 17:17:17 +01:00
ljm42
c062e4dd9c Fix PHP error in device_list
Was preventing the main page from populating with data in some cases
2024-10-10 09:09:39 -07:00
desertwitch
06b1c9a20f /etc/rc.d/rc.rsyslogd: check status before reload 2024-10-10 07:03:48 +02:00
desertwitch
bf6d5982be /etc/rc.d/rc.rsyslogd: use pgrep, killall with PID namespace 2024-10-10 06:51:05 +02:00
dlandon
d9bd5b56c8 Remove ps.txt from diagnostics. 2024-10-09 13:08:55 -05:00
dlandon
bc7c66fec9 Delete share is always visible and enabled only when it is safe to delete the share. 2024-10-09 12:06:48 -05:00
tom mortensen
dc50e7d2c2 Merge pull request #1881 from SimonFair/ntp-fix
Set NTP to use interfaces.
2024-10-09 08:56:07 -07:00
desertwitch
0061c66dfe /etc/rc.d/rc.rsyslogd: OS-native PID for decisions
bugfix: multiple running rsyslogd processes (e.g. spawned by Docker containers) caused the rc.d script to think that the OS-native process was already running, resulting in startup failure of the OSes daemon.
2024-10-09 14:52:44 +02:00
SimonFair
91caf869f5 Set NTP to use inferfaces. 2024-10-08 21:57:48 +01:00
tom mortensen
97c3a4621b Merge pull request #1877 from dlandon/cannot_change_share_settings_if_pools_missing
Fix a situation where the secondary pool device is missing.
2024-10-08 12:18:48 -07:00
tom mortensen
1ffb22bddf Merge pull request #1880 from ich777/ich777-docker-directory-fix
Fix for docker directory
2024-10-08 12:16:44 -07:00
tom mortensen
1d9e14f07c Merge pull request #1878 from SimonFair/VM-ZFS-Fixes
Fix virtiofsd pre processor + add virtiogpu option to gui.
2024-10-08 12:14:26 -07:00
6f7b97e37a Fix for docker directory
- store path outside from function to not shorten path if users switches multiple times between `image` and `folder`
- make sure overlay2 is selected by default
2024-10-07 14:54:08 +02:00
SimonFair
ed7219d9c7 Add virtio gpu option. 2024-10-06 11:29:57 +01:00
SimonFair
082d7d842b Revert "Add virtio gu(2d) as an option of template."
This reverts commit 9a502776a1.
2024-10-06 11:26:34 +01:00
SimonFair
9a502776a1 Add virtio gu(2d) as an option of template. 2024-10-06 11:17:19 +01:00
SimonFair
03346f4709 Update virtiofsd.php 2024-10-05 07:57:19 +01:00
dlandon
1cc84832ee Fix a situation where secondary pool device is missing and the Array is chosen for the primary device.. 2024-10-03 13:57:21 -05:00
Tom Mortensen
959df7e46c fx: Agent notifications don't work if there's a problem with email notifications 2024-10-02 09:55:44 -07:00
Tom Mortensen
3fb6c2147b Small change of var name CUSTOMFA to NGINX_CUSTOMFA. 2024-10-02 09:55:44 -07:00
Tom Mortensen
3db6fa9a1d update rc.bind (but not used) 2024-10-02 09:55:44 -07:00
tom mortensen
0c5987fab0 Merge pull request #1811 from unraid/kill-samba
Forcibly kill samba if needed
2024-10-02 09:52:46 -07:00
tom mortensen
fcbc8f700e Merge pull request #1876 from dkaser/check-container-networks
fix: prevent deleting containers that are assigned as a network
2024-10-01 14:00:08 -07:00
Derek Kaser
6fd88575b2 fix: prevent deleting containers that are assigned as a network 2024-10-01 04:21:51 +00:00
tom mortensen
bff0238f88 Merge pull request #1875 from dkaser/sanitize-tsnet
feat: sanitize ts.net domain names from nginx config
2024-09-30 15:45:50 -07:00
Derek Kaser
ee7f1f4a5b feat: sanitize ts.net domain names from nginx config 2024-09-30 02:29:37 +00:00
tom mortensen
c3dd62f1d5 Merge pull request #1874 from dlandon/container_device_not_showing
Container device not showing in Dockerman.
2024-09-27 09:19:24 -07:00
tom mortensen
7c0fb18e3c Merge pull request #1873 from unraid/add-csp-frame-ancestors
Improved "Content-Security-Policy frame-ancestors" support
2024-09-27 09:15:29 -07:00
ljm42
fe2e2ff897 define CUSTOMFA in /etc/defaults/nginx 2024-09-26 16:03:36 -07:00
ljm42
74530129ae Merge branch 'master' into add-csp-frame-ancestors 2024-09-26 15:52:44 -07:00
tom mortensen
968e3b1d72 Merge pull request #1870 from dkaser/tailscale-routes
feat: show routes from all routing tables, not just default
2024-09-26 12:25:30 -07:00
tom mortensen
6bdcb38c47 Merge pull request #1869 from ich777/ich777-rc.sshd-fix
Fix for rc.sshd
2024-09-26 12:25:09 -07:00
tom mortensen
8c7cdca4aa Merge pull request #1868 from unraid/ts-redirect
redirect http TS url to https TS url
2024-09-26 12:24:42 -07:00
tom mortensen
08024a0464 Merge pull request #1867 from ich777/ich777-docker-fix
Fix for 3rd party containers "not available" colour
2024-09-26 12:24:05 -07:00
dlandon
828cd7b747 Container device not showing in Dockerman. 2024-09-26 09:13:42 -05:00
ljm42
0ce3960de6 Improved "Content-Security-Policy frame-ancestors" support 2024-09-25 23:16:52 -07:00
tom mortensen
8b91d22796 Merge pull request #1872 from ich777/ich777-rc.docker-patch
Update rc.docker
2024-09-25 10:36:52 -07:00
b716920800 Update rc.docker
- Remove ID since not necessary
2024-09-24 16:55:21 +02:00
6d749a8b1a Update rc.docker
- Further improvement to stop containers only managed by Unraid or the Compose plugin
- Small fix for the notification
2024-09-24 16:46:02 +02:00
69b95ae27d Update rc.docker
- Only stop Unraid managed containers
- Don't kill containers since Docker will kill them if they won't stop after the set timeout when the daemon is stopping
- Increase timeout for daemon to die to 30 seconds (seems a bit short if 3rd party containers are installed)
- Rephrase message for daemon to die and display it only once
2024-09-24 15:51:46 +02:00
Derek Kaser
20e29ab5af feat: show routes from all routing tables, not just default 2024-09-23 21:32:13 +00:00
a75bc3d4d7 Fix for rc.sshd
- Remove trailing slash to be sure to grab the correct PIDs
2024-09-23 22:16:02 +02:00
ljm42
e8e5ccdf18 redirect http TS url to https TS url 2024-09-23 12:59:05 -07:00
020ed9a07f Small fix for 3rd party containers
- Fix orange text "not available" to use the default text colour.
2024-09-23 21:19:04 +02:00
Tom Mortensen
8f656e87b1 establish sensible zfs pool defaults 2024-09-23 10:57:13 -07:00
Tom Mortensen
54b1e81b38 unconditinally set directories to mode 0777 2024-09-23 10:54:57 -07:00
Tom Mortensen
4c6be23467 Clean up empty cgroups 2024-09-20 09:20:44 -07:00
Tom Mortensen
4a4983f7c5 rc.S: reboot should not invoke shutdown 2024-09-20 09:20:44 -07:00
tom mortensen
dcfaa1afa0 Merge pull request #1866 from SimonFair/VM-ZFS-Fixes
Fix VM usage stats value if timer > 1 sec.
2024-09-20 09:19:46 -07:00
SimonFair
e52813b626 Divide net and disk values by timer 2024-09-19 22:16:00 +01:00
tom mortensen
760aac71df Merge pull request #1863 from dlandon/default_array_file_system_message
Change default file system text.
2024-09-16 14:58:28 -07:00
tom mortensen
20ef176665 Merge pull request #1862 from ich777/patch-4
Fix for rc.docker for interfaces with higher index than 0
2024-09-16 14:57:48 -07:00
tom mortensen
66d7193dab Merge pull request #1858 from ich777/rc.sshd_fix
Only kill sshd from host
2024-09-16 14:56:54 -07:00
tom mortensen
9c9c79b1b3 Merge pull request #1857 from ich777/ich777-docker-container-network
Allow users to select Container networks in the WebUI
2024-09-16 14:55:54 -07:00
tom mortensen
8aac4ee119 Merge pull request #1856 from desertwitch/patch-1
en_US/helptext.txt: Fix broken link in GUI
2024-09-16 14:55:00 -07:00
tom mortensen
8120959c2f Merge pull request #1854 from desertwitch/fix-php-warning
dynamix/include/SysDevs.php: fix PHP warnings
2024-09-16 14:54:20 -07:00
tom mortensen
72abe50721 Merge pull request #1853 from Commifreak/libvirt-log-timeout-info
Add a log line noting how long we wait currently for a VM action.
2024-09-16 14:52:55 -07:00
tom mortensen
18e37ed045 Merge pull request #1852 from dkaser/tailscale-nginx
Add fastcgi_path_info to default nginx configuration
2024-09-16 14:51:36 -07:00
tom mortensen
6845c007a7 Merge pull request #1851 from ich777/page-builder-fix
Fix issue with plugin icons
2024-09-16 14:50:50 -07:00
tom mortensen
b844f941d0 Merge pull request #1850 from unraid/add-ts-certs
Add support for Tailscale certs in the webgui
2024-09-16 14:49:59 -07:00
tom mortensen
5883e767aa Merge pull request #1849 from dlandon/parity-check-shows-incorrect-results
Parity check wrong again.
2024-09-16 14:46:15 -07:00
tom mortensen
efc4fa2673 Merge pull request #1848 from ich777/ich777-not-dockerman-managed
Correctly identify/show non dockerman Managed containers
2024-09-16 14:45:11 -07:00
tom mortensen
0810fc5bd8 Merge pull request #1847 from SimonFair/VM-ZFS-Fixes
VM ZFS  dataset removal processing additional fixes
2024-09-16 14:44:14 -07:00
tom mortensen
897365a5de Merge pull request #1845 from Squidly271/patch-42
Adjust URL for CA installation
2024-09-16 14:42:52 -07:00
dlandon
8d628aad4f Change default file system text. 2024-09-13 11:47:57 -05:00
e3c4ff280d Small fix 2024-09-12 23:33:27 +02:00
19de7c1979 Fix for rc.docker for interfaces with higher index than 0
- Fix error in first if condition which always returned `false`
- Change name from variables so that it a bit easier to read
- Make sure that custom interfaces with a higher index then 0 are properly rebuilt
2024-09-12 23:12:03 +02:00
5ec695921a Fix sshd_update logic 2024-09-11 07:39:34 +02:00
171a77feec Change function
- return `1` if daemon is running and return `0` if it is not running
2024-09-11 07:38:15 +02:00
3e29f0b8b8 Only kill sshd from host 2024-09-10 22:32:07 +02:00
b62c8f5a12 Update Helpers.php 2024-09-09 17:09:15 +02:00
e9faee0d27 Update CreateDocker.php 2024-09-09 17:07:43 +02:00
Rysz
16823d07b1 en_US/helptext.txt: Fix broken link 2024-09-09 06:56:35 +02:00
desertwitch
73705b71fa dynamix/include/SysDevs.php: fix PHP warnings
test for exec-returned variable existence before usage
2024-09-08 20:21:18 +02:00
Robin Kluth
6b31532688 Add a log line noting how long we wait currently for a VM action. 2024-09-06 15:46:06 +02:00
Derek Kaser
039c798b43 Add fastcgi_path_info to default nginx configuration 2024-09-05 22:00:20 +00:00
1e43abc785 Fix issue with plugin icons
- make sure the maximum icon size for a plugin is 18x18px
2024-09-05 10:16:51 +02:00
ljm42
9b1081d2e1 Add support for Tailscale certs in the webgui 2024-09-04 21:37:08 -07:00
SimonFair
c27e018fdb Reduce Multifunction starting bus. 2024-09-04 21:11:44 +01:00
dlandon
ef5067584b Change file_put_contents_atomic() back to file_put_contents() since it is liable to change. 2024-09-04 12:34:23 -05:00
SimonFair
4ea425411a Add disable rename if snapshots found. 2024-09-03 21:45:50 +01:00
dlandon
24bdc5169d Parity check wrong again. 2024-09-03 15:36:12 -05:00
SimonFair
753d87c690 Additional VM ZFS delete fixes 2024-09-02 18:03:10 +01:00
07d02f579f Add files via upload 2024-09-02 17:48:25 +02:00
SimonFair
ceb97ab392 Disable dataset processing. 2024-09-01 21:17:05 +01:00
Squidly271
6a15afa2a8 Update Apps.page 2024-09-01 15:57:02 -04:00
tom mortensen
175d24afd2 Merge pull request #1842 from dlandon/rework-share-list
Fix condition where useCache is 'no' when there is no array.
2024-08-30 13:00:58 -07:00
Tom Mortensen
12828eec63 stop ntpd from complaining about multiple IP addresses 2024-08-30 09:04:48 -07:00
dlandon
156599031a Fix condition where useCache is 'no' when there is no array. 2024-08-30 07:25:33 -05:00
tom mortensen
15f4138c87 Merge pull request #1839 from SimonFair/VM-ZFS-Fixes
ZFS fixes
2024-08-29 11:58:12 -07:00
tom mortensen
fd6e4f1ba1 Merge pull request #1840 from dlandon/rework-share-list
Fix share list.
2024-08-29 11:57:17 -07:00
tom mortensen
72a47035ef Merge pull request #1841 from dlandon/rename-pool-message
Add warning message to rename pool dialog.
2024-08-29 11:55:57 -07:00
dlandon
d57bf205fa Add warning message to rename pool dialog. 2024-08-29 13:23:38 -05:00
dlandon
16a8e7092d Fix share list not showing invalid storage configurations and some code cleanup. 2024-08-29 13:00:06 -05:00
SimonFair
00b1f77742 ZFS fixes 2024-08-29 17:45:00 +01:00
Tom Mortensen
506270e413 Fixes zfs subpool creation issue.
Fixes DeviceInfo not populating for array devices when Started.
2024-08-29 02:04:38 -07:00
Tom Mortensen
303c76d7da rc.nfsd: the 'update' method only causes re-read of /etc/exports 2024-08-29 02:03:51 -07:00
Tom Mortensen
73ea1bb7b3 remove deprecated check 2024-08-29 02:02:55 -07:00
tom mortensen
9d4ca6a2c9 Merge pull request #1837 from ich777/docker_fix
Make sure to not show internal IP from stopped containers
2024-08-29 01:25:29 -07:00
49b82d0eb8 Make sure to not show internal IP from stopped containers 2024-08-28 20:33:25 +02:00
tom mortensen
106f155ecc Merge pull request #1835 from donbuehl/feature/1832
Feature Request: Use user's actual shell in OpenTerminal.php #1832
2024-08-27 21:14:52 -07:00
donbuehl
53704b58aa Final minimal viable solution 2024-08-27 21:43:46 +02:00
tom mortensen
da9add3637 Merge pull request #1836 from desertwitch/feature-default-file
update.php: add two optional methods to define defaults
2024-08-27 12:18:16 -07:00
donbuehl
db77c13552 MVP solution for zsh plugin
Implemented a minimal viable solution for the zsh plugin:
- Checks if the shell is /bin/zsh
- Falls back to bash if not

This approach prioritizes simplicity and reliability over a more general solution to avoid potential errors.
2024-08-26 14:29:24 +02:00
donbuehl
be22c0e1f8 Simplify shell detection for openterminal 2024-08-25 15:44:28 +02:00
donbuehl
cd9d20eaf3 Simplify shell detection for openterminal 2024-08-25 15:19:53 +02:00
Rysz
c4afbba9bc update.php: do not silence parse errors 2024-08-25 13:16:36 +02:00
Rysz
16089cd927 update.php: shorten var name and improve documentation 2024-08-25 13:13:26 +02:00
Rysz
1ede8e621b update.php: remove unneeded spaces 2024-08-25 08:43:54 +02:00
Rysz
64ead9a127 update.php: additional safeguards 2024-08-25 08:28:40 +02:00
Rysz
ff80906d11 update.php: add #defaultvalues parameter 2024-08-25 07:36:23 +02:00
tom mortensen
8981e8bb15 Merge pull request #1834 from ich777/grub_cpuisolation_fix
GRUB compatibility changes
2024-08-24 09:18:04 -07:00
tom mortensen
83675005d2 Merge pull request #1833 from SimonFair/VM-Unmap-support
Fix vmusage stopping/Unmap Defaults and Fix Multifunction.
2024-08-24 09:17:10 -07:00
SimonFair
4b7f2bfcee Default new disk to unmap. 2024-08-23 07:30:11 +01:00
SimonFair
72ff3c52c0 Unmap Default and Multifuncton
Set default for new VMs to discard="unmap"
Fix BSOD for VMs and Multifunction.
2024-08-22 23:24:18 +01:00
Tom Mortensen
69e11713e5 Dashboard: Soften messages during parity sync/check 2024-08-21 23:28:44 -07:00
desertwitch
67cf2db493 update.php: clarify paths in documentation 2024-08-21 12:38:40 +02:00
desertwitch
631479d27d update.php: follow #file behavior for more versatility 2024-08-21 12:36:56 +02:00
desertwitch
28b3d2ae71 update.php: clarify documentation comment 2024-08-21 12:02:09 +02:00
desertwitch
ec1689dc68 update.php: null coalescing to elvis operator 2024-08-21 11:11:47 +02:00
desertwitch
3615992dc4 update.php: add #defaultfile parameter 2024-08-21 10:51:37 +02:00
d9f83cc76b Fix diagnostics to support GRUB 2024-08-21 07:54:31 +02:00
donbuehl
7e6ad9512d Wrap getUserShell() call with escapeshellarg() for additional security 2024-08-20 09:08:31 +02:00
donbuehl
d7b4dfd44b Fixed missing $ in variable 2024-08-19 22:14:46 +02:00
donbuehl
c62ef28fc3 Refactor getUserShell() for improved clarity and maintainability
- Introduce  variable for better code readability
- Simplify return logic using the default shell variable
- Maintain comprehensive error handling with Throwable
2024-08-19 22:06:41 +02:00
donbuehl
07fa790411 Improve getUserShell() function for accuracy and consistency
- Refine username matching to prevent partial matches
- Use English for syslog error message
2024-08-19 21:49:31 +02:00
donbuehl
fb19a99ad4 Added function getUserShell() to OpenTerminal.php and use it for the execution 2024-08-19 18:16:38 +02:00
d0dcf6c314 Fix for GRUB bootloader 2024-08-19 16:58:31 +02:00
0d925a2471 Fix for GRUB bootloader 2024-08-19 16:54:19 +02:00
SimonFair
2b4eb1abad Fix vmusage stopping when you on a new page on a tab. 2024-08-19 13:16:50 +01:00
tom mortensen
251881d850 Merge pull request #1831 from SimonFair/VM-Unmap-support
Add Unmap Support
2024-08-18 10:34:35 -07:00
tom mortensen
24fce7582c Merge pull request #1828 from mtongnz/network-display-improvements
Network info display improvements (part 2)
2024-08-17 08:28:45 -07:00
SimonFair
b56f3e529c Add Discard option. 2024-08-17 00:34:52 +01:00
tom mortensen
130e3fcd44 Merge pull request #1829 from desertwitch/fix-php-settings
fix inconsistent PHP error reporting defaults (PHPSettings.page)
2024-08-16 09:15:35 -07:00
mtongnz
c1b2bb7435 fix: better display of container LAN IP for ipvlan & macvlan 2024-08-16 18:20:10 +12:00
mtongnz
840e19d322 fix: some networks not showing 2024-08-16 17:35:22 +12:00
SimonFair
2ae85fdd31 Add unmap on VM change. 2024-08-15 22:36:15 +01:00
SimonFair
0db0032648 Add Unmap Support 2024-08-15 19:29:20 +01:00
desertwitch
8d9e2a04c0 PHP constants for better read-/maintainability 2024-08-15 16:49:32 +02:00
desertwitch
31f81349a8 sanitize PHP setting constants for update.php
update.php encapsulates the PHP constants used by the OS default PHP error reporting level with double quotes, which breaks functionality as they are then treated as text. by turning the PHP constants into strings first this problem is avoided.
2024-08-15 16:29:45 +02:00
desertwitch
3de8e05432 fix inconsistent PHP error reporting defaults 2024-08-15 14:08:58 +02:00
Matt
1c019c8f08 fix: display LAN:IP for multiple external networks 2024-08-15 18:50:44 +12:00
Matt
8d76d6f1cc fix: display multiple networks for all types
This commit ensures containers with multiple networks are always displayed.
Previously, networks connected to containers (docker network connect...) don't show
2024-08-15 15:55:01 +12:00
tom mortensen
3e17f35e19 Merge pull request #1826 from zackspear/refactor/registration-page-transfer-ineligible-copy
refactor: registration transfer check ineligible copy
2024-08-14 11:15:46 -07:00
Zack Spear
6f51589547 refactor: registration page transfer check ineligible copy 2024-08-13 17:28:29 -07:00
Zack Spear
b18e734381 chore: update .gitignore for prettier usage 2024-08-13 17:27:26 -07:00
tom mortensen
b5a8223ffe Merge pull request #1820 from Garbee/ssh-key-regex
feat(user-edit): update allowed ssh key encryptions
2024-08-13 12:46:39 -07:00
tom mortensen
936adea879 Merge pull request #1824 from unraid/fix-typo
Fix typo in help text
2024-08-13 12:44:31 -07:00
tom mortensen
1572378824 Merge pull request #1822 from SimonFair/VM-Manager-PHP-Fixes
Add ZFS Checking
2024-08-13 12:39:12 -07:00
Tom Mortensen
0cf3585a0d update error messsage 2024-08-13 12:37:57 -07:00
Tom Mortensen
3f103f2089 DeviceInfo page improvements:
* Present confirmation dialog for Delete Pool operation
* Fix expansion of single device pool to multi-device zfs mirror or btrfs raid-1
2024-08-13 12:28:28 -07:00
Tom Mortensen
ed308c3a69 Display warning along side replacement and expansion devivces on Main if they will be initialized 2024-08-13 12:28:28 -07:00
Tom Mortensen
985d077af5 Samba smb.conf: set "nmbd bind explicit broadcast = no" if NetBIOS enabled 2024-08-13 12:28:28 -07:00
Tom Mortensen
86b8b170d1 Startup improvements in rc.S script:
* Automatically repair boot sector backup
* Detect bad root value in syslinux.cfg
* Explicitly unmount all file systems if cannot continue boot
2024-08-13 12:28:28 -07:00
Tom Mortensen
d351e51f58 remove wol source 2024-08-13 12:28:28 -07:00
tom mortensen
53c1788580 Merge pull request #1821 from Garbee/remove-document-write
fix: replace document write usages
2024-08-13 12:27:42 -07:00
tom mortensen
0870461731 Merge pull request #1818 from ich777/grub_vm_settings_fix
Grub VM settings fix
2024-08-13 10:27:49 -07:00
ljm42
043d2baaf7 Fix typo in help text 2024-08-12 12:21:57 -07:00
SimonFair
32bb9bb6d9 Add ZFS Checking
This will check VM name does not include characters that are not valid for ZFS.
Existing VMs are not modified but will throw error and disable update if invalid characters are found.
2024-08-12 17:18:28 +01:00
Jonathan Garbee
2ff8b77c9d fix: replace document write usages 2024-08-10 15:35:49 +00:00
Jonathan Garbee
654db74167 feat(user-edit): update allowed ssh key encryptions 2024-08-10 14:51:06 +00:00
fb2b66b5b0 Make VM Settings work with grub 2024-08-09 12:38:18 +02:00
663665a61b Make VM Settings work when using GRUB 2024-08-09 12:37:00 +02:00
tom mortensen
c9333ea955 Merge pull request #1616 from mtongnz/network-display-improvements
Network info display improvements
2024-08-08 23:16:15 -07:00
tom mortensen
bad23e7647 Merge pull request #1817 from dlandon/master
Sort users in natural order on shares page.
2024-08-08 09:48:11 -07:00
17909f889e Fix PHP Warning (#3)
- Fix PHP Warnings on Add Container page
2024-08-08 20:32:38 +12:00
8cabad6f0d Changes (#2)
* Changes

- Revert commit #ed5fe721d9cdfeb65148a5f12eebdf35729e1dfb
- Fix php errors

* Update DockerContainers.page

- Change `External IP:Port` to `LAN IP:Port`
2024-08-08 16:58:58 +12:00
dlandon
566113f86c Sort users in natural order. 2024-08-07 16:56:09 -05:00
tom mortensen
21e640184e Merge pull request #1814 from suzukua/master
Fixed an issue where routes could not be saved in languages ​​other t…
2024-08-07 10:07:55 -07:00
suzuki
202196f7d3 Fixed an issue where routes could not be saved in languages ​​other than English
fix  https://forums.unraid.net/bug-reports/stable-releases/%E3%80%9061211%E3%80%91%E3%80%90bug%E3%80%91cannot-save-static-route-r3156/
2024-08-03 22:17:51 +08:00
9c2aa45751 Minor improvements (#1)
* few changes, please test

* Change weird formatting

* Another formatting change

* Fix for `container:` networks

* Hide IPs/Ports when container is not running

* WebUI fix

- generate WebUI links correctly
- don't show WebUI from containers which use a `container:` network
2024-08-03 17:39:00 +12:00
ljm42
33a73b2fb5 Forcibly kill samba if needed 2024-08-02 10:33:34 -07:00
tom mortensen
06735f7a3e Merge pull request #1805 from SimonFair/VM-Manager-PHP-Fixes
Fix delete VM if in a dataset.
2024-08-01 14:18:51 -07:00
tom mortensen
e7f7ef43c0 Merge pull request #1809 from desertwitch/patch-1
update.php: release file pointer after usage
2024-08-01 14:13:53 -07:00
tom mortensen
c5b692e805 Merge pull request #1808 from ich777/overlay2-gui-support
Overlay2 GUI support
2024-08-01 12:30:57 -07:00
SimonFair
6a91f270e3 Fix Audio and PCI for Mutlifunction. 2024-08-01 19:13:14 +01:00
Rysz
6d3a7a3298 release file pointer after usage 2024-08-01 10:53:47 +02:00
f81118ffe3 Remove unnecessary comment 2024-07-31 21:33:50 +02:00
f9107ebe11 Always display storage driver when Docker is active 2024-07-31 12:02:05 +02:00
76f58d2995 overlay2 default 2024-07-31 11:05:54 +02:00
b4722f57aa Set default backingfs type to native for existing installations 2024-07-31 10:59:38 +02:00
3314860d31 Change the default to overlay2 2024-07-31 10:56:03 +02:00
9a6b62ae98 Bugfix for new installations 2024-07-31 10:55:30 +02:00
e0b1612633 Add helptext for docker storage driver when active 2024-07-30 21:26:54 +02:00
1e41ac637d Bugfix for helptexts 2024-07-30 21:26:10 +02:00
858a3aa999 Display storage driver with started array 2024-07-30 21:19:57 +02:00
79c484e2e5 Add helptext for Docker storage driver 2024-07-30 19:22:40 +02:00
49793ff602 Add DOCKER_BACKINGFS with native option 2024-07-30 19:07:49 +02:00
342619a567 Add WebUI option for overlay2
- switch between native and overlay2 storage drivers
2024-07-30 19:05:39 +02:00
mtongnz
27047c8832 fix: improve IP & port display further as per suggestions 2024-07-28 11:18:31 +12:00
tom mortensen
b850940f19 Merge pull request #1793 from jbtwo/fix-ups-settings-page
Fix UPS settings page when config contains empty values
2024-07-27 01:11:47 -07:00
tom mortensen
de3334b0d2 Merge pull request #1803 from bergware/master
Fix broken "show_interfaces" script (take 2)
2024-07-27 01:11:10 -07:00
tom mortensen
373bb9f2ee Merge pull request #1804 from unraid/detect-bad-root-in-syslinux
Detect bad root value in syslinux.cfg
2024-07-27 01:10:26 -07:00
bergware
833194705c Merge remote-tracking branch 'upstream/master' 2024-07-25 18:39:11 +02:00
Justin Brown
392cc77a20 switch to _var function for setting batteryLevel & batteryRuntime 2024-07-24 16:57:35 -04:00
SimonFair
d272bf78ac Fix delete VM if in a dataset. 2024-07-24 21:20:06 +01:00
ljm42
9430366eaf Detect bad root value in syslinux.cfg 2024-07-24 10:58:15 -07:00
bergware
71dc414592 Fix broken "show_interfaces" script (take 2) 2024-07-24 13:57:00 +02:00
Tom Mortensen
2b41f9a8d2 Device Info page:
* Prevent reducing pool slot count unless pool state is NEW_ARRAY
* Permit changing pool file system type only when Stopped
* Add "Delete Pool" button which unassigns all devices of a pool and then removes the pool
* Change button label "Erase" to "Erase Pool"
2024-07-24 02:13:22 -07:00
Tom Mortensen
70c01ec454 Include subpool devices in list of devices to be formatted when appropriate 2024-07-24 02:12:58 -07:00
Tom Mortensen
7840ae6d3c new handling of 'ntp.conf' and 'ntp.conf-' (similar to exports) 2024-07-24 00:41:27 -07:00
Tom Mortensen
5b009dfb39 remove unnecessary symlinks 2024-07-24 00:41:27 -07:00
tom mortensen
5565c02f74 Merge pull request #1796 from desertwitch/desertwitch-patch-1
fix table order breaking when cookie is left malformed
2024-07-24 00:37:19 -07:00
tom mortensen
793289bc7f Merge pull request #1792 from dlandon/master
Fix overlapping text on VPN Manager page; php warning; allow UD disks to show in file picker.
2024-07-24 00:31:21 -07:00
tom mortensen
7d92761860 Merge pull request #1797 from SimonFair/VM-Manager-PHP-Fixes
Fix memory Stats in VM Usage.
2024-07-24 00:29:01 -07:00
tom mortensen
1021adc33b Merge pull request #1799 from dlandon/diagnostocs-ipv6-fix
Diagnostics ipv6 fix
2024-07-24 00:28:11 -07:00
tom mortensen
c9374f7911 Merge pull request #1800 from unraid/use-docs-go-links
Use "go links" when linking to Docs
2024-07-24 00:27:20 -07:00
tom mortensen
73a17a0306 Merge pull request #1802 from bergware/master
Fix broken "show_interface" script
2024-07-24 00:26:44 -07:00
bergware
0729386af9 Fix broken "show_interface" script 2024-07-23 19:41:02 +02:00
bergware
4b8ec6e5a3 Fix broken "show_interface" script 2024-07-23 19:34:40 +02:00
dlandon
ea2fa8a8db Chmod on non-existent file causing php warning. 2024-07-22 09:58:06 -05:00
dlandon
d7e474257c Allow UD disks to be listed in file picker. 2024-07-21 04:55:49 -05:00
mtongnz
4b3e8f2d46 fix: handle webUI link generation correctly 2024-07-20 13:23:56 +12:00
mtongnz
54a6e3dd13 fix: better display of ip & ports to avoid beginner confusion - from suggestions by @ich777 2024-07-20 12:04:30 +12:00
SimonFair
e20f37d936 Update emhttp/plugins/dynamix/nchan/vm_dashusage
Co-authored-by: Shay Levy <levyshay1@gmail.com>
2024-07-19 21:04:17 +01:00
ljm42
4c1c566e78 Add trailing slash to go links
Eliminates an unnecessary redirect
2024-07-19 12:02:00 -07:00
ljm42
a6c50b208a Add trailing slash to go links
Eliminates an unnecessary redirect
2024-07-19 12:00:36 -07:00
SimonFair
9a23761dc8 Update vm_dashusage 2024-07-19 19:44:59 +01:00
dlandon
359334b85a Fix another php error. 2024-07-19 12:55:45 -05:00
SimonFair
f5ed6964dd Update vm_usage 2024-07-19 18:55:03 +01:00
SimonFair
882ee7f911 Hide Max if Current and Max are equal 2024-07-19 18:30:45 +01:00
ljm42
234a749b7f Use "go links" when linking to Docs 2024-07-19 10:01:50 -07:00
dlandon
a9891f557e Merge branch 'unraid:master' into master 2024-07-19 10:33:48 -05:00
dlandon
04640a5708 Anonimize IPv6 addresses with square braces. 2024-07-19 10:31:06 -05:00
SimonFair
fac92be4d4 Fix memory Stats in VM Usage.
Three columns inuse/Current/Maximum
2024-07-19 14:21:09 +01:00
Rysz
817ed5c1c1 fix table order breaking when cookie is left malformed 2024-07-18 22:13:13 +02:00
Tom Mortensen
a4abe0fa55 update firefox symlink 2024-07-18 12:14:35 -07:00
dlandon
6920542d6c Merge branch 'unraid:master' into master 2024-07-18 06:14:40 -05:00
Justin Brown
36f9e7402c fix UPS settings page when config contains empty values 2024-07-16 19:32:30 -04:00
dlandon
cfa547972e Fix overlapping text on VPN Manager page. 2024-07-16 13:24:15 -05:00
tom mortensen
84b5baf402 Merge pull request #1791 from ich777/docker-dashboard-patch
Show Docker RAM usage on Dashboard & minor changes
2024-07-16 10:01:16 -07:00
tom mortensen
1b162e2c21 Merge pull request #1790 from dlandon/master
Fix php warning in device_list; VPN Manager not showing tunnel status.
2024-07-16 10:00:44 -07:00
tom mortensen
75f0c2e4f6 Merge pull request #1788 from ich777/initial-overlay2-support
Initial Docker overlay2 support
2024-07-16 09:59:39 -07:00
tom mortensen
67369622fa Merge pull request #1787 from ich777/ipv6-forward
Add IPv6 forward rule
2024-07-16 09:58:49 -07:00
tom mortensen
17fdfb6f50 Merge pull request #1786 from ich777/proxy-fix
fix path
2024-07-16 09:58:10 -07:00
tom mortensen
9e80fb13c7 Merge pull request #1783 from SimonFair/VM-Manager-PHP-Fixes
Move restore favorites after plugin installs + VM Template formatting for PCI others
2024-07-16 09:57:34 -07:00
tom mortensen
1d6c3f4375 Merge pull request #1782 from zackspear/fix/vm-icon-edit
fix: AddVM & UpdateVM icon selection styles
2024-07-16 09:57:10 -07:00
58c31f4ef6 Show Docker RAM usage on Dashboard
- Add Docker RAM usage to Dashbaord page
- Rename 'Services' to 'System'
- Remove 'usage' suffix from Services naming scheme
2024-07-16 13:57:21 +02:00
dlandon
84b767ddcd Fix php[ warning. 2024-07-15 17:32:11 -05:00
dlandon
32d3f88b44 VPN Manager not showing tunnel status. 2024-07-15 17:28:20 -05:00
Zack Spear
6156a2582f fix: UpdateVM.css temlpate img chooser 2024-07-15 13:43:22 -07:00
SimonFair
8a55228b8e Update VMedit.php 2024-07-15 18:59:56 +01:00
SimonFair
fe7ab1fc43 FIX Issue with VM Template formatting for other PCI 2024-07-15 18:41:29 +01:00
30492ed2f2 Initial Docker overlay2 support
- override filesystem type to overlay2 if `DOCKER_BACKINGFS` in docker.cfg is set to `overlay2`
2024-07-15 17:40:10 +02:00
da1ef5c0e0 IPv6 forward
- Add `IPV6_FORWARD` to rc.docker and set it to `ACCEPT` instead of `DROP`
2024-07-15 17:22:48 +02:00
93054c2091 fix path
- fix path for generated proxy file
2024-07-15 15:47:50 +02:00
SimonFair
f2abfaf292 Move restore favorites after plugin installs 2024-07-13 15:33:37 +01:00
Zack Spear
5a42314c60 fix: AddVM & UpdateVM icon selection styles 2024-07-12 14:55:00 -07:00
Tom Mortensen
bbed6047e3 Introduce 'Allocation profile' config setting for specifying pool/subpool data layout
Fix: spindown delay setting missing for parity devices
2024-07-12 11:53:32 -07:00
Tom Mortensen
a7f6ac7389 maybe needed in future 2024-07-10 23:01:09 -07:00
Tom Mortensen
f7748f7619 make executable 2024-07-10 23:00:20 -07:00
Tom Mortensen
d4968e1b19 simplify display of file system type on Main 2024-07-10 22:59:53 -07:00
Tom Mortensen
fb680469ac fix git glitch which resulted in file not updated 2024-07-10 22:58:42 -07:00
tom mortensen
eaabbec7e0 Merge pull request #1780 from unraid/fix-trim
Make trim consistent between "trim now" and cron job
2024-07-10 21:41:39 -07:00
ljm42
693a0260af Make trim consistent between "Run now" and cron job 2024-07-10 17:59:15 -07:00
tom mortensen
130c9c6373 Merge pull request #1779 from ich777/ich777-agents-fix
Fix for notification agents
2024-07-10 14:22:17 -07:00
73c264e9fe Fix
- Fix PushBits and Pushbullet not showing up
2024-07-10 14:47:06 +02:00
667741129a Fix
- Fix PushBits and Pushbullet not showing up
2024-07-10 14:45:49 +02:00
tom mortensen
42fe45595f Merge pull request #1778 from dlandon/master
Parity check does not show completed on array operations page.
2024-07-09 13:44:58 -07:00
dlandon
ed9b8322d4 Fix clobbering CAs $cfg variable. 2024-07-09 14:57:58 -05:00
dlandon
cfb2daa531 Update help text for PID Limit. 2024-07-09 06:37:58 -05:00
dlandon
694d35b412 Parity check does not show completed on array operations page. 2024-07-09 06:21:29 -05:00
tom mortensen
4011d942ce Merge pull request #1775 from dlandon/master
Mover status button on 'Array Operation' page; Docker PID Limit setting.
2024-07-08 09:27:58 -07:00
tom mortensen
5b95526e84 Merge pull request #1774 from SimonFair/VM-Manager-PHP-Fixes
Updates to rc.apcupsd and VM updates
2024-07-08 09:26:28 -07:00
SimonFair
667418e656 Fix for multiple nics when bridge mode changes. 2024-07-07 15:39:31 +01:00
SimonFair
c0d4e1de1b Support Blockpull and Blockcommit for stopped VMs. 2024-07-07 14:57:04 +01:00
SimonFair
ec7ec769f4 Fix for guest not init display. 2024-07-07 14:27:59 +01:00
dlandon
1524f2d69a Add "Docker PID Limit" to limit docker container PIDs. 2024-07-05 03:47:51 -05:00
dlandon
c9109d61bf Set default value for DOCKER_PID_LIMIT. 2024-07-05 03:47:09 -05:00
dlandon
a9a2b73849 Add help text for PID limit. 2024-07-05 03:46:29 -05:00
Tom Mortensen
b1b76d8ffa set_proxy script moved 2024-07-04 09:31:58 -07:00
SimonFair
891ee6beff Update rc.apcupsd 2024-07-03 22:40:50 +01:00
SimonFair
bd4eb4189b remove config check 2024-07-03 22:39:40 +01:00
dlandon
24fd56fff3 Monitor the var 'shareMoverActive' instead of the mover.pid file. 2024-07-03 16:12:03 -05:00
SimonFair
45d71932a1 Updates to rc.apcupsd 2024-07-03 21:39:51 +01:00
tom mortensen
f8ad3105c7 Merge pull request #1773 from dlandon/master
Parity display on dashboard.
2024-07-03 11:06:19 -07:00
dlandon
a8adba6728 Dashboard doesn't show all of parity status. 2024-07-03 12:19:38 -05:00
tom mortensen
6ab9f0a017 Merge pull request #1772 from dlandon/master
Move set_proxy script; dashboard not showing correct parity info.
2024-07-03 05:50:46 -07:00
dlandon
4904a5021c Dashboard not showing correct parity info. 2024-07-03 05:51:05 -05:00
dlandon
859e697413 Make script executable 2024-07-02 15:49:16 -05:00
dlandon
c60cbb5c6e Move set_proxy script. 2024-07-02 15:37:50 -05:00
tom mortensen
4a3a1f526d Merge pull request #1770 from dlandon/master
Fix tile management showing a blank dialog.
2024-07-02 08:49:23 -07:00
tom mortensen
38758462f7 Merge pull request #1769 from SimonFair/VM-Manager-PHP-Fixes
Fix broken helptext
2024-07-02 08:48:07 -07:00
dlandon
7e8b8e0a0a Fix tile management showing a blank dialog. 2024-07-01 14:33:12 -05:00
Tom Mortensen
2f2f50d178 Imp: Speed things up: use AVAHI reload instead of restart
Reduce size of samba secrets.tdb file when saving to flash.
2024-07-01 12:32:41 -07:00
Tom Mortensen
69d2996c31 Fix: ZFS striped pool shows as raidz, but it's still a stripe 2024-07-01 12:31:38 -07:00
SimonFair
f4a8bf0d81 Fix broken helptext 2024-07-01 20:16:25 +01:00
tom mortensen
9d63b5ecf8 Merge pull request #1768 from dlandon/master
Fix share edit updates failing with languages other that English.
2024-07-01 10:48:04 -07:00
dlandon
95353c143a Fix translation of 'Apply' when performing 'POST' that blocks updating; some code cleanup to combine messages and variable scope. 2024-07-01 12:12:09 -05:00
tom mortensen
925fff60a9 Merge pull request #1767 from SimonFair/VM-Manager-PHP-Fixes
Change to be enabled rather than disabled.
2024-06-30 17:12:48 -07:00
SimonFair
8965860224 Change to be enabled rather than disabled. 2024-06-30 21:03:03 +01:00
tom mortensen
9d15302bf0 Merge pull request #1766 from dlandon/master
Remove debug from share edit used for subpools removed from primary and secondary drop downs; fix incorrect commit.
2024-06-30 10:35:47 -07:00
dlandon
6bb27eec3a Fix incorrect commit to fix exit status not returned. 2024-06-30 12:27:43 -05:00
dlandon
84ad25fe18 Remove debug. 2024-06-30 11:40:59 -05:00
tom mortensen
9f9429424f Merge pull request #1763 from SimonFair/VM-Manager-PHP-Fixes
VM Remove subpools, Disable Favorites.
2024-06-30 08:53:17 -07:00
tom mortensen
04e0fac01c Merge pull request #1765 from dlandon/master
Xfs check not detecting file issues; remove subpools from share edit.
2024-06-30 08:53:01 -07:00
dlandon
27973b8e34 Remove sub pools from available pools in primary and secondary storage. 2024-06-30 09:34:46 -05:00
dlandon
d6f8206275 Merge branch 'master' of https://github.com/dlandon/webgui 2024-06-30 09:26:59 -05:00
dlandon
cd1b4031df Xfs not properly showing issues from exit code. 2024-06-30 09:26:26 -05:00
dlandon
44dfe5a7b1 Revert "Properly show when parity operation is complete."
This reverts commit 1ae58dc360.
2024-06-30 08:34:56 -05:00
dlandon
1ae58dc360 Properly show when parity operation is complete. 2024-06-30 07:49:04 -05:00
dlandon
e0c0440d69 Fix exit status failing that results in xfs issues not being detected. 2024-06-30 07:43:56 -05:00
SimonFair
282cfc41ca VM Remove subpools, Disable Favorites. 2024-06-29 19:29:20 +01:00
dlandon
26f261e93b Merge remote-tracking branch 'upstream/master' 2024-06-29 08:13:47 -05:00
tom mortensen
65e67856bb Merge pull request #1762 from SimonFair/VM-Manager-PHP-Fixes
PHP Fixes and opentab for VM URL
2024-06-28 18:06:49 -07:00
tom mortensen
b73327d4b7 Merge pull request #1761 from dlandon/master
Parity check not showing correct results.
2024-06-28 18:06:09 -07:00
SimonFair
3fdcbf125d PHP Fixes and opentab for VM URL 2024-06-27 20:17:05 +01:00
dlandon
941778d288 Parity check sometimes shows last historical check and not the current parity check just completed. 2024-06-26 16:11:36 -05:00
Tom Mortensen
90cbff0058 Docker and libvirt disabled by default.
Permit removing unRAID array if no devices assigned.
2024-06-24 23:28:52 -07:00
tom mortensen
30b76de196 Merge pull request #1760 from dlandon/master
Fix Syslog memory error on large log files and php warning.
2024-06-24 11:05:59 -07:00
dlandon
7f681fe2fa Fix php warning about undefined variable. 2024-06-23 06:39:36 -05:00
dlandon
72651576f4 Increase memory limit to handle large log files. 2024-06-23 06:39:01 -05:00
dlandon
2ea62cca3d Merge remote-tracking branch 'upstream/master' 2024-06-19 07:57:52 -05:00
Tom Mortensen
20f34bc0b9 mover: bettern handling cases of primary/secondary configured but not present 2024-06-18 11:15:40 -07:00
tom mortensen
c2a4e68196 Merge pull request #1758 from dlandon/master
Minor Device Info page fixes.
2024-06-17 11:17:54 -07:00
tom mortensen
b75c420ce0 Merge pull request #1759 from othyn/master
Behaviour fix for #1743 : "Add in the ability to set a manual UPS capacity override in `dynamix.apcupsd`"
2024-06-17 11:17:21 -07:00
Ben
da18a7e213 Re-implementation of #1743 based on the received feedback. This implementation is far more robust, as it injects the NOMPOWER value into the existing code, allowing the existing Unraid GUI code to interpret and display the values in the same manner 2024-06-15 11:17:48 +01:00
dlandon
f6ae173275 xfs_repair not running in the background. 2024-06-13 07:12:53 -05:00
dlandon
dd9474ef55 Can only show zfs pool information when disk is mounted. 2024-06-13 06:42:48 -05:00
tom mortensen
7512161e1a Merge pull request #1757 from dlandon/master
Zfs pool information and fix btrfs stats and usage displays and CPU pinning post too many variables php error.
2024-06-11 09:33:54 -07:00
tom mortensen
68fe9a9399 Merge pull request #1756 from SimonFair/VM-GUI-XML-inline-edit
Fix typo in helptext.
2024-06-11 09:33:31 -07:00
tom mortensen
78826be39d Merge pull request #1755 from Squidly271/patch-41
Update Lincstation icon + add Laptop
2024-06-11 09:33:15 -07:00
dlandon
c4eff321f2 Use atomic file write. 2024-06-10 13:21:00 -05:00
dlandon
6d2de179a0 Update DeviceInfo.page 2024-06-10 12:59:57 -05:00
dlandon
1da8308b81 Revert "Update DeviceInfo.page"
This reverts commit 243b838d80.
2024-06-10 12:47:32 -05:00
dlandon
243b838d80 Update DeviceInfo.page 2024-06-10 12:39:30 -05:00
dlandon
f93095d552 Update UpdateTwo.php 2024-06-10 12:36:14 -05:00
dlandon
eed5a94d03 Fix php error of too many variables in post. 2024-06-10 09:50:09 -05:00
dlandon
5c33796801 Merge remote-tracking branch 'upstream/master' 2024-06-10 03:50:40 -05:00
dlandon
3e1e33094c Add zfs pool information and deal with html special characters. 2024-06-10 03:48:28 -05:00
Squidly271
63d4bab0d1 Update default-cases.css 2024-06-08 08:08:36 -04:00
Squidly271
dbd1c9f7b1 Add laptop to font 2024-06-08 08:07:10 -04:00
SimonFair
446111b0b1 Fix typo in helptext. 2024-06-08 07:25:22 +01:00
Squidly271
be0dcff031 Update cases 2024-06-07 19:11:06 -04:00
Squidly271
cdce8e048a Update default-cases.css 2024-06-07 19:08:27 -04:00
Tom Mortensen
2494d1735e set reasonable defaults for zfs/btrfs fs profiles 2024-06-07 12:33:01 -07:00
Tom Mortensen
8328461cf5 Instead of fs used/free display 'device is part of pool' for zfs subpool devices 2024-06-07 12:32:08 -07:00
dlandon
1cb3134217 Merge remote-tracking branch 'upstream/master' 2024-06-06 16:07:12 -05:00
tom mortensen
18872afdd0 Merge pull request #1754 from dlandon/master
Add more info to btrfs pools and more user friendly xfs repairs.
2024-06-06 10:42:13 -07:00
dlandon
fa5b932c13 Add more info to btrfs pools and more user friendly xfs repairs. 2024-06-05 15:15:37 -05:00
tom mortensen
aa489bb92d Merge pull request #1753 from SimonFair/WebUI
Fix disk device name as string.
2024-06-05 11:42:48 -07:00
SimonFair
22124123a9 Return dev name as string. 2024-06-05 17:17:48 +01:00
tom mortensen
419b9a77e6 Merge pull request #1752 from SimonFair/WebUI
Add nogpu option.
2024-06-04 14:18:35 -07:00
tom mortensen
191f68642c Merge pull request #1743 from othyn/master
Add in the ability to set a manual UPS capacity override in `dynamix.apcupsd`
2024-06-04 14:14:37 -07:00
SimonFair
cfa1ec4860 Add nogpu 2024-06-04 17:39:15 +01:00
tom mortensen
955ba7f0a6 Merge pull request #1750 from SimonFair/WebUI
Create WebUI option in VM Template.
2024-06-03 13:13:34 -07:00
SimonFair
8354a5c6ac Code tidy 2024-06-02 16:14:18 +01:00
SimonFair
392811005c Update text. 2024-06-02 16:02:45 +01:00
SimonFair
b2916424be Add rdp menu option. 2024-06-02 15:06:58 +01:00
SimonFair
b35ce11344 Change get VM IP to a function. 2024-06-02 15:06:11 +01:00
SimonFair
91bc84a97a Replace spaces in VM names 2024-06-01 15:41:23 +01:00
SimonFair
e61132fe69 Create WebUI option for VMs 2024-06-01 15:25:30 +01:00
SimonFair
15af3fb6eb Fix zfs dir create if parent is a dir rather than dataset. 2024-05-31 15:10:24 +01:00
Tom Mortensen
c1493a61d7 fix messaging on Main when array Stopped 2024-05-30 14:39:02 -07:00
tom mortensen
a823ecf79c Merge pull request #1706 from SimonFair/New-VM-interface
New vm interface template with inline xml view
2024-05-30 12:50:12 -07:00
tom mortensen
50a27242ab Merge pull request #1742 from dlandon/master
Fix detection of no mountable devices and detection of an empty share.
2024-05-30 12:49:25 -07:00
tom mortensen
7656c9a55c Merge pull request #1744 from SimonFair/Enable-subvol-or-dataset-for-VMs
Create error message for ZFS with no memory dump.
2024-05-30 12:48:15 -07:00
tom mortensen
15913a6c64 Merge pull request #1745 from unraid/fix-dashboard-buttons
Dashboard: Fix Array Start/Stop buttons
2024-05-30 12:47:29 -07:00
tom mortensen
f8ce0a6e80 Merge pull request #1746 from zackspear/feat/downgrade-os-next-to-stable
feat: downgrade os next to stable
2024-05-30 12:45:02 -07:00
tom mortensen
470e02ed55 Merge pull request #1747 from Squidly271/patch-40
Update file_put_contents_atomic
2024-05-30 12:43:16 -07:00
SimonFair
40ac4fe6fe Disable xmlother 2024-05-30 13:03:14 +01:00
dlandon
ef795438cc Merge remote-tracking branch 'upstream/master' 2024-05-29 06:27:03 -05:00
Squidly271
7a968eac84 Update file_put_contents_atomic 2024-05-28 20:15:20 -04:00
Zack Spear
3ce94f664b feat: downgrade os next to stable 2024-05-28 13:06:05 -07:00
ljm42
5daacf1e97 Dashboard: Fix Array Start/Stop buttons 2024-05-28 12:19:43 -07:00
dlandon
e621ccebb1 Primary only pool needs to use the primary device full size for floor calculations. 2024-05-27 13:38:54 -05:00
Ben
e28d4a32fb Add in the ability to set a manual UPS capacity override in dynamix.apcupsd, so that Nominal Power can still be estimated based on the load percentage for UPS's that don't report their NOMPOWER 2024-05-27 19:19:04 +01:00
dlandon
f6427a3361 Fix logic to determine a share is empty and when no mountable devices found. 2024-05-27 06:51:41 -05:00
dlandon
91e14b22db Fix detection of no mountable devices. 2024-05-27 06:49:52 -05:00
dlandon
095b931dad Code cleanuo. 2024-05-27 06:49:05 -05:00
SimonFair
5303b18462 Update VMedit.php 2024-05-27 11:00:39 +01:00
SimonFair
7bdb5eeb03 Update Custom.form.php 2024-05-27 10:49:32 +01:00
SimonFair
e6ff7a5d7f Updates 2024-05-27 10:43:27 +01:00
SimonFair
4fcf899c5a Merge remote-tracking branch 'upstream/master' into New-VM-interface 2024-05-27 09:12:12 +01:00
SimonFair
d9325649bb Create error message for ZFS with no memory dunp. 2024-05-27 08:59:40 +01:00
Tom Mortensen
0f22fe77e6 support array status ERROR:NO_DEVICES 2024-05-26 12:16:42 -07:00
Tom Mortensen
45c1cab4b5 add mover function to move the shares off a selected array disk onto other array disks 2024-05-26 12:15:49 -07:00
tom mortensen
e29de3c3e5 Merge pull request #1740 from SimonFair/Enable-subvol-or-dataset-for-VMs
VM Bug fixes.
2024-05-26 11:55:32 -07:00
tom mortensen
a757fe0fe6 Merge pull request #1741 from dlandon/master
Fixes from extensive testing.
2024-05-26 10:37:21 -07:00
dlandon
55c79439f3 Add language translation to missing pool messages; correct backwards prefer mover message. 2024-05-26 11:40:46 -05:00
dlandon
32c769e6bd Fixes from extensive testing. 2024-05-26 08:39:31 -05:00
SimonFair
a6c0369444 Fix overwrite of xml if user template name is not changed. 2024-05-26 14:32:35 +01:00
SimonFair
74ee77521e Fix to use template machine type rather than default to windows default i440 2024-05-26 09:21:20 +01:00
SimonFair
290d4da90a Updates to my_mkdir. 2024-05-25 20:24:20 +01:00
SimonFair
efd598c8f8 Fix templates broken by evdevs. 2024-05-25 19:56:43 +01:00
tom mortensen
19be69461e Merge pull request #1739 from unraid/feat-array-optional2
When no array, hide parity check history details
2024-05-24 16:32:51 -07:00
ljm42
cf6f3acb3a When no array, hide parity check history details 2024-05-24 11:34:57 -07:00
tom mortensen
b14922734a Merge pull request #1736 from dlandon/master
Share configuration changes for "array optional" feature and a few bug fixes
2024-05-23 23:12:44 -07:00
tom mortensen
9aa50b1b1d Merge pull request #1737 from SimonFair/Enable-subvol-or-dataset-for-VMs
Update my_mkdir and VMs to use my_mkdir
2024-05-23 23:11:27 -07:00
tom mortensen
24d5ed5f1b Merge pull request #1738 from unraid/fix-notify-subject
Notifications: remove html entities from subject in email/agents
2024-05-23 23:10:56 -07:00
dlandon
a2d35294d3 Floor calculation needs to be based on secondary pool, not primary pool. 2024-05-23 18:49:42 -05:00
ljm42
73b3829d61 Notifications: remove html entities from subject used by email and agents 2024-05-23 16:17:00 -07:00
dlandon
7b568c2aa1 Shares set to 'prefer' when set up in an array will work when no array is configured. 2024-05-23 16:51:01 -05:00
SimonFair
f76337c97f Update VMs to use my_mkdir 2024-05-23 21:43:52 +01:00
dlandon
44e74e15d3 Show all array shares when in poolsOnly mode so user can see the shares that need fixing. 2024-05-23 13:59:11 -05:00
SimonFair
3ec2a92b41 Update my_mkdir 2024-05-23 19:22:29 +01:00
dlandon
e256fa8313 Fixes for dealing with share predefined for array use that are dealt with differently when there are array disks. 2024-05-23 10:57:07 -05:00
dlandon
ad2e98ea46 Handle the case when switching to no array, and an array 'prefer' move setting is set. 2024-05-23 09:32:58 -05:00
dlandon
ed1ee47ce4 Changes to support array optional feature. 2024-05-23 08:44:10 -05:00
dlandon
cce6b7ea92 Change no array detection. 2024-05-23 08:43:31 -05:00
dlandon
1d5ff688ba Change no array detection. 2024-05-23 06:55:13 -05:00
Tom Mortensen
81e48a2291 small array slots dropdown correction 2024-05-22 21:42:06 -07:00
tom mortensen
3deacb643d Merge pull request #1735 from unraid/feat-array-optional
Allow the Array to be optional
2024-05-22 21:04:57 -07:00
ljm42
a4f6b7dcad Allow the Array to be optional 2024-05-22 15:43:58 -07:00
Tom Mortensen
fecd6505af mover: support pool as secondary 2024-05-22 11:00:37 -07:00
SimonFair
6938fbb992 Update libvirt_helpers.php 2024-05-22 17:19:28 +01:00
SimonFair
8d1478a06e Merge remote-tracking branch 'upstream/master' into New-VM-interface 2024-05-22 13:44:15 +01:00
SimonFair
964d083551 Updates 2024-05-22 13:36:35 +01:00
tom mortensen
70a24418b1 Merge pull request #1734 from SimonFair/Snapshot-logging
VM Updates
2024-05-21 09:21:47 -07:00
SimonFair
db094cdf89 Set Virtual GPU default keyboard to no map. 2024-05-20 19:12:11 +01:00
dlandon
05f6afd1a2 Sanitize the model text field. 2024-05-20 11:23:16 -05:00
SimonFair
3e37b4a27d Fix for snapshot removal if active volume and vm has spaces in name. 2024-05-20 17:20:14 +01:00
dlandon
bdc9ef9782 Remove double quote and forward slashes from description. 2024-05-20 08:42:43 -05:00
SimonFair
215d16af41 Set error if trying to clone VM with snaps. 2024-05-19 16:21:36 +01:00
dlandon
dcb1e43d21 Remove test code. 2024-05-19 08:04:13 -05:00
dlandon
a5cab82c29 Fix detection of unmountable disk when checking for no mountable disks . 2024-05-19 07:05:51 -05:00
Tom Mortensen
280e7a52cd Change zfs profile text 'raid0' to 'stripe' 2024-05-18 18:50:55 -07:00
Tom Mortensen
f0d4c00389 Create meaningful zfs subpool descriptions 2024-05-18 18:50:16 -07:00
tom mortensen
3301357979 Merge pull request #1732 from Squidly271/patch-39
Use atomic writes for updates of config files
2024-05-18 10:42:41 -07:00
tom mortensen
7701f10ef4 Merge pull request #1733 from SimonFair/Snapshot-logging
Fixes for exclusive shares for VM Clone.
2024-05-18 10:41:47 -07:00
SimonFair
ab41b013e2 Fixes for exclusive shares for VM Clone. 2024-05-18 16:04:40 +01:00
Squidly271
04ef869aba Refactor 2024-05-18 10:28:43 -04:00
Squidly271
1be0380f36 Update update.php 2024-05-18 09:46:26 -04:00
Squidly271
8d4c007226 Update Wrappers.php 2024-05-18 09:43:28 -04:00
tom mortensen
f5e5ae2d28 Merge pull request #1731 from SimonFair/Snapshot-logging
Add logging for Revert and Snapshot.
2024-05-17 15:22:31 -07:00
tom mortensen
41363509e2 Merge pull request #1730 from zackspear/feat/web-component-enhancements
feat: web component enhancements – downgrades, updates, and registration
2024-05-17 15:21:53 -07:00
tom mortensen
59835e14eb Merge pull request #1729 from dlandon/master
Fix share floor calculation when the share is array only; fix detection of no mountable devices when adding shares
2024-05-17 15:21:37 -07:00
SimonFair
d6eb51f502 Add logging for Revert and Snapshot. 2024-05-17 19:04:46 +01:00
dlandon
cebe945e81 Refactir siome Java Script code for readability. 2024-05-16 14:42:30 -05:00
dlandon
7532448241 Code cleanup and add safeName() to cleanup up share name before applying settings. 2024-05-16 13:36:40 -05:00
dlandon
f184a79e85 Changes to address proper share floor calculations. 2024-05-16 13:31:00 -05:00
Zack Spear
45308bc7cb feat: web component enhancements 2024-05-14 16:16:26 -07:00
dlandon
e988ef55fc Fix share floor calculation for pool disks. 2024-05-14 09:31:55 -05:00
dlandon
4cf3e39add Add validity check to share floor to limit to manual entry to less than max free on smallest disk. 2024-05-14 05:31:17 -05:00
dlandon
d85d68de2e Exclude disks that have no device designation - disks are not assigned yet. 2024-05-13 18:15:57 -05:00
dlandon
6790400629 Fix share floor calculation when the share is array only. 2024-05-13 13:02:27 -05:00
Tom Mortensen
7f77338b3d remove 'x' bit from ./local/etc/rc.dnsmasq 2024-05-13 10:59:38 -07:00
Tom Mortensen
70d3d5a656 fix: Present warning text for pool replacement devices (that they will be overwritten) 2024-05-13 10:59:04 -07:00
tom mortensen
69bd331d2d Merge pull request #1727 from dlandon/master
Fix detection of no mountable disks available.
2024-05-13 10:02:09 -07:00
tom mortensen
c44beb2eb7 Merge pull request #1728 from SimonFair/Fix-VM-disk-error
Update VMUsageStats.page
2024-05-13 10:01:53 -07:00
SimonFair
2d136461fd Update VMUsageStats.page 2024-05-13 17:38:25 +01:00
dlandon
414dddb008 Fix detection of no mountable disks available. 2024-05-12 20:11:31 -05:00
Tom Mortensen
894bc28aaa Present warning text for pool replacement devices (that they will be overwritten) 2024-05-12 09:55:04 -07:00
tom mortensen
8bf3cae742 Merge pull request #1720 from dlandon/master
Disable "Add Share" button when there are no mountable array disks; disable Reiserfs selections; add multi line NFS Rule.
2024-05-11 21:20:56 -07:00
tom mortensen
86a014f82e Merge pull request #1721 from SimonFair/Fix-VM-disk-error
Fix expand evdev options
2024-05-11 21:18:08 -07:00
tom mortensen
91edca4576 Merge pull request #1724 from Squidly271/agents
Move notication agents to individual xml files
2024-05-11 21:17:23 -07:00
tom mortensen
1c4f5983af Merge pull request #1725 from Squidly271/HearNoEvilSeeNoEvilSpeakNoEvil
Add lincstation n1 to to cases
2024-05-11 21:15:42 -07:00
dlandon
f933c288e9 Add placeholder to help user understand rules. 2024-05-11 08:14:56 -05:00
Squidly271
dd0cf7f2fa Remove semicolon before anyone notices 2024-05-11 08:21:27 -04:00
Squidly271
939a30774a Add lincstation n1 to to cases 2024-05-11 08:17:41 -04:00
dlandon
6234c5edc0 Add multi line Rule. 2024-05-11 04:08:27 -05:00
dlandon
b34fe9838a Disable Reiserfs selections in drop down. 2024-05-11 04:03:44 -05:00
dlandon
f65780a67e Can never schedule a correcting parity check. 2024-05-10 18:54:49 -05:00
dlandon
80e5481de9 Revert "Can never schedule a correcting parity check."
This reverts commit 40c25d9d18.
2024-05-10 18:54:24 -05:00
dlandon
40c25d9d18 Can never schedule a correcting parity check. 2024-05-10 18:20:37 -05:00
SimonFair
5542b65e45 Update VMUsageStats.page 2024-05-10 12:18:38 +01:00
SimonFair
70760a302c Update Custom.form.php 2024-05-09 15:56:56 +01:00
Squidly271
0431343070 Delete emhttp/plugins/dynamix/include/NotificationAgents.xml 2024-05-08 21:01:18 -04:00
Squidly271
32f1c8c3ec Update NotificationAgents.page 2024-05-08 20:57:42 -04:00
Squidly271
8f8da76bf3 Add files via upload 2024-05-08 20:56:47 -04:00
SimonFair
58f5fb269b Fix expand evdev options 2024-05-08 21:09:30 +01:00
dlandon
9a76f69f5d Display message and disable add share button if there are no mountable array disks. 2024-05-08 09:59:41 -05:00
dlandon
dac9d237ee Merge remote-tracking branch 'upstream/master' 2024-05-08 09:43:32 -05:00
tom mortensen
f492ee8f7f Merge pull request #1709 from dlandon/master
Exclude certain folders from the dropdown on /mnt/.
2024-05-07 17:02:27 -07:00
tom mortensen
3cc0bf7e90 Merge pull request #1714 from unraid/fix-curl2
in http_get_contents, detect and recover from curl error 23
2024-05-07 17:02:00 -07:00
tom mortensen
bf92bdb1af Merge pull request #1716 from SimonFair/Fix-VM-disk-error
Various VM Manager Fixes
2024-05-07 17:01:25 -07:00
tom mortensen
7fdb5cb5be Merge pull request #1717 from baumerdev/fix_readfile_on_empty_files
Fix Error 500 on login / fix read file on empty files
2024-05-07 16:59:02 -07:00
SimonFair
c45dd68e08 Update VMUsageStats.page 2024-05-07 20:28:27 +01:00
Markus Baumer
8b5eb3f66d Fix read file on empty files 2024-05-07 20:38:43 +02:00
Tom Mortensen
43ae4c785d passwd file handling correction 2024-05-07 07:36:39 -07:00
ljm42
8da53df357 in http_get_contents, include a useragent 2024-05-06 14:06:40 -07:00
SimonFair
b4a3a90a46 Add evdev passthru. 2024-05-06 20:44:44 +01:00
SimonFair
072e3512e0 Various VM Manager Fixes
Fix VM memory size values on VM Usage
Fix issue with auto showing for QCOW2 files not in a VM path, should be manual
2024-05-06 12:45:41 +01:00
ljm42
ae8feb2dbc in http_get_contents, detect and recover from curl error 23
change from null to "deflate"
2024-05-04 15:58:35 -07:00
tom mortensen
f901cc9d4e Merge pull request #1713 from unraid/fix-add-local-to-hosts
hosts file improvements
2024-05-02 17:36:45 -07:00
ljm42
a8f0e3ec19 When avahidaemon running, add name.local to hosts file 2024-05-02 15:19:49 -07:00
ljm42
2db31b2012 Remove keys.lime-technology.com from hosts file 2024-05-02 14:49:31 -07:00
tom mortensen
85d1a2f6f5 Merge pull request #1705 from almightyYantao/patch-1
Add Wxwork Notification Agent
2024-05-02 14:07:41 -07:00
dlandon
9296e6297c Be sure /mnt/user is available before using it as root in file picker. 2024-05-02 08:39:53 -05:00
dlandon
245e6413cb Exclude folders from /mnt/ and .Recycle.Bin from all folders. 2024-05-02 08:07:27 -05:00
dlandon
4f82b16fdd Revert to minimized version. 2024-05-02 08:06:46 -05:00
dlandon
a90d083cb0 Revert excluded folders. 2024-05-02 08:06:20 -05:00
dlandon
efe372d1d9 Change variables back to the original plugin variables. 2024-05-01 04:58:17 -05:00
tom mortensen
995a95f053 Merge pull request #1712 from ich777/ich777-patch-1
Update rc.S
2024-04-30 22:05:13 -07:00
dlandon
0c32fe5d4d Change root folder on isos to /mnt/user. 2024-04-30 06:24:34 -05:00
f8ff2333bb Update rc.S
- remove wsync from XFS mount to prevent WebGUI from freezing during heavy I/O on /boot
2024-04-30 07:55:28 +02:00
dlandon
ba9bef985c Fix misspelled variable. 2024-04-29 17:58:39 -05:00
Tom Mortensen
45cfa13e14 changes to include '/bin' in repo 2024-04-29 12:43:24 -07:00
tom mortensen
424b5cb121 Merge pull request #1711 from unraid/fix-curl
In http_get_contents, detect and recover from curl error 23
2024-04-29 09:14:53 -07:00
ljm42
d1e5f3bb10 rc.local - be consistent with backup extension 2024-04-28 16:37:39 -07:00
ljm42
e6441a8345 in http_get_contents, detect and recover from curl error 23 2024-04-28 16:12:40 -07:00
tom mortensen
43c71ec2da Merge pull request #1710 from SimonFair/XML-Windows-Size
Fix QEMU command line expanding if no data.
2024-04-28 08:33:56 -07:00
dlandon
33b27f0a71 Put list of folders to be excluded in the file picker dropdown in a php variable for greater flexibility to make changes. 2024-04-27 11:13:59 -05:00
dlandon
90eb25f114 Change commenting. 2024-04-27 06:42:29 -05:00
SimonFair
71f99155b8 Merge remote-tracking branch 'upstream/master' into XML-Windows-Size 2024-04-27 10:09:06 +01:00
SimonFair
cb48e16845 Fix QEMU command line expanding if no data.
Rework of XML mobile page size.
2024-04-27 10:04:10 +01:00
dlandon
ff2328ddca Add pickexclude to file tree operations so folders can be excluded to minimize confusion. 2024-04-26 16:44:18 -05:00
SimonFair
b0680ee1e1 Update VMedit.php 2024-04-26 18:36:41 +01:00
tom mortensen
c8b9f1c9cc Merge pull request #1708 from SimonFair/Add-Support-for-QEMU-override-in-xml
Add qemu:override support
2024-04-26 06:38:40 -07:00
SimonFair
863afd348d Format XML for new VM 2024-04-26 10:15:41 +01:00
SimonFair
ae285176a9 Update WIP 2024-04-26 08:35:02 +01:00
SimonFair
d9588b7c83 Add qemu:override support 2024-04-25 18:53:55 +01:00
tom mortensen
f79f907923 Merge pull request #1707 from SimonFair/XML-Windows-Size
Fix mobile devices VM XML View
2024-04-24 07:30:13 -07:00
SimonFair
a5b7247d88 Fix mobile devices 2024-04-22 22:02:33 +01:00
Tom Mortensen
2a6c09f9c9 better handling of marking form fields 'disabled' 2024-04-22 11:51:07 -07:00
tom mortensen
b8400d4395 Merge pull request #1704 from SimonFair/XML-Windows-Size
Fit XML window to page size
2024-04-21 08:34:02 -07:00
SimonFair
191c067465 Update code 2024-04-21 11:34:09 +01:00
Alimighty.Yantao
511a8e47ac Add Wxwork Notification Agent
新增企业微信消息通知,在国内还是这些用的较多。

The new enterprise wechat message notification is still more used in China.
2024-04-20 17:22:12 +08:00
SimonFair
2bec253098 Update Custom.form.php 2024-04-19 15:25:43 +01:00
SimonFair
b21437cf5c Update Custom.formXML.php 2024-04-15 07:01:09 +01:00
SimonFair
da7749725f Merge remote-tracking branch 'upstream/master' into New-VM-interface 2024-04-13 07:58:36 +01:00
tom mortensen
7cce87baa2 Merge pull request #1695 from dlandon/master
Add password encryption and rewrite set_proxy script in php
2024-04-12 14:01:39 -07:00
tom mortensen
c3d232efc0 Merge pull request #1700 from SimonFair/Show-decimal-on-disk-1TB
Show decimals for vdisk > 1TB
2024-04-12 14:01:23 -07:00
tom mortensen
1b35b145f8 Merge pull request #1701 from unraid/clean-go-script
better go script cleanup
2024-04-12 14:00:52 -07:00
ljm42
7e0f91cb53 Merge branch 'clean-go-script' of https://github.com/unraid/webgui into clean-go-script 2024-04-12 13:44:29 -07:00
ljm42
b7f69da252 change backup extension 2024-04-12 13:43:47 -07:00
ljm42
8f99ba2346 backup go script with random extension
Revert "backup go script with random extension"

This reverts commit f3498bd869e998040685399a2cb198e57809653f.

change backup extension
2024-04-12 13:41:35 -07:00
dlandon
e87a15d439 New location of OutgoingProxy.php. 2024-04-12 14:37:10 -05:00
dlandon
1640e6d2a0 Simpler check for null vALUE. 2024-04-12 14:36:44 -05:00
dlandon
a76a68d4e2 Simpler check for null values. 2024-04-12 14:34:41 -05:00
dlandon
f9398d01c6 Move OutgoingProxy.php file to /include/ folder. 2024-04-12 14:16:56 -05:00
dlandon
56990109f5 Merge pull request #1 from unraid/proxy_tweaks
Proxy tweaks
2024-04-12 13:30:15 -05:00
ljm42
d2e20c4d45 Update location of proxy.cfg 2024-04-12 10:05:24 -07:00
ljm42
21dcf49ad1 fix PHP warning 2024-04-12 09:52:13 -07:00
ljm42
e7648ba08c fix merge error 2024-04-12 09:45:57 -07:00
dlandon
fcb58b1908 Merge branch 'master' into master 2024-04-12 08:04:31 -05:00
dlandon
003d4b86a8 Make script executable 2024-04-12 08:03:11 -05:00
dlandon
28e16fc500 Rewrite set_proxy to php. 2024-04-12 08:00:03 -05:00
dlandon
a5be34d6b9 Revert "Make script executable"
This reverts commit 92a9d2e4c3.
2024-04-12 07:58:12 -05:00
dlandon
92a9d2e4c3 Make script executable 2024-04-12 07:53:48 -05:00
dlandon
22c3ac6061 Changes for set_proxy rewrite. 2024-04-12 07:35:26 -05:00
dlandon
562a1ace79 Changes for set_proxy rewrite. 2024-04-12 07:35:08 -05:00
dlandon
cdedaa9476 Code cleanup. 2024-04-12 07:34:13 -05:00
dlandon
1d35b06539 Remove create_proxy; set_proxy replaces the functionality. 2024-04-12 07:33:50 -05:00
ljm42
80b200950f better go script cleanup 2024-04-11 15:28:54 -07:00
SimonFair
62ea5702ce Add support for decimal values 2024-04-10 23:44:22 +01:00
SimonFair
e9c973baad Show decimals for disk > 1TB 2024-04-10 21:27:24 +01:00
Tom Mortensen
7d85097bce fix: Emulated disk is not clickable 2024-04-09 14:36:26 -07:00
Tom Mortensen
37b41950bb fix: ZFS subpools show up and can be selected in the new permissions tool 2024-04-09 14:35:05 -07:00
Tom Mortensen
9d583f63f0 script to invoke virtiofsd with arguments not supported by libvirt
invoked via this symlink:
/usr/libexec/virtiofsd -> /usr/local/sbin/virtiofsd
2024-04-09 14:33:11 -07:00
tom mortensen
a88d5608af Merge pull request #1697 from SimonFair/VM-Metrics
Fix php error due to typo and if libvirt is not started.
2024-04-08 13:14:25 -07:00
dlandon
1a79fb8cd8 Make scripts executable 2024-04-08 08:23:46 -05:00
SimonFair
bc931a5483 Fix typo in rc.docker 2024-04-07 19:42:42 +01:00
dlandon
e6e74004a3 Rename scripts to be more consistent with Unraid standards. 2024-04-06 11:58:10 -05:00
SimonFair
dc3f03b952 Fix error message on own line 2024-04-06 14:53:20 +01:00
dlandon
bf36603023 Rename config file to prevent confusion. 2024-04-06 08:17:10 -05:00
dlandon
c8967594c7 Remove debug log line. 2024-04-06 08:08:39 -05:00
SimonFair
e0ea112af7 Fix php error due to typo and if libvirt is not started. 2024-04-06 11:09:42 +01:00
mtongnz
ffabb996fc fix: external ports not showing for non-bridge networks 2024-04-06 16:38:02 +13:00
Matt
4a4444229e Apply suggestions from code review
Co-authored-by: FunkeCoder23 <12570656+FunkeCoder23@users.noreply.github.com>
2024-04-06 13:04:22 +13:00
dlandon
5867f6719d Don not include user and pass in the /boot/config/proxy.cfg file. Thgey are not needed by set_proxy. 2024-04-05 12:33:38 -05:00
dlandon
cf69edb57d Key generation fails on first run. 2024-04-05 08:16:03 -05:00
dlandon
1d47440008 Code cleanup. 2024-04-05 08:15:28 -05:00
dlandon
890671f106 Fix typo. 2024-04-04 19:15:56 -05:00
dlandon
a1d486f112 Add password encryption and create_proxy.sh script to create the proxy.cfg file needed by set_proxy. 2024-04-04 13:05:36 -05:00
tom mortensen
bce62bb5e9 Merge pull request #1650 from SimonFair/VM-Metrics
Various VM Manager changes
2024-04-03 15:53:54 -07:00
tom mortensen
7c318c11f1 Merge pull request #1667 from jski/master
Add additional USB device passthrough smartmontools options to webgui
2024-04-03 15:52:37 -07:00
tom mortensen
1447bea75b Merge pull request #1684 from SimonFair/VM-Avoid-spinup-of-ISOS-location-volume
Add spin up check to CD info function.
2024-04-03 15:51:58 -07:00
tom mortensen
fd21e9d6f5 Merge pull request #1685 from unraid/auto-upgrade-proxy
auto upgrade proxy
2024-04-03 15:48:51 -07:00
tom mortensen
a2a598d28d Merge pull request #1690 from unraid/proxy-via-localprepend
Proxy via local_prepend.php
2024-04-03 15:43:52 -07:00
tom mortensen
cc2d969181 Merge pull request #1694 from dlandon/master
Add Outgoing Proxy Manager
2024-04-03 15:43:38 -07:00
dlandon
3790217cec Fix php errors. 2024-04-03 12:43:13 -05:00
dlandon
cde1e4582a Fix menuing. 2024-04-03 11:00:48 -05:00
dlandon
689f0bb697 Add Outgoing Proxy Manager. 2024-04-03 10:38:52 -05:00
tom mortensen
845fb47335 Merge pull request #1691 from SimonFair/Sysdevices-Language-Fix
Fix for sysdrivers.
2024-04-02 08:56:23 -07:00
tom mortensen
641226a49f Merge pull request #1692 from zackspear/refactor/6.13-trial-messaging-replace-pro-with-unleashed
[6.13] refactor: web component translations trial messaging
2024-04-02 08:55:48 -07:00
Zack Spear
ba0eabe9bb refactor: web component translations trial messaging 2024-04-02 09:47:24 +09:00
SimonFair
7738c25e7c Fix for sysdrivers. 2024-04-01 20:49:03 +01:00
ljm42
2f279bc56e Proxy via local_prepend.php 2024-04-01 11:32:46 -07:00
tom mortensen
cab7615a3d Merge pull request #1687 from zackspear/refactor/6.13-trial-messaging-replace-pro-with-unleashed
[6.13] refactor(wc): trial messaging replace pro with unleashed
2024-04-01 09:44:10 -07:00
Zack Spear
558640b10a refactor(wc): trial messaging replace pro with unleashed 2024-04-01 21:58:51 +09:00
SimonFair
38a9b575f7 Make script executable 2024-04-01 09:05:43 +01:00
SimonFair
afd2852fc8 Add virtiofsd pre-processor for wrapper 2024-04-01 09:02:45 +01:00
SimonFair
9ca6b38ecb Create test template 2024-03-31 21:32:30 +01:00
SimonFair
79d8150e56 Initialise DISABLE in qemu script 2024-03-30 08:39:45 +00:00
SimonFair
d635653a49 Update qemu 2024-03-29 11:20:19 +00:00
SimonFair
2d78738cef Add check for memory dump 2024-03-29 11:05:52 +00:00
SimonFair
86b0af8b49 Add descriptive error message if start disabled in settings 2024-03-29 10:59:29 +00:00
SimonFair
c0f79e8929 Add tooltip and * if spundown. 2024-03-29 07:48:33 +00:00
ljm42
5989f372ce auto upgrade proxy - backup first 2024-03-28 19:32:12 -07:00
ljm42
08918b8892 auto upgrade proxy 2024-03-28 17:01:34 -07:00
SimonFair
d5ee50c696 Merge remote-tracking branch 'upstream/master' into VM-Avoid-spinup-of-ISOS-location-volume 2024-03-28 20:46:52 +00:00
Tom Mortensen
02de6b43b4 support 'inelgible' configValid state 2024-03-26 18:22:21 -07:00
Tom Mortensen
3b2ed257da permit file system selection with array Started only if fle system type is 'auto' 2024-03-26 18:22:21 -07:00
tom mortensen
d0a37df768 Merge pull request #1683 from zackspear/feat/6.13-config-error-messaging
[6.13] feat(upc): server config enum messaging
2024-03-26 15:15:07 -07:00
Zack Spear
0710deb304 refactor: config error messages 2024-03-27 01:25:03 +09:00
Zack Spear
c383caf3ff feat(upc): server config enum messaging 2024-03-26 19:46:11 +09:00
tom mortensen
0afb8dd7de Merge pull request #1681 from unraid/curl-improvements
Curl improvements
2024-03-25 08:44:44 -07:00
tom mortensen
afc8834610 Merge pull request #1680 from unraid/add-proxy-2
Proxy enhancements
2024-03-25 08:42:51 -07:00
dlandon
3021a72fd7 Merge remote-tracking branch 'upstream/master' 2024-03-24 22:27:35 -05:00
ljm42
537149f206 Use Curl for network connectivity checks 2024-03-24 14:59:03 -07:00
ljm42
0b7f980e97 introduce http_get_contents wrapper for Curl 2024-03-24 14:17:09 -07:00
ljm42
da32a2ab36 Add proxy env vars to Tools -> Vars 2024-03-23 09:55:28 -07:00
ljm42
a34a2d0de9 set_proxy: only restart php-fpm if it is running 2024-03-23 09:53:01 -07:00
tom mortensen
614826552f Merge pull request #1675 from unraid/add-proxy
Add outgoing proxy support
2024-03-23 08:43:55 -07:00
tom mortensen
5be81cfb8f Merge pull request #1677 from zackspear/fix/6-13-regDevs-usage-for-more-flexibility
[6.13] fix: regDevs usage for more flexibility
2024-03-23 00:10:55 -07:00
tom mortensen
30f49bd3d7 Merge pull request #1678 from unraid/fix-mgmtaccess-php-warnings
Fix PHP warnings on Management Access page
2024-03-23 00:09:39 -07:00
ljm42
e696f98467 Fix PHP warnings on Management Access page 2024-03-21 11:22:35 -07:00
Zack Spear
e47b80a501 fix: regDevs usage 2024-03-21 21:07:31 +09:00
ljm42
d68da6a187 remove special handling for wget, use environment variables instead 2024-03-20 15:31:59 -07:00
ljm42
c6e549ac7d Make executable 2024-03-20 13:48:26 -07:00
ljm42
b69564caed tidy 2024-03-19 11:56:13 -07:00
ljm42
cb84d60e00 Remove special handling for file_get_contents(), use libcurl instead 2024-03-19 11:52:59 -07:00
ljm42
78dcc575d6 tidy 2024-03-18 15:12:31 -07:00
ljm42
ffcb5b11a1 Remove special handling for libcurl, use environment variables instead 2024-03-18 14:44:51 -07:00
ljm42
77bd950c6d remove proxy.ini, use environment variables instead 2024-03-18 14:22:57 -07:00
ljm42
6d379a4dd6 Add outgoing proxy support 2024-03-17 20:23:51 -07:00
SimonFair
a101d2c538 Code optimisation for quicker load. 2024-03-17 11:12:40 +00:00
SimonFair
a15501a2b5 Remove tmp debug files. 2024-03-16 21:34:39 +00:00
SimonFair
f8f6633c1b Disable check boxes for removal if ZFS. 2024-03-16 19:48:11 +00:00
jski
10d590fc66 Fixed two typos, thanks @ljm42 2024-03-16 15:28:20 -04:00
SimonFair
1c23a008b9 Add context menu on VM Usage Panel 2024-03-16 13:40:53 +00:00
tom mortensen
a02a4fbd7a Merge pull request #1673 from zackspear/master
[6.13] refactor(upc): add upgrade button for key state
2024-03-15 14:34:17 -07:00
tom mortensen
8d1438635a Merge pull request #1671 from unraid/fix-notifications
Fix Docker notifications
2024-03-15 14:33:36 -07:00
tom mortensen
19c23dc05b Merge pull request #1669 from SimonFair/Sysdevices-Language-Fix
Fix language issue.
2024-03-15 14:31:31 -07:00
tom mortensen
8bde22106f Merge pull request #1665 from unraid/disable-updatedns2
Disable UpdateDNS
2024-03-15 14:15:51 -07:00
Zack Spear
c222fbb306 refactor(upc): add upgrade button for key state 2024-03-15 13:12:14 -07:00
jski
415cb252e7 Missed one section to add the new settings in DeviceInfo.page 2024-03-14 19:21:59 -04:00
ljm42
a7b1a6c12f Fix Docker notifications
and improve consistency in related files
2024-03-14 14:12:30 -07:00
SimonFair
9bdc64635e Fix language issue. 2024-03-14 19:15:21 +00:00
jski
9524159cf2 Added options for USB passthrough devices on DeviceInfo.page, using info from https://www.smartmontools.org/wiki/USB for smartmontools 7.3 2024-03-14 14:42:42 -04:00
jski
512b9036a6 Added options for USB passthrough devices on DiskSettings.page, using info from https://www.smartmontools.org/wiki/USB for smartmontools 7.3 2024-03-14 14:30:24 -04:00
ljm42
fb856215c3 Disable UpdateDNS 2024-03-13 14:00:17 -07:00
tom mortensen
8e77da0222 Merge pull request #1663 from zackspear/master
refactor(upc): remove UpdateDNS requests on key install
2024-03-13 09:44:58 -07:00
tom mortensen
1228a1976a Merge pull request #1660 from unraid/disable-updatedns
Disable UpdateDNS
2024-03-13 09:44:03 -07:00
tom mortensen
d53598a1fe Merge pull request #1654 from Squidly271/patch-28
Fix PHP8 warnings in Notification Archive
2024-03-13 09:41:47 -07:00
Zack Spear
d8d13805df refactor(upc): remove UpdateDNS requests on key install 2024-03-12 15:12:33 -07:00
ljm42
69fe39720c Disable UpdateDNS 2024-03-12 14:17:35 -07:00
Squidly271
58ec85211a Update notify_poller 2024-03-09 12:53:20 -05:00
Squidly271
8a75747fb4 Update NotificationsArchive.php 2024-03-09 11:29:55 -05:00
Tom Mortensen
cc80a2ad85 rc.libvirt: right after loading kvm module, "echo 0 > /sys/module/kvm/parameters/report_ignored_msrs"
We used to apply a kernel patch to change the default from "Yes" to "No" but this accomplishes the
same thing without having to patch the kernel.
2024-03-08 12:00:42 -08:00
Tom Mortensen
74e3390eeb rc.cpufreq: also default to "performance" for amd-pstate-epp. 2024-03-08 11:56:47 -08:00
tom mortensen
8d48faa815 Merge pull request #1651 from unraid/feat-add-phplog-to-diags
Diagnostics: add phplog
2024-03-08 11:49:18 -08:00
tom mortensen
ddc478dafb Merge pull request #1648 from ich777/mgmtaccess_ipv6_fix
Update ManagementAccess.page
2024-03-08 11:48:22 -08:00
SimonFair
816f3561e6 fix filesystem snap desc 2024-03-08 19:10:35 +00:00
ljm42
b67bd8ab30 Diagnostics: add phplog 2024-03-07 12:48:58 -07:00
SimonFair
f34dfbc79b Change default to QEMU snapshots not Filesystem 2024-03-06 19:20:44 +00:00
533a4171bf Update ManagementAccess.page
- changes as discussed with @ljm42
2024-03-06 17:50:03 +01:00
9d84fedb8e Update ManagementAccess.page
- Fix IPv6 not displaying correctly on Management Access page if using default ports
2024-03-06 12:15:37 +01:00
tom mortensen
20d7b702c5 Merge pull request #1645 from Squidly271/patch-25
Fix Docker Update Issues
2024-03-04 15:01:29 -08:00
tom mortensen
ef27b5057d Merge pull request #1644 from SimonFair/Unraid-Wake-on-LAN
Remove WOL for Services
2024-03-04 15:01:06 -08:00
SimonFair
bb7f657b56 Remove WOL for Services 2024-03-04 19:16:51 +00:00
SimonFair
e2c0990d9d additional changes 2024-03-04 17:17:11 +00:00
Squidly271
b7a00ec600 Fix update issues with docker tab 2024-03-03 12:09:51 -05:00
SimonFair
85fdccecd2 Fix for services not running. 2024-03-02 17:14:48 +00:00
SimonFair
727b36a122 Add option for suspend 2024-03-02 15:59:46 +00:00
SimonFair
9e5043eed1 Fix multiple NICs error 2024-03-02 09:13:17 +00:00
SimonFair
382eb005aa Fix docker help 2024-03-02 08:20:58 +00:00
tom mortensen
846143ed73 Merge pull request #1640 from Commifreak/docker_fix_php_errs
Fix `getDockerJSON`
2024-03-01 11:54:44 -08:00
tom mortensen
de0b17afd4 Merge pull request #1642 from zackspear/master
[6.13] fix: state special chars for html attrs & updates button conditionals + date formatting
2024-02-29 16:35:22 -08:00
Zack Spear
20174e9bce fix(wc): special chars & update os check modal button conditionals + date format 2024-02-29 16:14:39 -08:00
Zack Spear
bcae60182f fix: usage state w/ special chars for html attributes 2024-02-29 16:14:19 -08:00
Zack Spear
46b6d769f6 fix: unraidcheck date format 2024-02-29 16:12:09 -08:00
Zack Spear
7cadcbdf71 fix: state php special chars for html attributes 2024-02-29 16:12:00 -08:00
Robin Kluth
a702f65759 Fix getDockerJSON: If docker comms fail, return empty array (as expsected by everyone) instead if null. Fixes foreach() argument must be of type array|object, null given 2024-02-28 06:34:06 +01:00
Tom Mortensen
d036c7a086 Increased /run tmpfs size limit from 32M to 128M 2024-02-26 09:24:11 -08:00
tom mortensen
66cb88ff9f Merge pull request #1637 from zackspear/fix/6-13-description-double-quotes
fix: state php breaking with double quotes in server description [6.13]
2024-02-23 16:04:47 -08:00
tom mortensen
d0afcf16f8 Merge pull request #1639 from SimonFair/Unraid-Wake-on-LAN
Change Titles
2024-02-23 16:04:16 -08:00
SimonFair
123239a2e6 Change Titles 2024-02-23 13:23:26 +00:00
tom mortensen
aad980c1e5 Merge pull request #1635 from bergware/master
Add legacy table styling
2024-02-22 11:56:04 -08:00
bergware
df18d48eb7 Put notifications in front 2024-02-22 16:42:01 +01:00
bergware
fb0a3e9a2e Dashboard: fix hovering over system resources may remove label 2024-02-22 16:37:21 +01:00
bergware
a9a851ffb2 Add legacy table styling 2024-02-22 14:28:49 +01:00
Zack Spear
5d04fc4763 fix: state php breaking with double quotes in server description 2024-02-21 12:34:46 -08:00
tom mortensen
fa1a13250e Merge pull request #1634 from bergware/master
network: fixed bonding with latest kernel modifications
2024-02-21 09:03:30 -08:00
tom mortensen
cfe667bc38 Merge pull request #1633 from Squidly271/patch-23
Docker: Add in AI as a category
2024-02-21 09:01:51 -08:00
tom mortensen
2c0a5b5494 Merge pull request #1631 from SimonFair/VM-Metrics
Dashboard VM metrics
2024-02-21 09:00:48 -08:00
tom mortensen
c6b7fa7abb Merge pull request #1629 from Squidly271/patch-21
Docker ignore empty paths
2024-02-21 08:59:55 -08:00
tom mortensen
4101096ad4 Merge pull request #1628 from zackspear/fix/6-13-state-cfg-usage
fix: state connect values without connect installed [6.13]
2024-02-21 08:58:31 -08:00
bergware
2267e3c37c network: fixed bonding with latest kernel modifications 2024-02-21 11:57:52 +01:00
bergware
097caf4fa5 network: fixed bonding with latest kernel modifications 2024-02-20 20:38:22 +01:00
bergware
5c6513c4e2 network: fixed bonding with latest kernel modifications 2024-02-20 20:37:52 +01:00
bergware
e8d01ff32a network: fixed bonding with latest kernel modifications 2024-02-20 20:29:24 +01:00
Squidly271
b85cd55423 Update CreateDocker.php 2024-02-19 21:00:27 -05:00
SimonFair
27ad1fa476 Update DashboardApps.php 2024-02-19 07:09:24 +00:00
SimonFair
00ce97a9f6 Update DashboardApps.php 2024-02-18 18:39:07 +00:00
SimonFair
f7b08bcab9 Text updates. 2024-02-18 18:24:26 +00:00
SimonFair
298b020b9c Make script executable 2024-02-18 07:21:19 +00:00
SimonFair
c9f20e7934 Initial commit for Dashboard VM Metrics. 2024-02-18 07:15:12 +00:00
Squidly271
e774c8a6a5 Docker ignore empty paths 2024-02-17 07:13:16 -05:00
Zack Spear
4b8f60f3ec fix: state connect values without connect installed 2024-02-16 17:21:08 -08:00
tom mortensen
4ab3760bea Merge pull request #1626 from zackspear/fix/6-13-os-plg-update-rc-stable
fix: os updates rc to stable [6.13]
2024-02-15 17:06:26 -08:00
Zack Spear
c9cbed9fe5 fix: os updates rc to stable 2024-02-15 14:19:29 -08:00
tom mortensen
3210b1bd39 Merge pull request #1563 from Leseratte10/fix-syslog
Add syslog filename support
2024-02-15 09:38:23 -08:00
tom mortensen
3b60e15ef0 Merge pull request #1582 from mtongnz/manager-fixes
Remove update buttons for non-dockerman containers
2024-02-15 09:37:53 -08:00
tom mortensen
3c6180f114 Merge pull request #1617 from dlandon/master
Fix php warning when saving text to a file.
2024-02-15 09:37:10 -08:00
dlandon
fd5d7e122e Change requested by Ronald. 2024-02-14 17:28:29 -06:00
dlandon
ee90e2b997 Add #raw_file so a raw file can be modified and suppress any php warnings:
This is the hidden input value:
<input type="hidden" name="#raw_file" value="true">

The value="true" could be programmatically changed so a file can be parsed or not parsed in the same page code.
2024-02-14 16:15:43 -06:00
SimonFair
27bb4f7799 Update vm_usage 2024-02-14 17:52:47 +00:00
tom mortensen
cc2aa8acc9 Merge pull request #1623 from bergware/master
Management access: fix incorrect ip address display
2024-02-14 08:42:45 -08:00
tom mortensen
d6fa9420f3 Merge pull request #1621 from zackspear/fix/upc-dropdown-reboot-link-text
fix: dropdown reboot link text [6.13]
2024-02-14 08:40:47 -08:00
tom mortensen
249785377f Merge pull request #1613 from SimonFair/VM-Metrics
Add  VM usage data
2024-02-14 08:40:25 -08:00
bergware
21f1ec278e Management access: fix incorrect ip address display 2024-02-14 17:02:43 +01:00
Zack Spear
6db0bba9fa fix: dropdown reboot link text 2024-02-13 17:55:21 -08:00
dlandon
1fbd1b0a98 Update update.php 2024-02-13 11:39:33 -06:00
tom mortensen
2b58784feb Merge pull request #1618 from Squidly271/patch-19
PHP8 Fix
2024-02-13 07:21:12 -08:00
tom mortensen
94aeb612b8 Merge pull request #1620 from bergware/master
File manager: updated file type icons
2024-02-13 07:20:59 -08:00
SimonFair
9f3047d2ff Add options to settings to disable/enable + refresh rate 2024-02-12 22:04:37 +00:00
bergware
c7fcc66ec2 File manager: updated file type icons 2024-02-12 14:45:00 +01:00
bergware
8c3b5a8554 File manager: updated file type icons 2024-02-12 14:41:56 +01:00
bergware
97560c51d4 File manager: updated file type icons 2024-02-12 14:41:10 +01:00
bergware
2ae9728e94 File manager: updated file type icons 2024-02-12 14:39:31 +01:00
bergware
5c91a93a2c File manager: updated file type icons 2024-02-12 14:37:33 +01:00
SimonFair
034b41726e Update vm_usage 2024-02-11 18:42:11 +00:00
SimonFair
eef77dc64d Fix graphs 2024-02-11 18:34:13 +00:00
SimonFair
954969c2e4 Make script executable 2024-02-11 15:25:18 +00:00
SimonFair
71f655cd05 Add Stats page 2024-02-11 15:22:22 +00:00
Squidly271
df4c1d72bd PHP8 Fix 2024-02-10 15:30:41 -05:00
dlandon
39e2381b8f Fix php warning when saving text that contains a reserved php character to a file.
A php warning occurs when a text area is to be saved to a file and it contains a reserved php character.  Update.php tries to parse the file and extract a specific section even if the file is only to be saved.  It is also trying to extract a section when the $section is not defined i.e. $section is set to false.
2024-02-10 07:39:23 -06:00
Tom Mortensen
54763e03a6 let dhcpcd have 45 sec instead of 30 to get an IP address 2024-02-09 12:53:58 -08:00
tom mortensen
69e2e773a7 Merge pull request #1615 from bergware/master
Fix error in helptext
2024-02-09 12:26:50 -08:00
tom mortensen
e24ffa4185 Merge pull request #1614 from SimonFair/User-VM-templates
VM templates Create missing directory.
2024-02-09 12:26:25 -08:00
bergware
a5b41381af Revert "File manager: replace image icons by font-awesome icons"
This reverts commit e6a70d829e.
2024-02-09 17:52:41 +01:00
bergware
e6a70d829e File manager: replace image icons by font-awesome icons 2024-02-09 17:47:09 +01:00
bergware
863a3ee231 File manager: replace image icons by font-awesome icons 2024-02-09 17:44:04 +01:00
bergware
f999e6f692 File manager: replace image icons by font-awesome icons 2024-02-09 13:06:21 +01:00
bergware
1e38871d1f Merge remote-tracking branch 'upstream/master' 2024-02-09 11:17:16 +01:00
SimonFair
7dda0f48d0 Create missing directory. 2024-02-09 08:52:45 +00:00
SimonFair
bb6598d2f9 Add initial functions to collect VM usage data 2024-02-09 07:09:47 +00:00
tom mortensen
9e5666bed3 Merge pull request #1612 from zackspear/fix/6-13-install-key-and-pro-update-os
6.13 – fix: pro key check for update via dropdown & Install Key class self instantiate with GET request
2024-02-08 15:47:29 -08:00
Zack Spear
1655a361eb fix: Install Key class self instantiate with GET request 2024-02-08 13:29:50 -08:00
Zack Spear
9797c34305 fix: pro key check for update via dropdown 2024-02-08 13:28:40 -08:00
bergware
973fc9c508 Merge remote-tracking branch 'upstream/master' 2024-02-08 14:54:21 +01:00
bergware
ba9f1c474f Fix error in helptext 2024-02-08 12:03:25 +01:00
tom mortensen
451075c174 Merge pull request #1610 from ich777/cgroupv2-patch
Update cgroup2 mount
2024-02-07 14:28:32 -08:00
6011658a43 Update cgroup2 mount
- Remove tmpfs for cgroup2 mount
- Change source from `none` to `cgroup2`
- Add mount options nosuid, nodev, noexec, relatime, nsdelegate, memory_recursiveprot for more security
2024-02-07 14:01:35 +01:00
tom mortensen
006c59dbf1 Merge pull request #1608 from zackspear/master
replace key improvements
2024-02-05 14:26:28 -08:00
tom mortensen
db610f0ae5 Merge pull request #1607 from bergware/master
Feedback form: enable/disable SUBMIT button automatically
2024-02-05 14:25:51 -08:00
Zack Spear
3abc6952ce refactor: remove replace_key_job from rc.local 2024-02-05 13:16:45 -08:00
Zack Spear
92555090d9 refactor: state class webgui global fallback 2024-02-05 12:53:38 -08:00
Zack Spear
d81e24e827 refactor: replace_key_job cron to run on a randomized minute value 2024-02-05 11:38:01 -08:00
Zack Spear
0f31f97d88 refactor(wc): replace key checker automatic on registration page 2024-02-05 11:38:01 -08:00
Zack Spear
d27a796160 fix: ReplaceKey to not reference server state and improve timing check 2024-02-05 11:38:01 -08:00
Zack Spear
7ca74f9862 chore: replace_key_job formatting 2024-02-05 11:38:01 -08:00
Zack Spear
61b17ed7df refactor: InstallKey returns 2024-02-05 11:38:01 -08:00
Zack Spear
04eea0961a feat: rc.local repalce_key_job cron-init 2024-02-05 11:38:01 -08:00
Zack Spear
9cf3a59c8a feat: replace_key_job script to create cron & to execute the replace key job 2024-02-05 11:38:01 -08:00
Zack Spear
4622450b45 refactor: replace key don't auto check on class instantiation 2024-02-05 11:38:01 -08:00
Zack Spear
7f92fff58c fix: state php call from cli 2024-02-05 11:38:01 -08:00
Zack Spear
4d54ab8660 chore: formatting ReplaceKey 2024-02-05 11:38:01 -08:00
Zack Spear
a6c9b73e6f chore: ReplaceKey formatting 2024-02-05 11:38:01 -08:00
Zack Spear
682978f730 refactor: ReplaceKey url const 2024-02-05 11:38:01 -08:00
Zack Spear
aac68b1070 fix: self invoking ReplaceKey class 2024-02-05 11:38:01 -08:00
Zack Spear
8133b2acc0 feat: auto replace key when newer is available 2024-02-05 11:38:01 -08:00
Zack Spear
a3137c4086 refactor: unused InstallKey include for extensible usage 2024-02-05 11:38:01 -08:00
Zack Spear
f42cb70e4f fix: State class for usage in other files 2024-02-05 11:38:01 -08:00
bergware
61acffe36a Update feedback 2024-02-05 13:58:19 +01:00
bergware
fe5258d939 Update feedback 2024-02-05 13:47:30 +01:00
bergware
94972a6dc7 Update select_case 2024-02-05 11:18:57 +01:00
bergware
9dc7547a6a Use my_logger 2024-02-05 11:02:28 +01:00
bergware
7833fdefeb Use my_logger 2024-02-05 10:50:30 +01:00
bergware
6428747c77 parity_history: code optimization 2024-02-05 10:30:14 +01:00
bergware
7c033ddc15 parity_history: code optimization 2024-02-05 10:26:37 +01:00
bergware
99291453ae linc_station_n1 images 2024-02-04 19:43:01 +01:00
bergware
36a16931e5 Update copyright year 2024-02-04 16:18:46 +01:00
bergware
a6e139351d Feedback form: html optimization 2024-02-04 13:26:27 +01:00
bergware
bf75867eae Feedback form: updated images 2024-02-04 12:13:11 +01:00
bergware
232f45286f Feedback form: updated images 2024-02-04 12:04:13 +01:00
bergware
202f6fec50 scripts: code simplification 2024-02-04 12:02:02 +01:00
bergware
7772e3db38 Feedback form: code optimization 2024-02-04 10:29:25 +01:00
bergware
cfdfb49fa2 Feedback form: code optimization 2024-02-04 02:59:07 +01:00
bergware
70b0a5c3f3 Feedback form: code optimization 2024-02-04 02:46:50 +01:00
bergware
4aaf3bb109 Feedback form: code optimization 2024-02-04 02:41:23 +01:00
bergware
b833a13485 Feedback form: add ERROR image 2024-02-04 02:26:39 +01:00
bergware
87e07534b1 Feedback form: code optimization 2024-02-04 01:29:58 +01:00
bergware
111deef923 Feedback form: code optimization 2024-02-04 01:27:44 +01:00
bergware
abdf3d7485 Feedback form: code optimization 2024-02-04 01:23:05 +01:00
bergware
f80c212a26 Feedback form: code optimization 2024-02-04 01:16:29 +01:00
bergware
076413fcae Feedback form: code optimization 2024-02-04 01:11:33 +01:00
bergware
a571cbdc20 Feedback form: code optimization 2024-02-04 00:37:39 +01:00
bergware
7fdfc3ebc2 Feedback form: code optimization 2024-02-04 00:31:05 +01:00
bergware
f2c87c4485 Fix notification icon 2024-02-04 00:05:24 +01:00
bergware
080a3e28d3 Feedback form: code optimization 2024-02-03 23:53:10 +01:00
bergware
c72a87723f Fix styling: sweat-alert buttons 2024-02-03 23:52:43 +01:00
bergware
2fe31d63d8 Feedback form: code optimization 2024-02-03 22:38:17 +01:00
bergware
d67ea2e925 Feedback form: code optimization 2024-02-03 22:35:40 +01:00
bergware
c318c949b1 Feedback form: code optimization 2024-02-03 22:33:02 +01:00
bergware
c5abd80e42 Feedback form: enable/disable SUBMIT button automatically 2024-02-03 22:09:31 +01:00
bergware
432c9a43f0 Feedback form: updated images 2024-02-03 21:58:34 +01:00
bergware
df3d1cb5fc Feedback form: enable/disable SUBMIT button automatically 2024-02-03 21:05:23 +01:00
bergware
a992d17c3d Feedback form: enable/disable SUBMIT button automatically 2024-02-03 20:50:30 +01:00
bergware
e6b6af68ed Feedback form: enable/disable SUBMIT button automatically 2024-02-03 20:45:34 +01:00
bergware
cfdeba3f71 Merge remote-tracking branch 'upstream/master' 2024-02-03 19:53:16 +01:00
bergware
4cb1c76c5a Feedback form: enable/disable SUBMIT button automatically 2024-02-03 18:48:36 +01:00
bergware
92f325614c Feedback form: enable/disable SUBMIT button automatically 2024-02-03 18:44:14 +01:00
bergware
1cf264bdd6 Feedback form: enable/disable SUBMIT button automatically 2024-02-03 18:39:38 +01:00
bergware
26ca0f0722 Feedback form: enable/disable SUBMIT button automatically
- User can only submit when valid input is entered
2024-02-03 18:27:08 +01:00
tom mortensen
429ce4b293 Merge pull request #1605 from SimonFair/Unraid-Wake-on-LAN
WOLrun.php make executable
2024-02-03 08:06:23 -08:00
tom mortensen
3bad9a20d8 Merge pull request #1606 from bergware/master
Feedback form: place SUBMIT button next to CANCEL button
2024-02-03 08:05:09 -08:00
bergware
da520c3d50 favorites: skip non-existing entries 2024-02-03 14:56:08 +01:00
bergware
ac469937db Feedback form: place SUBMIT button next to CANCEL button 2024-02-03 14:46:19 +01:00
bergware
d70bc5e9e8 Feedback form: place SUBMIT button next to CANCEL button 2024-02-03 13:10:57 +01:00
bergware
099559e949 netconfig: exit when missing parameters 2024-02-03 12:24:51 +01:00
bergware
a441a00182 Fix my_logger function 2024-02-03 12:01:38 +01:00
bergware
a3659d515a Merge remote-tracking branch 'upstream/master' 2024-02-03 11:53:14 +01:00
bergware
56dc0269b3 Feedback form: place SUBMIT button next to CANCEL button 2024-02-03 11:52:24 +01:00
SimonFair
28d9de878c Make script executable 2024-02-03 00:26:20 +00:00
tom mortensen
9d7df3be66 Merge pull request #1604 from unraid/feat-logger
logger - ensure params are escaped
2024-02-02 12:10:05 -08:00
ljm42
0287d8dfac my_logger: make the tag optional 2024-02-02 13:02:40 -07:00
tom mortensen
900f74f334 Merge pull request #1601 from SimonFair/Unraid-Wake-on-LAN
WOL Use new mac format.
2024-02-02 11:55:37 -08:00
ljm42
551f85ad92 escape more params 2024-02-02 12:51:23 -07:00
ljm42
0d87850efd remove dependency on webgui
the plugin script should be at /usr/local/sbin/plugin, independent of the webgui
2024-02-01 20:31:25 -07:00
Tom Mortensen
74b0b5a71f remove passing unneeded shareFruit setting 2024-02-01 18:47:55 -08:00
ljm42
305e4648aa logger - ensure params are escaped 2024-02-01 15:49:17 -07:00
Tom Mortensen
b8844dcedb If no regkey use 'Tools>Registration' as start page 2024-02-01 14:41:18 -08:00
SimonFair
690b4a264c Update help for WOL page. 2024-02-01 17:20:51 +00:00
tom mortensen
4e71349cf2 Merge pull request #1602 from bergware/master
Feedback form: change DONE button to CANCEL
2024-02-01 09:20:10 -08:00
bergware
24c0dd3015 Feedback form: change DONE button to CANCEL 2024-02-01 12:40:17 +01:00
SimonFair
dec1bf5de6 Use new mac format. 2024-02-01 07:40:25 +00:00
tom mortensen
ccf7ec5db3 Merge pull request #1600 from zackspear/master
update os feedback and refactors
2024-01-31 15:54:58 -08:00
tom mortensen
d2a2462059 Merge pull request #1599 from SimonFair/Unraid-Wake-on-LAN
Add option to shutdown for WOL processing.
2024-01-31 15:54:45 -08:00
Zack Spear
be9a6b85aa Merge branch 'unraid:master' into master 2024-01-31 15:23:53 -08:00
SimonFair
8f78ab4ba0 Add SSD flag for vdisks. 2024-01-31 15:23:00 -08:00
Zack Spear
b7af321692 refactor: update os feedback improvements 2024-01-31 15:21:57 -08:00
Zack Spear
d795f51b4b feat: add updateOsNotificationsEnabled to state php 2024-01-31 15:06:17 -08:00
tom mortensen
0649c310cb Merge pull request #1594 from SimonFair/SSD-Checkbox-and-Customer-CPUs
Add SSD flag for vdisks.
2024-01-31 12:49:29 -08:00
Zack Spear
1e853aba3b feat: make update os w/o leaving webgui possible 2024-01-31 11:23:52 -08:00
Zack Spear
9501c88bf4 refactor: UnraidCheck php 2024-01-31 11:23:52 -08:00
Zack Spear
acd0e764c3 feat: unraidcheck callable from webgui with altUrl & json output 2024-01-31 11:23:52 -08:00
SimonFair
9f01517f21 Merge remote-tracking branch 'upstream/master' into Unraid-Wake-on-LAN 2024-01-30 20:31:26 +00:00
SimonFair
c46fd21747 Update WOLrun.php 2024-01-30 20:29:13 +00:00
SimonFair
89fbe80e9f Add option to shutdown for WOL processing. 2024-01-30 20:23:07 +00:00
tom mortensen
820a79d598 Merge pull request #1596 from Squidly271/patch-17
Fix PHP error when submitting diagnostics via Feedback
2024-01-30 09:21:33 -08:00
Squidly271
550fed51dc Update Feedback.php 2024-01-29 19:16:22 -05:00
tom mortensen
3c42a85613 Merge pull request #1593 from SimonFair/User-VM-templates
User Template Delete Fix.
2024-01-28 08:21:09 -08:00
tom mortensen
73412b7ca8 Merge pull request #1592 from SimonFair/Unraid-Wake-on-LAN
Fix WOL start on boot.
2024-01-28 08:20:45 -08:00
SimonFair
dc7b52e027 Fix or systemdrivers. 2024-01-28 11:28:10 +00:00
SimonFair
5842b5acf9 Add SSD flag for vdisks. 2024-01-27 23:48:15 +00:00
SimonFair
adb3a03b8d User Template Delete Fix. 2024-01-27 19:20:25 +00:00
SimonFair
bea6e282ec Fix WOL start on boot. 2024-01-27 07:29:06 +00:00
tom mortensen
1122262f36 Merge pull request #1591 from Squidly271/patch-16
Allow CA to automatically start containers when doing a multi-install
2024-01-25 17:22:23 -08:00
Squidly271
f57c9b60d5 Update update_container 2024-01-25 19:27:37 -05:00
tom mortensen
1155d09dd1 Merge pull request #1578 from SimonFair/User-VM-templates
User VM templates
2024-01-24 22:04:59 -08:00
Tom Mortensen
ddca644dfe place 'Registration' to right of 'Downgrade OS' in Tools/About section 2024-01-22 09:34:38 -08:00
tom mortensen
3525dd5826 Merge pull request #1583 from Squidly271/patch-9
Fix javascript error in library everytime a key is pressed in webGUI
2024-01-20 13:20:05 -08:00
tom mortensen
0cf829bf9d Merge pull request #1584 from Squidly271/patch-10
Allow CA to override the "DONE" button appearing during multi installs / updates
2024-01-20 13:16:10 -08:00
tom mortensen
e332298dc0 Merge pull request #1586 from Squidly271/patch-12
Don't save state of help button from page to page
2024-01-20 13:15:55 -08:00
tom mortensen
58a7054db5 Merge pull request #1587 from bergware/master
Favorites: use "trash" icon to delete favorite
2024-01-20 13:15:12 -08:00
SimonFair
979dd225f7 add support for XML Custom 2024-01-16 19:41:13 +00:00
SimonFair
8f8d7037ee add support to XML custom 2024-01-16 19:40:48 +00:00
SimonFair
239d6813a1 Fix for multifunction 2024-01-16 17:26:02 +00:00
SimonFair
797e7cddaf Sort icons for templates 2024-01-15 23:38:22 +00:00
SimonFair
b7bdde1f18 fix clock 2024-01-15 23:33:42 +00:00
SimonFair
c7d5e5708e Fix template name on delete. 2024-01-15 21:42:23 +00:00
SimonFair
cc43038692 XML processing 2024-01-15 21:10:56 +00:00
Squidly271
2a7dd96fac Add what was changed to comment 2024-01-14 17:10:44 -05:00
SimonFair
91f27cc70c Add removal confirmation 2024-01-14 18:29:44 +00:00
bergware
b48b30a6a6 Favorites: use "trash" icon to delete favorite 2024-01-14 11:10:38 +01:00
SimonFair
e0b857744f Add Bin 2024-01-14 08:57:06 +00:00
Squidly271
561cfc6c9f Update DefaultPageLayout.php 2024-01-13 19:34:59 -05:00
Squidly271
33a4ad1173 Update HelpButton.page 2024-01-13 19:32:47 -05:00
Squidly271
f7d0cf3ff6 Update DefaultPageLayout.php 2024-01-13 18:59:04 -05:00
SimonFair
a4ab98a078 Merge remote-tracking branch 'upstream/master' into User-VM-templates 2024-01-13 22:49:09 +00:00
SimonFair
70e690defa Updates 2024-01-13 21:52:00 +00:00
Squidly271
4a42a26b59 Update dynamix.js 2024-01-12 19:58:28 -05:00
mtongnz
083cd984ea style: fix bizzare formatting glitches 2024-01-12 16:09:52 +13:00
mtongnz
3dda97319d fix: don't return template for containers not managed by dockerman 2024-01-12 15:51:04 +13:00
mtongnz
064cac1110 fix: suppress error on template fetch 2024-01-12 15:46:43 +13:00
mtongnz
3d1b53d0ea style: line up spacing 2024-01-12 15:45:53 +13:00
mtongnz
61e99a390e fix: docker network info display (non dockerman & multiple networks) 2024-01-12 15:45:04 +13:00
mtongnz
37f1941027 fix: remove update buttons for non-dockerman containers 2024-01-12 15:25:43 +13:00
tom mortensen
a7671fba37 Merge pull request #1581 from zackspear/master
small post key install improvements in new modal
2024-01-10 20:42:37 -08:00
Zack Spear
d866e77710 refactor(wc): update web component js to latest 2024-01-09 17:14:01 -06:00
tom mortensen
aaf31a808b Merge pull request #1574 from bergware/master
Nchan: add timeout to publishers to force update
2024-01-08 14:26:25 -08:00
tom mortensen
b8b8f43387 Merge branch 'master' into master 2024-01-08 14:26:16 -08:00
tom mortensen
7c94cbd169 Merge pull request #1575 from SimonFair/File-System-Snapshots
Fixes for QCOW2 images
2024-01-08 14:24:34 -08:00
tom mortensen
f97e780f0f Merge pull request #1576 from Squidly271/patch-7
PHP8 fix
2024-01-08 14:23:59 -08:00
tom mortensen
879657cc6a Merge pull request #1579 from zackspear/master
fix(wc): key install success handling
2024-01-08 14:22:45 -08:00
Zack Spear
e75c667336 fix(wc): key install success handling 2024-01-08 13:20:31 -06:00
SimonFair
46789b61b8 Initial Straw man concept. 2024-01-07 12:54:07 +00:00
Squidly271
19bebe7ef3 Update post_plugin_checks 2024-01-07 06:51:23 -05:00
Squidly271
68552c0808 Update post_plugin_checks 2024-01-07 06:47:12 -05:00
SimonFair
ff9e390840 QCOW2 Fixes 2024-01-06 12:32:43 +00:00
bergware
0fcc246760 Reduce monitor_nchan messages 2024-01-06 10:47:12 +01:00
SimonFair
7bfffb9fdb Update Custom.form.php 2024-01-06 09:44:51 +00:00
Squidly271
adcb0de17d Update post_plugin_checks 2024-01-05 19:29:25 -05:00
bergware
41539b9fe3 PHP8 fix error 2024-01-05 21:34:35 +01:00
SimonFair
9c60cc9619 QCOW2 Fixes 2024-01-05 19:42:06 +00:00
SimonFair
8c5c881237 Fixes for QCOW2 2024-01-05 19:40:26 +00:00
bergware
26452c82f3 publishers: retry on failure 2024-01-05 20:22:55 +01:00
bergware
86366d4409 publish: add logging of failed curl requests 2024-01-05 20:21:24 +01:00
bergware
71b59cebae Parity check: use json format 2024-01-05 13:05:01 +01:00
bergware
4ca244d444 Merge remote-tracking branch 'upstream/master' 2024-01-05 12:57:01 +01:00
bergware
0ff0ef490e Nchan: add timeout to publishers to force update 2024-01-05 12:56:19 +01:00
Zack Spear
7d9d306ef9 Merge branch 'unraid:master' into master 2024-01-04 10:53:49 -08:00
Zack Spear
01c49623b0 chore: organize web component translations 2024-01-04 12:52:51 -06:00
tom mortensen
5e3301945e Merge pull request #1573 from bergware/master
device_list: add timeout to force update
2024-01-04 09:19:51 -08:00
bergware
0298d1f827 monitor_nchan: add immediate "kill" command option 2024-01-04 13:26:54 +01:00
bergware
40c3bc2779 device_list: add timeout to force update 2024-01-04 11:47:52 +01:00
tom mortensen
5effac6e9e Merge pull request #1572 from zackspear/fix/upc-azure-gray-custom-colors
fix(upc): azure & gray themes custom color settings
2024-01-03 21:37:04 -08:00
tom mortensen
6496bc1fca Merge pull request #1571 from bergware/master
Favorites: fixes and enhancements
2024-01-03 21:36:50 -08:00
tom mortensen
a58c476cc9 Merge pull request #1566 from SimonFair/File-System-Snapshots
Add Support for File system level snapshots for VMs.
2024-01-03 21:36:31 -08:00
tom mortensen
7c62bd4279 Merge pull request #1570 from ich777/unraidwold_bugfix
Small bugfixes for unraidwold
2024-01-03 21:35:36 -08:00
SimonFair
2966da5698 Fix to WOL page for no values. 2024-01-03 23:40:14 +00:00
Zack Spear
1a5a70e899 fix(upc): azure & gray themes custom color settings 2024-01-03 15:53:59 -06:00
bergware
7ccd820373 Favorites: fix not all items could be added to favorites 2024-01-03 20:00:32 +01:00
SimonFair
bfb59dbd35 Update Helpers.php 2024-01-03 17:29:23 +00:00
SimonFair
9188d22e0e Update Helpers.php 2024-01-03 17:26:25 +00:00
SimonFair
6de185b0ac Updates to ZFS Snaps and fix for Libvirt 9.8.0+ issue 2024-01-03 17:21:25 +00:00
bergware
c4b6b0cfab VMs: fix regression error in table height 2024-01-03 13:15:02 +01:00
bergware
2665ddebd2 Dashboard: fix regression error in system headers 2024-01-03 12:59:57 +01:00
bergware
4e568a9b9b Dashboard: fix regression error in system headers 2024-01-03 12:57:01 +01:00
bergware
08ecf1d9d2 Favorites: automatically clean non-existing pages 2024-01-03 12:43:08 +01:00
bergware
25340cc3be Favorites: hide item when no favorites are present 2024-01-03 12:14:21 +01:00
bergware
0d2690abd1 Favorites: change start to heart in header 2024-01-03 12:13:51 +01:00
bergware
b57f3b0538 Favorites: fix not all items could be added to favorites 2024-01-03 12:13:34 +01:00
184961b1d7 Small bugfix
- Convert all MAC to lower
- Fix for syslog messages
2024-01-03 09:33:43 +01:00
Tom Mortensen
b307e6a373 place 'Update OS' and 'Downgrade OS' at beginning of Tools/About section 2024-01-02 19:29:54 -08:00
tom mortensen
69732671d9 Merge pull request #1564 from unraid/refactor/update-os-server-side-usage
refactor: update os component use new server-side check
2024-01-02 18:31:35 -08:00
Zack Spear
5b8beac8dd refactor: unraidcheck script new endpoint & save response for web components 2024-01-02 08:53:55 -06:00
Tom Mortensen
52408b193d small tweaks to unraidwol build script and binary path 2024-01-01 14:18:20 -08:00
Tom Mortensen
e734541dcb update copyright notice in footer 2024-01-01 14:16:37 -08:00
SimonFair
bb4c0402fc Updates to revert 2024-01-01 14:25:40 +00:00
SimonFair
29b4c81b81 Update title text for default snapshot type. 2023-12-31 19:49:25 +00:00
Florian Bach
828d62cd49 Add syslog filename support 2023-12-30 19:56:49 +01:00
SimonFair
3dda1c3fbd Merge remote-tracking branch 'upstream/master' into File-System-Snapshots 2023-12-30 15:55:46 +00:00
SimonFair
66874ef8f2 Add Support for File system level snapshots for VMs. 2023-12-30 15:51:53 +00:00
tom mortensen
5730feb21e Merge pull request #1444 from Squidly271/patch-4
DRAFT Run FCP scan during diagnostics
2023-12-29 11:17:46 -08:00
tom mortensen
12b64b3ff6 Merge pull request #1555 from rdietl/master
Docker: Allow custom registry with a port specification
2023-12-29 11:17:11 -08:00
tom mortensen
0072325a15 Merge pull request #1562 from SimonFair/VM-Updates-and-Fixes
VM Manager updates and fixes
2023-12-29 11:16:07 -08:00
tom mortensen
09b9394df4 Merge pull request #1552 from serisman/feature/ssd_bytes
Display KB/MB/GB/TB written in SMART Attributes for SSDs
2023-12-29 11:15:28 -08:00
tom mortensen
802a9491d0 Merge pull request #1551 from serisman/feature/ssd_endurance
Add 'SSD endurance remaining' SMART Attribute.
2023-12-29 11:14:55 -08:00
tom mortensen
692c6751c6 Merge pull request #1550 from serisman/master
Fix display of 'Accumulated power on time, hours:minutes xxxxx:yy' SMART attribute
2023-12-29 11:14:18 -08:00
tom mortensen
2ec3defc2c Merge pull request #1561 from bergware/master
Miscellaneous updates and fixes
2023-12-29 11:13:44 -08:00
Zack Spear
5f57d6466c refactor: web component state updated 2023-12-29 12:22:11 -05:00
Zack Spear
bcbd9976e2 fix: web component translation 2023-12-29 12:21:52 -05:00
Zack Spear
2fda052611 refactor: update os component use new server-side check 2023-12-29 12:14:54 -05:00
bergware
b7b9d350e1 Docker: fix WG routes added to the correct interface (br0 or eth0 or bon0) 2023-12-29 11:02:30 +01:00
bergware
a0e8bc32ea Update helptext.txt 2023-12-28 20:22:54 +01:00
bergware
efc6d05b3d Favorites: update styling 2023-12-28 12:58:49 +01:00
bergware
b5d39d90c6 Favorites: change icon to "heart" 2023-12-28 12:52:26 +01:00
SimonFair
1fc6b4014b Add my_mkdir function 2023-12-28 11:37:11 +00:00
bergware
56463d5ca2 Remove debug info 2023-12-28 12:18:07 +01:00
bergware
84016c2e7c Docker: fix WG routes added to the correct interface (br0 or eth0) 2023-12-28 11:51:39 +01:00
bergware
4e80ead785 Docker: fix WG routes added to the correct interface (br0 or eth0 or bond0) 2023-12-28 11:45:57 +01:00
bergware
b2e5cdba73 Update helptext.txt 2023-12-28 11:35:42 +01:00
bergware
e5ddca7455 Copy syslog to flash on shutdown 2023-12-28 11:24:37 +01:00
bergware
2b06cc8108 Copy syslog to flash on shutdown 2023-12-28 11:18:52 +01:00
bergware
549cf123f6 Copy syslog to flash on shutdown
This PR supersedes PR1540
2023-12-28 11:10:25 +01:00
bergware
753413a8f2 Power mode: add info when running VM virtualized 2023-12-28 09:40:13 +01:00
bergware
0c81e852f9 Power mode: add info when running VM virtualized 2023-12-27 23:42:26 +01:00
bergware
e1e912586f Docker: fix WG routes added to the correct interface (br0 or eth0) 2023-12-27 22:51:33 +01:00
bergware
d6f7ec37ad add table legacy class for plugin authors 2023-12-27 16:48:38 +01:00
SimonFair
a373e316a3 Fix SCSI controller update
Add Method to snapshots.
2023-12-27 14:05:44 +00:00
bergware
94c6096e46 Update MyFavorites.page 2023-12-27 14:16:44 +01:00
bergware
2c507e32ac Minor styling update 2023-12-27 14:08:10 +01:00
bergware
f245e595ab Dashboard: dedicated parse_cpu 2023-12-27 13:44:06 +01:00
bergware
e892513dce Update PowerMode.page 2023-12-27 12:05:45 +01:00
bergware
e43baeefde Make script executable 2023-12-27 10:10:04 +01:00
bergware
261e680c7d Restore favorites on reboot 2023-12-27 10:09:17 +01:00
bergware
0e20a0a30e New feature: Favorites 2023-12-27 05:41:45 +01:00
bergware
6b7b731d31 New feature: Favorites 2023-12-27 03:47:13 +01:00
bergware
058969c0dc New feature: Favorites 2023-12-27 03:41:48 +01:00
bergware
551fde89d3 Disk settings: fix PHP8 error 2023-12-27 03:37:40 +01:00
bergware
7d720ea2fd New feature: Favorites 2023-12-27 03:37:20 +01:00
bergware
ac137e2b06 New feature: Favorites
User can add sections from Settings and Tools to a new page: Favorites
This allows the user to make a custom list of sections which are preferred
Sections can be removed from Favorites as desired
2023-12-27 03:03:38 +01:00
bergware
30d4c39ea9 Make script executable 2023-12-26 22:13:16 +01:00
bergware
15ea9e1a8f New feature: power mode selection 2023-12-26 22:12:44 +01:00
bergware
5a6ae99206 Update default-gray.css 2023-12-26 14:54:35 +01:00
bergware
3588c49f3c Fix disabled input element styling 2023-12-26 14:50:44 +01:00
bergware
ad8adfac19 Fix disabled input element styling 2023-12-26 14:35:46 +01:00
bergware
49cea2d259 Fix disabled input element styling 2023-12-26 14:28:22 +01:00
bergware
64349438ca Improved hovering logic 2023-12-26 14:04:01 +01:00
bergware
a6c478025c Dashboard UPS: use json fomatting 2023-12-26 11:54:54 +01:00
bergware
a0d3d83ce2 Update DashStats.page 2023-12-26 11:34:10 +01:00
bergware
ed9c1a0c0a Update DashStats.page 2023-12-26 11:32:50 +01:00
bergware
526b1820ff Update DashStats.page 2023-12-26 11:31:26 +01:00
bergware
cbf485cdea Update DashboardApps.php 2023-12-25 12:23:35 +01:00
bergware
ab7d6ed739 Update DashStats.page 2023-12-25 08:52:42 +01:00
bergware
da2c32a269 Update update_2 2023-12-25 08:50:45 +01:00
bergware
803b5d8d92 Update update_2 2023-12-25 08:34:05 +01:00
bergware
1899a62c8c Update update_2 2023-12-25 08:27:09 +01:00
bergware
92f2eb8653 Update update_1 2023-12-25 08:02:03 +01:00
bergware
e9f2386d88 Dashboard: array and pool fixes 2023-12-25 07:49:19 +01:00
bergware
c156cd24c4 Dashboard: fix display error 2023-12-25 06:17:28 +01:00
bergware
489b73d104 Dashboard: fix display error 2023-12-25 06:15:33 +01:00
bergware
bc7bde60c6 Dashboard: layout fix 2023-12-25 05:49:31 +01:00
bergware
6731a79c9c Dashboard: layout fix 2023-12-25 05:23:40 +01:00
bergware
65f445c878 Dashboard: add NTP info to title attribute of current time 2023-12-25 03:20:24 +01:00
bergware
5240492058 Dashboard: improved streams monitoring 2023-12-25 02:04:07 +01:00
bergware
0e16fab256 Update rc.library.source 2023-12-24 22:46:17 +01:00
bergware
6fb6a10dda Update rc.library.source 2023-12-24 22:42:59 +01:00
bergware
37e04bc620 samba: add ipv6 listening address only when netbios is disabled 2023-12-24 22:06:38 +01:00
bergware
25effe198c samba: add ipv6 listening address only when netbios is disabled 2023-12-24 21:36:09 +01:00
bergware
b747d74a87 Make script executable 2023-12-24 20:48:14 +01:00
bergware
1c958ace90 Add event to automatically update services when docker starts 2023-12-24 20:47:55 +01:00
bergware
11a9907d49 Update rc.library.source 2023-12-24 19:50:30 +01:00
bergware
e42e610aba Update rc.library.source 2023-12-24 19:45:58 +01:00
bergware
53bb5d6d92 Update rc.library.source 2023-12-24 19:40:58 +01:00
bergware
1cc9e7feac Revert: Allow vhost interface(s) access to services 2023-12-24 19:33:54 +01:00
bergware
434bb74929 rc.library.source: allow ALL IPv4/IPv6 addresses as listener 2023-12-24 19:26:17 +01:00
bergware
8433609ea5 Allow vhost interface(s) access to services 2023-12-24 18:48:30 +01:00
bergware
428642957c Allow vhost interface(s) access to services 2023-12-24 18:43:29 +01:00
bergware
aad79d5364 Allow vhost interface(s) access to services 2023-12-24 18:37:29 +01:00
bergware
5a4bf637b5 Allow vhost interface(s) access to services 2023-12-24 18:17:54 +01:00
bergware
89a309fb33 rc.library.source: allow ALL IPv4/IPv6 addresses as listener 2023-12-24 16:19:08 +01:00
bergware
ebc827ec9a Merge remote-tracking branch 'upstream/master' 2023-12-24 15:58:27 +01:00
bergware
1832a48f0e rc.library.source: allow ALL IPv4/IPv6 addresses as listener
Allowing ALL addresses solves the issue when IPv4 or IPv6 addresses change dynamically
2023-12-24 15:57:37 +01:00
tom mortensen
1403262cfe Merge pull request #1557 from SimonFair/Downgrade-fix-for-VMs
Fix for Add VM
2023-12-20 11:17:34 -08:00
SimonFair
a722841c1d Update Custom.form.php 2023-12-20 10:46:43 +00:00
tom mortensen
e745c8201a Merge pull request #1549 from SimonFair/Unraid-Wake-on-LAN
Unraid wake on lan
2023-12-19 13:48:51 -08:00
Reinhard Dietl
aec8f47942 Allow Docker image name to contain custom registry with a port specification. 2023-12-19 12:14:09 +01:00
tom mortensen
ba1b8c33f1 Merge pull request #1548 from bergware/master
Enhancements and fixes
2023-12-18 14:41:27 -08:00
tom mortensen
2a5375d15f Merge pull request #1554 from SimonFair/Downgrade-fix-for-VMs
Fix when downgrading for VMs.
2023-12-18 14:38:52 -08:00
SimonFair
5cf762c89d Fix when downgrading for VMs. 2023-12-18 20:14:42 +00:00
bergware
6a3a1b1e9e Dashboard: code fixes 2023-12-18 11:53:17 +01:00
bergware
16bb24a8d9 Dashboard: add color to active streams 2023-12-18 11:42:44 +01:00
bergware
f5f0c31276 Dashboard: fix stream counters 2023-12-18 11:29:44 +01:00
bergware
eb88e9c4f5 Dashboard: fix stream counters 2023-12-18 09:19:43 +01:00
bergware
1a830e56cd Dashboard: fix stream counters 2023-12-18 09:06:31 +01:00
bergware
77d412a246 Dashboard: fix stream counters 2023-12-18 08:47:03 +01:00
bergware
486b4232fe Revert "Dashboard: fix stream counters"
This reverts commit 7b631564db.
2023-12-18 08:26:46 +01:00
bergware
7b631564db Dashboard: fix stream counters 2023-12-18 08:23:51 +01:00
bergware
684caa5ffd Nchan communication: use json format 2023-12-18 07:26:34 +01:00
bergware
f6cc00649c device_list: code optimization 2023-12-17 22:32:51 +01:00
bergware
c07703d13f device_list: code optimization 2023-12-17 22:24:26 +01:00
bergware
7e1f8f1817 Fix typos 2023-12-17 13:00:48 +01:00
bergware
faaec9aa54 Update DashStats.page 2023-12-17 11:31:22 +01:00
bergware
cafc580ed5 Update DashStats.page 2023-12-17 11:13:48 +01:00
bergware
d785036742 Update DashStats.page 2023-12-17 11:12:23 +01:00
bergware
2b2c955143 Update DashStats.page 2023-12-17 11:10:12 +01:00
bergware
e3163fc76d Change bar animate to prototype function 2023-12-17 11:01:16 +01:00
bergware
ccd8cb213e Keep dt column width at 35% 2023-12-17 10:14:23 +01:00
SimonFair
d611e7e45d Update text 2023-12-17 07:53:13 +00:00
SimonFair
ca5a7b8da1 PHP Fix 2023-12-16 21:27:01 +00:00
bergware
cb56b5e5e2 Main page: round average temperature 2023-12-16 20:39:28 +01:00
bergware
c08f724a74 Main page: move power indicator left to temperature 2023-12-16 20:30:55 +01:00
bergware
b423715f47 device_list: code optimization 2023-12-16 19:48:05 +01:00
bergware
40e23532f3 device_list: code optimization 2023-12-16 19:42:28 +01:00
bergware
e97c912fac device_list: code optimization 2023-12-16 19:28:47 +01:00
bergware
3b2840f960 device_list: fix regression error 2023-12-16 18:57:38 +01:00
SimonFair
075a1f03ee fix file path 2023-12-16 11:22:49 +00:00
SimonFair
e73b132674 Add helptext and language updates. 2023-12-16 07:34:58 +00:00
bergware
84ee6a909f device_list: code optimization 2023-12-16 05:11:47 +01:00
bergware
a0172d325c device_list: move encryption indicator to FS column 2023-12-16 01:39:06 +01:00
bergware
734be0ba3c device_list: move encryption indicator to FS column 2023-12-16 01:30:04 +01:00
bergware
33edf59bc7 Main: include FS type for devices part of a pool 2023-12-15 23:40:09 +01:00
S. Erisman
0007e7c984 Better code readability 2023-12-15 15:54:39 -06:00
S. Erisman
e37a6d2c11 Use existing my_scale function instead of custom function 2023-12-15 15:42:47 -06:00
bergware
1393bcdf1e Adjusted scrollbar width/height 2023-12-15 22:13:41 +01:00
SimonFair
7f10aecbb4 Make Scipt executable 2023-12-15 21:10:37 +00:00
SimonFair
d7fe84ddc0 Add events 2023-12-15 21:08:54 +00:00
bergware
a228380812 Black/white themes: adjust scrollbar height 2023-12-15 21:42:42 +01:00
SimonFair
49572e42d2 Make Scipt executable 2023-12-15 20:23:45 +00:00
SimonFair
2fd33102d3 Sample build script 2023-12-15 20:17:52 +00:00
bergware
96c5582f01 Allow commands and arguments with spaces in rc.runlog 2023-12-15 21:10:29 +01:00
bergware
55390d97c7 Allow commands and arguments with spaces in rc.runlog 2023-12-15 20:51:01 +01:00
bergware
b6c30c4c6f Update array_status element 2023-12-15 20:03:18 +01:00
bergware
0d8237679b Main: make TEMP column right aligned 2023-12-15 19:44:15 +01:00
bergware
3ca1f8b18a Use underscores in graph hook script 2023-12-15 19:11:57 +01:00
bergware
7e53df6924 Use underscores in graph hook scripts
Underscores are translated to space for display in the GUI
2023-12-15 19:04:50 +01:00
SimonFair
47b711391a Standardise variable names 2023-12-15 17:13:00 +00:00
bergware
c7f445f167 Main: keep scaling in device descripting automatic 2023-12-15 18:04:01 +01:00
bergware
b7396aee4c Main page: make truncated descriptions fully visible when hovering over them 2023-12-15 15:37:33 +01:00
SimonFair
6b5d452292 Update go.mod 2023-12-15 14:21:56 +00:00
SimonFair
b9462fb62f Update go code 2023-12-15 14:20:18 +00:00
SimonFair
4dbca5afa8 Update WOLrun.php 2023-12-15 14:17:59 +00:00
SimonFair
b30fc8294c add go code 2023-12-15 14:17:11 +00:00
bergware
c95a6b37de Dashboard: protect against rogue graph entries 2023-12-15 10:35:40 +01:00
bergware
6b6dfab52b Dashboard: skip empty entries in graph 2023-12-15 10:28:52 +01:00
bergware
da7fa2b830 Dashboard: skip empty entries in graph 2023-12-15 10:13:44 +01:00
S. Erisman
419bf22958 Display KB/MB/GB/TB written in SMART Attributes for SSDs 2023-12-14 17:33:41 -06:00
S. Erisman
3fccbd7dd9 Add 'SSD endurance remaining' SMART Attribute. 2023-12-14 12:55:48 -06:00
bergware
7dfaf43d7c Update DashStats.page 2023-12-14 18:57:13 +01:00
bergware
7a0df7de23 Dashboard: move all dynamic generated content to "update_1" 2023-12-14 18:48:46 +01:00
S. Erisman
050fe46e9a Fix display of 'Accumulated power on time, hours:minutes xxxxx:yy' SMART attribute 2023-12-14 10:49:24 -06:00
bergware
8005406e87 Move translations to PHP 2023-12-14 15:30:44 +01:00
bergware
0e9d9e2c4f Move translations to PHP 2023-12-14 15:23:28 +01:00
bergware
61a89217a5 Added comments in code 2023-12-14 11:43:20 +01:00
SimonFair
b586df82ef Make script executable 2023-12-14 09:29:25 +00:00
SimonFair
6f7459f96f Update WOL.php 2023-12-14 09:16:54 +00:00
SimonFair
da37e1ab80 Add pages 2023-12-14 08:50:43 +00:00
bergware
75bc6de636 Update DashStats.page 2023-12-14 03:46:23 +01:00
bergware
da487fa545 Update DashStats.page 2023-12-14 03:42:11 +01:00
bergware
2dcaa4fe77 Dashboard: use hooks to create elements 2023-12-14 03:30:44 +01:00
bergware
952f432058 Dashboard: added dynamic element creation in RAM usage graph 2023-12-14 02:21:21 +01:00
bergware
3e427d2802 Main: fix array status display 2023-12-13 23:14:56 +01:00
bergware
eb1d0f1700 Main: fix array status display 2023-12-13 22:50:05 +01:00
tom mortensen
52a0c5387b Merge pull request #1546 from bergware/master
Fixes and enhancements
2023-12-13 09:25:56 -08:00
tom mortensen
c139160a52 Merge pull request #1544 from Squidly271/patch-6
PHP8 Fix
2023-12-13 09:25:05 -08:00
bergware
cbcf0d2473 Dashboard: more dynamic graph color generation (first step only) 2023-12-13 18:16:26 +01:00
bergware
ff1aa17c68 Dashboard: add missing ')' 2023-12-13 17:43:56 +01:00
bergware
89cd76cf37 Update default-fonts.css 2023-12-13 14:39:30 +01:00
bergware
9ade028ef9 Main page: minor width adjustment for buttons placement 2023-12-13 14:15:50 +01:00
bergware
abc8952153 Docker / VM: avoid unnecessary writes to flash device 2023-12-13 13:45:01 +01:00
bergware
935d6a5fdc Docker / VM: avoid unnecessary writes to flash device 2023-12-13 13:08:54 +01:00
bergware
ab8ef76476 VM settings: fix layout when no supported hardware 2023-12-13 13:02:04 +01:00
bergware
a9daf52b33 Docker / VM: avoid unnecessary writes to flash device 2023-12-13 13:01:40 +01:00
Squidly271
c8f18dee44 PHP8 Fix 2023-12-12 18:27:06 -05:00
tom mortensen
9cb59beef6 Merge pull request #1543 from bergware/master
styling enhancements to improve consistency
2023-12-12 10:45:04 -08:00
bergware
8b9f99adbf Display pools in a single table 2023-12-12 16:04:22 +01:00
bergware
8617dc0d92 User Edit: fix styling 2023-12-12 11:05:05 +01:00
bergware
3385e3e2b7 Revert "User Edit: fix styling"
This reverts commit c46655ef9f.
2023-12-12 11:04:28 +01:00
bergware
c46655ef9f User Edit: fix styling 2023-12-12 11:01:36 +01:00
bergware
c1f851a0bd Restore headers in pool devices
- headers are needed for proper formatting
2023-12-12 05:16:31 +01:00
bergware
eb0c24c946 device_list: fix columns 2023-12-12 00:43:25 +01:00
bergware
c1440a2964 Styling enhancements to improve consistency 2023-12-11 22:47:03 +01:00
bergware
47094219b6 Styling enhancements to improve consistency 2023-12-11 22:32:01 +01:00
bergware
8908bb3c37 Styling enhancements to improve consistency 2023-12-11 22:26:49 +01:00
bergware
4d53179ff5 Dashboard: fix docker tooltip 2023-12-11 21:50:37 +01:00
SimonFair
cd28836d26 Initial Commit 2023-12-11 20:50:20 +00:00
bergware
e67214a3a2 Styling enhancements to improve consistency 2023-12-11 20:45:19 +01:00
bergware
d5f5ddcddf Styling enhancements to improve consistency 2023-12-11 20:43:49 +01:00
bergware
bddc9bb40a Styling enhancements to improve consistency 2023-12-11 20:42:28 +01:00
bergware
7531a48c1f Styling enhancements to improve consistency 2023-12-11 20:33:13 +01:00
bergware
ef3ba845ed Styling enhancements to improve consistency 2023-12-11 20:17:19 +01:00
bergware
09e8740c04 Styling enhancements to improve consistency 2023-12-11 20:11:21 +01:00
tom mortensen
8384054396 Merge pull request #1542 from bergware/master
rc.inet1: remove leading zeros in IPv4 and IPv6 addresses
2023-12-11 08:40:08 -08:00
bergware
45fe443294 Disk settings: fix regression error 2023-12-11 14:50:55 +01:00
bergware
643370cfe0 Styling update 2023-12-11 13:29:56 +01:00
bergware
797bf4db7b Styling updates 2023-12-11 13:22:35 +01:00
bergware
ecc6691cc6 Main page: styling adjustments 2023-12-11 12:46:20 +01:00
bergware
96eb993106 Remove deprecated class 2023-12-10 14:42:34 +01:00
bergware
651ace73d1 Dashboard: style update 2023-12-10 14:26:27 +01:00
bergware
1bd727541a Dashboard: style update 2023-12-10 13:58:10 +01:00
bergware
580e9e0bee Dashboard: style update 2023-12-10 13:39:51 +01:00
bergware
9a88400fa5 Fix Language page 2023-12-10 13:25:12 +01:00
bergware
888fd6ab32 Vars: only show defined global variables 2023-12-10 12:41:09 +01:00
bergware
e521f372a5 Vars: only show defined global variables 2023-12-10 12:39:03 +01:00
bergware
cef4396f7f Updated table styling 2023-12-10 11:41:54 +01:00
bergware
edc5b9dd93 Updated table styling 2023-12-10 11:34:07 +01:00
bergware
b00cfdceb4 Main page: fix initial table creation 2023-12-10 10:53:21 +01:00
bergware
06de7da7d8 Main page: fix initial table creation 2023-12-10 09:42:24 +01:00
bergware
513bba78ed Pool devices: use only one header for multiple pools 2023-12-10 08:12:52 +01:00
bergware
f0040a97fc Revert "Pool devices: use only one header for multiple pools"
This reverts commit 66f1508a24.
2023-12-10 07:28:41 +01:00
bergware
5287b81134 Dashboard: add VM usage to graph 2023-12-10 06:40:47 +01:00
bergware
7b828ceba1 rc.inet1: remove leading zeros in IPv4 and IPv6 addresses
This applies to:
1. Interface addresses
2. Gateway addresses
3. DNS servers
2023-12-09 19:47:29 +01:00
bergware
a1705f9823 rc.inet1: remove leading zeros in IPv4 and IPv6 addresses 2023-12-09 19:25:10 +01:00
tom mortensen
651fa7d6d4 Merge pull request #1541 from bergware/master
rc.libvirt: skip non-existing XML files
2023-12-09 10:20:00 -08:00
bergware
e10590bb9c rc.inet1: remove leading zeros in IPv4 and IPv6 addresses 2023-12-09 19:00:10 +01:00
bergware
010eaceba7 rc.inet1: remove leading zeros in IPv4 and IPv6 addresses 2023-12-09 18:48:38 +01:00
bergware
5271163b31 rc.inet1: remove leading zeros in IPv4 address 2023-12-09 17:35:09 +01:00
bergware
921f7a8e08 rc.inet1: remove leading zeros in IPv4 address 2023-12-09 16:57:30 +01:00
bergware
95e8b53cab rc.inet1: remove leading zeros in IPv4 address 2023-12-09 16:45:23 +01:00
bergware
f4ec4db8e5 rc.inet1: remove leading zeros in IPv4 address 2023-12-09 16:37:57 +01:00
bergware
3701a50c5b Revert "remove leading zeros in IPv4 address"
This reverts commit 030f79e69e.
2023-12-09 16:21:22 +01:00
bergware
4a8dafea33 Fix exceed function 2023-12-09 16:01:09 +01:00
bergware
bb29436280 Dashboard: allow negative temps to show 2023-12-09 15:51:32 +01:00
bergware
7638cdac4a Dashboard: fix smart health detection 2023-12-09 15:29:44 +01:00
bergware
46726bfa2e Dashboard: allow negative temps to show 2023-12-09 15:07:01 +01:00
bergware
20db70bc3a Dashboard: allow negative temps to show 2023-12-09 15:04:15 +01:00
bergware
030f79e69e remove leading zeros in IPv4 address 2023-12-09 14:52:36 +01:00
bergware
0f767eb9f7 Merge remote-tracking branch 'upstream/master' 2023-12-09 10:50:37 +01:00
bergware
b7a51773c1 rc.libvirt: skip non-existing XML files 2023-12-09 10:48:08 +01:00
tom mortensen
183e67d0e9 Merge pull request #1539 from bergware/master
Updates
2023-12-08 12:33:27 -08:00
tom mortensen
151fb346ad Merge pull request #1538 from ich777/ich777-regressionfix-rc.S
Fix regression error
2023-12-08 12:32:56 -08:00
bergware
7b7b941c84 css simplification 2023-12-07 20:29:37 +01:00
bergware
c43ddab79d Revert "css simplification"
This reverts commit c414984258.
2023-12-07 20:24:22 +01:00
bergware
c414984258 css simplification 2023-12-07 20:21:49 +01:00
bergware
66f1508a24 Pool devices: use only one header for multiple pools 2023-12-07 19:23:47 +01:00
SimonFair
505205089d Add spin up check to CD info function. 2023-12-07 14:37:00 +00:00
bergware
d35883d2dc Dashboard: show Docker vDisk or Docker Folder 2023-12-07 13:33:41 +01:00
bergware
d965d43b83 Disk settings: new option " Enable NVME power monitoring
OFF by default
2023-12-07 13:33:14 +01:00
5fd1f99430 Fix regression error
- Mistakes where made
- Fix boot for BTRFS and XFS
2023-12-07 08:57:48 +01:00
tom mortensen
a59e63369e Merge pull request #1535 from bergware/master
Dashboard: fix header summary when hide/close tile
2023-12-06 12:35:42 -08:00
bergware
86c9cc7c2c curl_socket: allow GET/POST request 2023-12-06 09:22:51 +01:00
bergware
e65bd73f67 curl_socket: allow GET/POST request 2023-12-06 09:22:07 +01:00
bergware
be877cc6e5 curl_socket: allow GET/POST request 2023-12-06 09:17:23 +01:00
bergware
7096133313 curl_socket: allow GET/POST request 2023-12-06 09:13:21 +01:00
bergware
56427c2894 update1: keep dynamix variables up-to-date 2023-12-06 09:03:49 +01:00
bergware
2a2ef40e08 Dashboard: fix header summary when hide/close tile 2023-12-06 04:36:24 +01:00
bergware
55fbf493dc Dashboard: fix header summary when hide/close tile 2023-12-06 04:23:40 +01:00
bergware
ca6930a109 Dashboard: fix header summary when hide/close tile 2023-12-06 03:10:41 +01:00
bergware
a60b719c4a Dashboard: fix header summary when hide/close tile 2023-12-06 02:55:57 +01:00
tom mortensen
cd151f8717 Merge pull request #1534 from bergware/master
Set temperature thresholds for SSD devices automatically higher
2023-12-05 12:51:52 -08:00
bergware
c7c0e5e4dd Docker: stop nchan when leaving page 2023-12-05 17:39:21 +01:00
bergware
d33f464634 Dashboard: fix word spacing 2023-12-05 13:40:50 +01:00
bergware
497f80e046 Dashboard: add legend 2023-12-05 13:23:58 +01:00
bergware
7868cf61e5 DashStats: make css coding consistent 2023-12-05 12:58:52 +01:00
bergware
a61654241b Update helptext.txt 2023-12-05 12:02:34 +01:00
bergware
8ba7c9387d Update DashStats.page 2023-12-05 11:18:31 +01:00
bergware
900039eba6 Dashboard: make "Power" in header optional 2023-12-04 23:17:50 +01:00
bergware
6a581d3e72 More enhancements
Main: Put "Power" in title only when nvme devices are present
Dashboard: add resource size to tooltip
2023-12-04 22:52:09 +01:00
bergware
8118d0bda6 Update DashStats.page 2023-12-04 20:38:19 +01:00
bergware
8dd6e6dd1b More enhancements and fixes based on feedback
- Disk settings: Separate SSD temperature thresholds
- Dashboard: more descriptive system resources + tooltip
- Wrappers: fix NVME power value retrieval
2023-12-04 20:29:42 +01:00
bergware
8b72f51544 Dashboard: remove junk 2023-12-04 14:16:19 +01:00
bergware
88e022a116 Dashboard: minor code update 2023-12-04 14:13:11 +01:00
bergware
7ecdc0a862 Dashboard: fix alignment 2023-12-04 13:53:06 +01:00
bergware
8bb01bdbe7 Dashboard: fix theme gray color 2023-12-04 13:50:16 +01:00
bergware
daac76acb7 Dashboard: add hover feature to system resources 2023-12-04 13:46:16 +01:00
bergware
303cc050c6 Dashboard: add hover feature to system resources 2023-12-04 13:38:23 +01:00
bergware
7b06f10193 Dashboard: add hover feature to system resources 2023-12-04 13:28:00 +01:00
bergware
1dc3c6e30d Dashboard: new system resources presentation
Fix tile open/close
2023-12-04 08:54:18 +01:00
bergware
0871a7cc5d Dashboard: new system resources presentation
Use circular bar to represent resources
Make ZFS usage part of RAM usage (with different color)
2023-12-04 08:06:20 +01:00
bergware
a4082d0069 Mover Settings: place "Move" button at end 2023-12-03 21:01:12 +01:00
bergware
6ac604a810 Enhanced styling 2023-12-03 20:07:45 +01:00
bergware
98d5f97557 Enhanced styling 2023-12-03 19:07:22 +01:00
bergware
e1c3d13c39 Enhanced styling 2023-12-03 18:41:55 +01:00
bergware
a0aed9059c Update DockerSettings.page 2023-12-03 17:47:38 +01:00
bergware
4e62c81e72 Enhanced styling 2023-12-03 17:02:25 +01:00
bergware
49b43beaac Enhanced styling 2023-12-03 15:59:19 +01:00
bergware
b1f3de12c7 Enhanced styling 2023-12-03 15:43:27 +01:00
bergware
58cdbf842b Enhanced styling 2023-12-03 15:27:17 +01:00
bergware
a588024d93 Enhanced styling 2023-12-03 14:54:04 +01:00
bergware
b16a844639 Enhanced styling 2023-12-03 14:43:39 +01:00
bergware
575160c5e0 Enhanced styling 2023-12-03 14:03:23 +01:00
bergware
9d32afeb30 Enhanced styling
- Remove legacy css
- Improve styling of tables
2023-12-03 13:48:17 +01:00
bergware
02ff3bb45d Fix disk usage monitoring 2023-12-02 21:05:22 +01:00
bergware
ea98f0dc5d Update Wrappers.php 2023-12-02 20:12:40 +01:00
bergware
967bb771c4 get-nvme-info: fix state value 2023-12-02 19:59:32 +01:00
bergware
c6647ff200 Dashboard: remove 'fire' icon 2023-12-02 19:48:12 +01:00
bergware
02dc1d325f Dashboard: remove 'fire' icon 2023-12-02 19:43:43 +01:00
bergware
1f07e7c451 Make 'W' (Watt) translatable 2023-12-02 19:34:39 +01:00
bergware
d1b42cac03 Update Helpers.php 2023-12-02 19:25:03 +01:00
bergware
697b91704a Include degree symbol in temperature unit 2023-12-02 19:21:37 +01:00
bergware
1e82d109c4 DeviceInfo: fix regression error 2023-12-02 19:10:58 +01:00
bergware
90823a41c7 Disk settings: add unit to shutdown time-out setting 2023-12-02 18:55:27 +01:00
bergware
81c82ea88d Disk Setting: use placeholder for default settings 2023-12-02 18:51:36 +01:00
bergware
5d423e0227 Disk Setting: use placeholder for default settings 2023-12-02 18:37:43 +01:00
bergware
e51bd8ae33 Updated: NVME power state / temp threshold 2023-12-02 18:17:20 +01:00
bergware
4e3e0a1278 Styles: add sans-serif font as backup choice 2023-12-02 18:06:37 +01:00
bergware
d26895204e Include degree symbol in temperature unit 2023-12-02 17:57:13 +01:00
bergware
161d5f1481 DeviceInfo: fix device cycling 2023-12-02 17:28:14 +01:00
bergware
50cd2bea80 Update SmartInfo.php 2023-12-02 15:03:58 +01:00
bergware
93e22d1d5d Dashboard: add NVME power indicator 2023-12-02 14:09:06 +01:00
bergware
8d2e93f9e8 Dashboard: add NVME power indicator 2023-12-02 14:01:49 +01:00
bergware
28c58465da Dashboard: add NVME power indicator 2023-12-02 12:56:52 +01:00
bergware
9663867b47 Introduce new disk setting "Default SSD offset temperature"
- add celsius / fahrenheit conversion routines
2023-12-02 11:49:14 +01:00
bergware
49f7afdc55 Remove legacy setting 2023-12-02 10:35:04 +01:00
bergware
6bca833663 Make SSD offset a variable instead of hardcoded
Hidden variable for the moment
2023-12-02 10:13:38 +01:00
bergware
f34542d5d7 Set temperature thresholds for SSD devices automatically higher 2023-12-02 04:24:44 +01:00
bergware
57f36a8893 Disk settings: show default values as placeholder 2023-12-02 02:56:40 +01:00
bergware
2f089068ff Disk settings: show default values as placeholder 2023-12-02 02:41:40 +01:00
bergware
b1f7b37ff0 Set temperature thresholds for SSD devices automatically higher
- Add 15 degrees extra for SSD devices as standard 'hot' and 'max' thresholds
- User can overwrite defaults by setting thresholds for a specific device
2023-12-02 02:08:47 +01:00
tom mortensen
4be462d122 Merge pull request #1533 from ich777/ich777-patch-2
Fix for btrfs and xfs boot
2023-12-01 14:18:40 -08:00
tom mortensen
ef6f8de3ce Merge pull request #1532 from ich777/patch-1
Update keymaps
2023-12-01 14:15:52 -08:00
tom mortensen
7fca1d5d3c Merge pull request #1529 from bergware/master
Main page: NMVE status updates
2023-12-01 14:15:12 -08:00
bergware
9cb1db2e25 Boot page: add host name in title 2023-12-01 17:44:20 +01:00
05592627f8 Fix for btrfs and xfs boot
- Use first partition for btrfs and xfs boot, this allows a btrfs mirror to boot
2023-12-01 16:24:44 +01:00
eb5dbf0a6c Update keymaps
- Added missing keymaps
- Corrected a few keymaps
2023-12-01 14:04:33 +01:00
bergware
98b5fca350 Updated: NVME power state / temp threshold 2023-12-01 13:06:18 +01:00
bergware
a8fbdfec74 Updated: NVME power state / temp threshold 2023-12-01 12:45:40 +01:00
bergware
6203bfbc82 Updated: NVME power state / temp threshold 2023-12-01 12:23:30 +01:00
bergware
b17b82ff20 Updated: NVME power state / temp threshold 2023-12-01 12:01:20 +01:00
bergware
5e6432203d Update Wrappers.php 2023-12-01 03:33:28 +01:00
bergware
a9bff683f3 Update Wrappers.php 2023-12-01 03:30:24 +01:00
bergware
b4be186dda Network address fixes 2023-12-01 02:38:36 +01:00
bergware
0434cf2700 Fix IPv6 static address assignment 2023-11-30 23:59:36 +01:00
bergware
8aa102b595 Updated: NVME power state / temp threshold 2023-11-30 23:42:25 +01:00
bergware
20a4d46013 Updated: NVME power state / temp threshold 2023-11-30 23:34:30 +01:00
bergware
bd4751d068 Updated: NVME power state / temp threshold 2023-11-30 23:32:04 +01:00
bergware
f45fd2e456 Updated: NVME power state / temp threshold 2023-11-30 23:05:17 +01:00
bergware
f6f0458dbb pdated: NVME power state / temp threshold 2023-11-30 22:37:40 +01:00
bergware
55094ebdc3 Updated: NVME power state / temp threshold 2023-11-30 21:37:57 +01:00
bergware
04cc604bd5 Updated: NVME power state / temp threshold 2023-11-30 21:29:45 +01:00
bergware
cf580c9522 Styling: change indentation based on screen width 2023-11-30 18:38:30 +01:00
bergware
74a92996e4 Add automatics NVME temperature thresholds 2023-11-30 17:44:02 +01:00
bergware
e0eae08fa1 Fix IPv6 static address assignment 2023-11-30 16:58:27 +01:00
bergware
a8067e9333 Fix IPv6 static address assignment 2023-11-30 16:56:12 +01:00
bergware
48f38cf561 Fix IPv6 static address assignment 2023-11-30 16:16:54 +01:00
bergware
b2a26954fd Add automatics NVME temperature thresholds 2023-11-30 16:16:21 +01:00
bergware
52e7e7c710 Enhanced boot page 2023-11-30 14:23:43 +01:00
bergware
69f15066bb Enhanced boot page 2023-11-30 14:20:03 +01:00
bergware
583b0fa1c9 Main page: NMVE status updates 2023-11-30 13:29:36 +01:00
bergware
07ca2676aa Main page: NMVE status updates 2023-11-30 13:25:16 +01:00
bergware
e138db25e5 Main page: NMVE status updates 2023-11-30 13:17:30 +01:00
bergware
67c72954db Main page: NMVE status updates 2023-11-30 13:16:01 +01:00
bergware
0f7a225106 Main page: NMVE status updates 2023-11-30 12:57:05 +01:00
tom mortensen
988e005d4c Merge pull request #1528 from bergware/master
Nchan processes: only publish on changes
2023-11-29 09:01:52 -08:00
bergware
6919d12ed5 Enhanced boot page 2023-11-28 21:51:10 +01:00
bergware
5268c28fb5 Enhanced boot page 2023-11-28 21:31:48 +01:00
bergware
d43163e574 Main: undo styling update 2023-11-28 19:33:05 +01:00
bergware
1a362eb432 Remove legacy setting: "Show Dashboard apps"
Dashboard has individual tile settings to show or hide content
2023-11-28 18:53:57 +01:00
bergware
b59198473b Stop nchan subscriber when leaving page 2023-11-28 16:52:15 +01:00
bergware
a2389ce519 Stop nchan subscriber when leaving page 2023-11-28 16:50:56 +01:00
bergware
f5f255ea86 Stop nchan subscriber when leaving page 2023-11-28 16:33:45 +01:00
bergware
de459576de Nchan processes: only publish on changes 2023-11-28 16:00:22 +01:00
bergware
612ae0e652 Move "PS" info to device info 2023-11-28 15:45:22 +01:00
bergware
8d3790df88 Nchan processes: only publish on changes 2023-11-28 15:44:50 +01:00
bergware
5072989303 Update publish.php
Remove subscriber check from publish()
Create "standard" curl_socket()
2023-11-28 15:44:22 +01:00
bergware
b31beca2ec Update Helpers.php 2023-11-28 14:31:54 +01:00
bergware
02fe880652 Fix PHP8 errors 2023-11-28 14:30:44 +01:00
bergware
9a8fe9d80b Fix regression error in publish.php
- We still need the function "curl_socket"
2023-11-28 13:51:46 +01:00
bergware
4d4a52fc5e Update DashStats.page 2023-11-28 12:48:23 +01:00
bergware
8fde2e5c3a Nchan processes: only publish on changes 2023-11-28 12:19:09 +01:00
tom mortensen
8ef461432f Merge pull request #1527 from zackspear/fix/vue-components-azure-gray-theme-handling
fix(vue): azure & gray theme handling
2023-11-27 23:46:59 -08:00
tom mortensen
fff9c55a98 Merge pull request #1524 from SimonFair/NVME-PowerState
NVME power state
2023-11-27 23:45:59 -08:00
tom mortensen
b9bc7a6c43 Merge pull request #1523 from bergware/master
Styling enhancements
2023-11-27 23:45:28 -08:00
tom mortensen
d9e4aaa664 Merge pull request #1522 from ich777/master
Update rc.S & Add GRUB config to WebGUI
2023-11-27 23:44:56 -08:00
tom mortensen
9e01fd7c40 Merge pull request #1521 from SimonFair/Multi-disk-locations
Add storage override option
2023-11-27 23:44:21 -08:00
bergware
bd0c5c4e09 Publish messages only when active subscribers are present 2023-11-28 04:15:50 +01:00
bergware
989bef6130 Fix PHP8 errors 2023-11-28 01:19:02 +01:00
bergware
7bc581e77a Publish messages only when active subscribers are present 2023-11-28 00:56:57 +01:00
Zack Spear
da09581f92 fix(vue): azure & gray theme handling 2023-11-27 17:51:21 -05:00
f3522e7b5e - Add GRUB configuration to WebGUI
- Show only GRUB or SYSLINUX config in WebGUI
2023-11-27 21:14:49 +01:00
SimonFair
89d14027f0 Update Helpers.php 2023-11-26 19:34:19 +00:00
bergware
469244dacf Minor style format update 2023-11-26 12:06:33 +01:00
bergware
d2531eeb81 Minor azure/gray update 2023-11-26 11:44:34 +01:00
bergware
24359052f4 Minor azure/gray update 2023-11-26 11:42:34 +01:00
bergware
ffe3988a46 Minor style format update 2023-11-26 11:38:57 +01:00
bergware
b3aa15e8e6 Update DefaultPageLayout.php 2023-11-26 11:25:03 +01:00
bergware
e74d29f742 Enhanced boot page 2023-11-26 11:15:44 +01:00
bergware
ce87e71c48 Revert "Enhanced boot page"
This reverts commit 884887fe3c.
2023-11-26 11:05:21 +01:00
bergware
884887fe3c Enhanced boot page 2023-11-26 10:58:24 +01:00
bergware
73b35183aa Enhanced boot page 2023-11-26 10:34:52 +01:00
bergware
13c9915305 Enhanced boot page 2023-11-26 10:19:10 +01:00
bergware
138d356476 Enhanced boot page 2023-11-26 10:16:54 +01:00
bergware
f6ea92b523 Enhanced boot page 2023-11-26 10:00:25 +01:00
SimonFair
08e9ec6a2f Update Helpers.php 2023-11-25 17:22:10 +00:00
SimonFair
b07dfc9386 Update device_list 2023-11-25 17:16:27 +00:00
SimonFair
63762bfcd9 Initial commit. 2023-11-25 17:11:38 +00:00
bergware
755c541c29 Enhanced boot page 2023-11-25 15:28:10 +01:00
bergware
15509d0cff Update notice styling 2023-11-25 14:08:25 +01:00
bergware
025cc272c5 Update notice.png 2023-11-25 13:58:56 +01:00
bergware
fff29f3b53 Update notice styling 2023-11-25 13:49:33 +01:00
SimonFair
c636ab6029 Self test fix for NVMEs 2023-11-25 12:27:37 +00:00
bergware
e7406a997b Enhanced boot page
- Follow theme colors
- Include array messages
2023-11-25 12:10:27 +01:00
bergware
13db045dd2 Update notice styling 2023-11-25 09:26:17 +01:00
bergware
b437701540 Make _var() more universal 2023-11-24 22:42:43 +01:00
SimonFair
5f06519bdc Update helptext and codetidy. 2023-11-24 20:54:35 +00:00
bergware
4f36bb74ae Dashboard / Main page: adjust switch button location 2023-11-24 16:19:52 +01:00
SimonFair
9c85e6132f Fix UUID change in xml view 2023-11-24 14:23:18 +00:00
bergware
d132224b31 Merge remote-tracking branch 'upstream/master' 2023-11-24 15:14:50 +01:00
bergware
d0019abfc6 Show settings right aligned 2023-11-24 15:11:46 +01:00
bergware
00fa203f48 Show settings right aligned 2023-11-24 15:09:40 +01:00
bergware
44e49146de Show settings right aligned 2023-11-24 14:54:29 +01:00
bergware
b09e015234 Docker: improved configuration styling
- added icon to variable type
2023-11-24 14:53:53 +01:00
bergware
73bef37e54 Update Console.page 2023-11-24 12:21:41 +01:00
SimonFair
ec3b1e1f2b Update VMMachines.php 2023-11-23 19:44:33 +00:00
SimonFair
97496beeb7 Add override path support
Bug fix metadata on revert
2023-11-23 19:41:02 +00:00
SimonFair
4f88a29c8f Add override path support
bug fix for metadata on revert.
2023-11-23 19:39:49 +00:00
SimonFair
3d75dbc7d5 Remove nodatacow 2023-11-22 23:41:23 +00:00
c602a641ae Update rc.S
- Support for XFS boot
2023-11-22 22:39:03 +01:00
SimonFair
2987d3f4f8 Add storage override option
Add storage override to specify where images are created at add VM.
2023-11-21 21:43:07 +00:00
tom mortensen
b9be5cc943 Merge pull request #1518 from zackspear/refactor/6-13-feedback
refactor(vue): update feedback & improvements
2023-11-21 10:53:35 -08:00
tom mortensen
8db7dd714d Merge pull request #1520 from SimonFair/Multi-disk-locations
Add SR-IOV support for Intel iGPU.
2023-11-21 10:52:55 -08:00
tom mortensen
60066950e7 Merge pull request #1519 from SimonFair/Fix-prefix-in-diags
Remove prefix().
2023-11-21 10:51:12 -08:00
Zack Spear
373762c912 refactor(vue): state.php read case model from flash 2023-11-21 10:43:22 -08:00
Zack Spear
172a263856 revert: SelectCase cookie setter 2023-11-21 10:43:04 -08:00
SimonFair
eb5eb804f1 fix code 2023-11-21 18:34:13 +00:00
SimonFair
a2f4a82f57 fix code 2023-11-21 18:31:32 +00:00
SimonFair
2fa3e5090f fix code 2023-11-21 18:30:51 +00:00
SimonFair
e045a9e047 Add SR-IOV support for Intel iGPU. 2023-11-21 18:26:29 +00:00
SimonFair
f1d7a42658 Remove prefix. 2023-11-21 08:05:38 +00:00
Zack Spear
6318f12de2 fix: caseModel getting error 2023-11-20 19:28:07 -08:00
Zack Spear
46ce506107 refactor: SelectCase caseModel cookie setting 2023-11-20 18:34:50 -08:00
Zack Spear
95796946d9 refactor(vue): updateOs type fix 2023-11-20 18:26:49 -08:00
Zack Spear
0fb71bc3b6 fix(plg): third party reboot detection 2023-11-20 18:04:05 -08:00
Zack Spear
aaff2825d2 refactor(vue): support caseModel in callback inits 2023-11-20 18:00:12 -08:00
Zack Spear
44191cc68a feat: caseModel passed to web components 2023-11-20 18:00:12 -08:00
Zack Spear
8fbd03739d refactor(upc): dateFormat usage, thirdPartyDrivers message for updates 2023-11-20 18:00:11 -08:00
Zack Spear
02671a38d6 refactor(plg): include Translations wrapper in translation class 2023-11-20 18:00:11 -08:00
Zack Spear
44e7d811aa refactor: reboot details var name spelling 2023-11-20 18:00:11 -08:00
Zack Spear
6e8036f619 refactor: flash_backup _var usage Wrappers include 2023-11-20 18:00:11 -08:00
tom mortensen
7e785b9e1d Merge pull request #1516 from bergware/master
UPS: fix PHP8 error
2023-11-20 12:40:06 -08:00
bergware
582743f079 Simplify notifications
- Make View, History and Acknowledge the main actions
- Remove submenus
2023-11-18 20:47:44 +01:00
bergware
8adacee0a0 VM; change circle-o to dot-circle-o 2023-11-18 17:28:53 +01:00
bergware
222e3a68ee VM machines: insert space between text and icon 2023-11-18 17:24:37 +01:00
bergware
23236a9b08 UPS: fix PHP8 error 2023-11-16 22:35:53 +01:00
tom mortensen
eec6ce53f5 Merge pull request #1515 from bergware/master
GUI enhancements
2023-11-16 09:33:53 -08:00
bergware
6bb9c351a5 GUI search: update styling for black/white themes 2023-11-16 17:50:01 +01:00
bergware
66a642f918 VM machines: insert space between text and icon
Fix English phrase
2023-11-16 17:36:09 +01:00
bergware
c500553d8b My servers: fixed invalid translation 2023-11-16 12:27:25 +01:00
bergware
deb591208f GUI search: update styling for black/white themes 2023-11-16 11:30:56 +01:00
bergware
d38f83c3c2 Console settings: move help text from inline to helptext file 2023-11-16 11:30:27 +01:00
Tom Mortensen
3e74f3ecb4 slight change in where 'safe mode' is checked in installing 3rd party drivers 2023-11-15 15:46:05 -08:00
Tom Mortensen
e908db97f8 enclose arguemnt to emcmd() with single-quotes 2023-11-15 15:45:08 -08:00
tom mortensen
4979e4049b Merge pull request #1508 from SimonFair/Add-none-option-for-keymap-for-virtual-gpu
Add option for no keymap.
2023-11-14 09:18:56 -08:00
tom mortensen
07a24e3d5e Merge pull request #1507 from bergware/master
New device spin up/down logic
2023-11-14 09:18:13 -08:00
tom mortensen
f4c0f754bc Merge pull request #1506 from ich777/patch-3
Update diagnostics
2023-11-14 09:17:12 -08:00
tom mortensen
d10703369f Merge pull request #1504 from zackspear/refactor/update-os-demo-feedback
refactor: update os feedback
2023-11-14 09:16:30 -08:00
tom mortensen
1996730456 Merge pull request #1503 from ich777/local_console
Local Console settings
2023-11-14 09:15:53 -08:00
tom mortensen
63ba0d0895 Merge pull request #1501 from ich777/patch-2
Initial btrfs boot device support
2023-11-14 09:15:07 -08:00
tom mortensen
02b50c8721 Merge pull request #1498 from ich777/master
Update rc.S.cont
2023-11-14 09:14:40 -08:00
SimonFair
ed98550088 Add option for no keymap. 2023-11-14 16:09:40 +00:00
bergware
82da91c96c New device spin up/down logic
Based on implementation for beta 23
2023-11-14 13:40:11 +01:00
6dc260a173 Update Console.page
- Implemented changes suggested by @bergware
2023-11-14 12:10:21 +01:00
0eb913bba5 Update diagnostics
- add gpujson from gpu_statistics to diagnostics
2023-11-14 07:55:32 +01:00
2af0c3b088 Update Console.page
- Change drop down text for persistent bash history from No/Yes to Disabled/Enabled
2023-11-14 06:19:18 +01:00
Zack Spear
3f1b95dc49 refactor: flash_backup _var usage Wrappers include 2023-11-13 17:17:30 -08:00
Zack Spear
9dabbcdb9c refactor: re-add js functions with notes for future removal 2023-11-13 16:54:31 -08:00
Zack Spear
ead1adfc46 refactor: flash_backup _var usage 2023-11-13 16:50:10 -08:00
Zack Spear
9b2c5ad257 fix: creation of /var/tmp/unRAIDServer.txt for change log viewer 2023-11-13 16:37:36 -08:00
Zack Spear
d68205c1d5 refactor: spinner remove bg color from overlay to prevent wide animation out 2023-11-13 15:02:35 -08:00
Zack Spear
fac9142b62 chore: copyright comments 2023-11-13 14:59:09 -08:00
cabbdac3f5 Update rc.S.cont
- make sure to run rc.modules.local when unraidsafemode is enabled
2023-11-13 22:46:08 +01:00
Zack Spear
ba3bdf5f38 refactor: add loader to release note viewer on open 2023-11-13 13:40:02 -08:00
Zack Spear
f0f73fd24c refactor: spinner overlay cover entire page 2023-11-13 13:34:35 -08:00
tom mortensen
a1b2c69441 Merge pull request #1497 from zackspear/refactor/web-component-updates
Refactor/web component updates
2023-11-13 12:23:56 -08:00
tom mortensen
781fc20d16 Merge pull request #1502 from bergware/master
Several styling enhancements
2023-11-13 10:51:45 -08:00
2cb6e86f93 - Create page for Local Console
- Create console script
- Create rc.keymap and modify default ot be compatible with local console settings
- Change rc.setterm to be compatible with local console settings
- Change rc.local to be compatible with persistent bash history
2023-11-13 19:42:44 +01:00
bergware
6cd3c0b47a GUI search: fix javascript errors 2023-11-13 13:25:24 +01:00
bergware
ff6c60b156 GUI search: minor code refactoring 2023-11-13 13:18:01 +01:00
bergware
cdc7e59e38 GUI search: fix javascript errors 2023-11-13 13:02:12 +01:00
bergware
8b248a75ff GUI search: fix javascript errors 2023-11-13 12:50:17 +01:00
bergware
5cd3309251 GUI search: fix javascript errors 2023-11-13 12:47:18 +01:00
8a24f617ec Update rc.S
- change discard from the default async to sync since usually not much writes happening on the boot device and performance hit should be negligible
2023-11-13 12:10:33 +01:00
bergware
e11d514c7f GUI search: minor code refactoring 2023-11-13 11:27:42 +01:00
bergware
677c2c716f GUI search: minor code refactoring 2023-11-13 11:23:12 +01:00
bergware
2ad6b49479 GUI search: minor code refactoring 2023-11-13 04:45:55 +01:00
bergware
e5f6d798b6 GUI search: themes black/white updates 2023-11-13 04:39:13 +01:00
bergware
86803f893b GUI search: theme azure/gray updates 2023-11-13 04:37:00 +01:00
bergware
16e0206063 GUI search: minor code refactoring 2023-11-13 02:29:44 +01:00
bergware
14cc2f88e1 GUI search: themes azure/gray control fix 2023-11-13 02:06:43 +01:00
bergware
a86651fafb GUI search: themes azure/gray style fix 2023-11-13 01:12:41 +01:00
bergware
4187e0bf14 GUI search: themes azure/gray style fix 2023-11-13 01:11:05 +01:00
bergware
33ff5ff1af GUI search: minor code refactoring 2023-11-13 00:48:07 +01:00
bergware
941c4f4dc2 GUI search: themes azure/gray style fix 2023-11-13 00:47:32 +01:00
bergware
23e6b585cc GUI search: rename folder part to dynamix family 2023-11-13 00:15:11 +01:00
bergware
56c5a6c367 GUI search: theme black/white css fix 2023-11-12 23:29:21 +01:00
bergware
6274c6d3f9 GUI search: place jquery script in file 2023-11-12 23:04:42 +01:00
bergware
2c2bcbffc6 GUI search: minor code refactoring 2023-11-12 22:33:20 +01:00
bergware
eee838ee2c GUI search: themes black/white: place search icon inside input field 2023-11-12 22:16:00 +01:00
bergware
a9d91c8158 Themes gray/azure: fix font size 2023-11-12 21:39:53 +01:00
bergware
3d210bcf28 GUI search: fix themes black/white 2023-11-12 21:24:47 +01:00
bergware
919e941aa1 GUI search: fix themes azure/gray 2023-11-12 21:13:03 +01:00
bergware
7307da74d0 GUI search: make search results relative to input box position 2023-11-12 20:08:35 +01:00
bergware
d23eb14f0a GUI search: azure/gray styling update 2023-11-12 19:46:02 +01:00
bergware
4915a5c24f GUI search: use leading tabs 2023-11-12 18:39:03 +01:00
bergware
e8a47c3404 Revert "Update gui_search.page"
This reverts commit 31855f912e.
2023-11-12 18:37:07 +01:00
bergware
efba7faf92 Revert "GUI search: use leading tabs"
This reverts commit 916bc643ec.
2023-11-12 18:36:05 +01:00
bergware
916bc643ec GUI search: use leading tabs 2023-11-12 18:35:17 +01:00
bergware
31855f912e Update gui_search.page 2023-11-12 18:29:47 +01:00
bergware
3b3854e6f3 GUI search: use dynamix folder organization 2023-11-12 18:10:34 +01:00
bergware
ea95b2468e GUI search: remove unused hook file 2023-11-12 18:06:35 +01:00
bergware
81cc75d320 GUI search: move css styling to separate files 2023-11-12 18:02:49 +01:00
bergware
ba32b37941 GUI search: enhanced styling of search box
Azure/Gray themes: show search box along with menu item
2023-11-12 17:32:39 +01:00
bergware
d5936462a8 Language: improved button control 2023-11-12 15:16:51 +01:00
cec8287c3f Initial btrfs boot device support
- detect if boot device is btrfs or fall back to vfat
- set discard=async for btrfs
- correct permissions for NONVFAT boot after bzfirmware is mounted
2023-11-12 11:43:57 +01:00
tom mortensen
49b7df2d2d Merge pull request #1499 from SimonFair/Fix-spice-web-connect-
Fix spice autoconnect
2023-11-11 09:24:57 -08:00
SimonFair
d9b9fac0a1 Update Custom.form.php 2023-11-11 12:04:14 +00:00
SimonFair
e70d1fe12b Fix additional title text 2023-11-11 11:43:23 +00:00
SimonFair
72dfdd7172 Fix spice autoconenct
Update text from VNC to VM Console for titles and placeholders
2023-11-11 11:30:22 +00:00
Zack Spear
af2ff4002c refactor: web component translations class usage 2023-11-09 16:50:08 -08:00
Zack Spear
f90f091cba chore: myservers2 formatting 2023-11-09 16:40:50 -08:00
Zack Spear
35354c6117 refactor: web component server state to class 2023-11-09 16:40:31 -08:00
Zack Spear
419af0403d refactor: latest web component build 2023-11-09 16:38:36 -08:00
Zack Spear
6e9ee59ac7 refactor: Downgrade class usage and clean up 2023-11-09 16:38:09 -08:00
Zack Spear
caf7a0a558 chore: Update page formatting 2023-11-09 16:37:42 -08:00
348ebc3bc2 Update rc.S.cont
only execute rc.modules if unraidsafemode is not set
2023-11-09 11:06:05 +01:00
ljm42
79e4bb27c0 remove update banner from header
is now handled by web component
2023-11-08 08:57:59 -07:00
ljm42
02a446d8b9 allow showchanges to access /boot/previous/changes.txt 2023-11-08 08:55:38 -07:00
Zack Spear
6d64b53ac7 refactor: downgrade & update os web components 2023-11-07 16:46:40 -08:00
Zack Spear
ff3db071b9 Merge branch 'master' into refactor/web-component-updates 2023-11-07 16:18:42 -08:00
tom mortensen
dfa2199332 Merge pull request #1494 from SimonFair/QEMU-Cmdline-and-Clocks
Add offset and timer support
2023-11-07 09:04:19 -08:00
SimonFair
07176e8ff0 Update helptext for timers 2023-11-07 07:44:46 +00:00
SimonFair
baa1fa5327 Fix table spacing 2023-11-06 21:49:24 +00:00
tom mortensen
704cc582f1 Merge pull request #1495 from Squidly271/patch-5
Unlimited Width Plugin Obsolete
2023-11-06 08:50:46 -08:00
tom mortensen
605f228937 Merge pull request #1493 from bergware/master
Display settings: new setting "width"
2023-11-06 08:48:45 -08:00
bergware
dbb42cdd1b css update for themes gray / azure 2023-11-06 12:52:05 +01:00
bergware
10e3f0b8f7 Revert "Dashboard: css update for themes gray / azure"
This reverts commit 05a98e4aef.
2023-11-06 12:47:53 +01:00
bergware
05a98e4aef Dashboard: css update for themes gray / azure
Make 2 columns display fit on mobile devices
2023-11-06 12:22:39 +01:00
bergware
4d673a650b set-password: update mobile view 2023-11-06 12:17:58 +01:00
bergware
67a998c8b2 VMs: change icon to open circle 2023-11-06 09:33:07 +01:00
bergware
52b0358e09 Dashboard: set 3s lock when hovering over system resources 2023-11-06 09:23:50 +01:00
SimonFair
78c0aab5a5 Update Libre and OpenELEC Templates. 2023-11-05 23:51:49 +00:00
bergware
6c5f1f7438 Dashboard: set 5s lock when hovering over system resources
This prevents extensive cpu load when hovering over the bars
2023-11-05 21:14:27 +01:00
SimonFair
339f414515 remove testing code. 2023-11-05 16:58:55 +00:00
SimonFair
7308a5b1fa Remove duplicate startnow checkbox 2023-11-05 16:31:43 +00:00
SimonFair
108c27c8ad Code clean up and second set of buttons after advanced options 2023-11-05 16:29:00 +00:00
SimonFair
8f1fa9de6d Change timer defaults for new VM if hyperv changes 2023-11-05 15:45:33 +00:00
Squidly271
9c4517df58 Unlimitied Width Plugin Obsolete
Rendered obsolete by https://github.com/unraid/webgui/pull/1493

Finally :)
2023-11-05 09:25:36 -05:00
SimonFair
ea6500ae35 Add timer support 2023-11-05 14:02:38 +00:00
bergware
247786bc5c Display settings: new setting "width" 2023-11-05 12:51:47 +01:00
bergware
c10f57d7d5 Display settings: new setting "width" 2023-11-05 12:49:46 +01:00
bergware
e848e346d1 Display settings: new setting "width" 2023-11-05 12:47:23 +01:00
bergware
bafcba3269 Display settings: new setting "width" 2023-11-05 12:33:51 +01:00
bergware
0669cacb6a Display settings: new setting "width" 2023-11-05 12:32:49 +01:00
bergware
b01c0b9aff Display settings: new setting "width" 2023-11-05 11:44:47 +01:00
bergware
c7a1caba8a Display settings: new setting "width" 2023-11-05 11:38:19 +01:00
bergware
c10c255f2d Display settings: new setting "width" 2023-11-05 11:24:04 +01:00
bergware
d903a1da07 Update helptext.txt 2023-11-05 11:08:18 +01:00
bergware
78c704beba Display settings: new setting "width"
width = boxed (default, content width is constrained)
width = unlimited (content width is unlimited for higher resolutions)

This should stop the complaints about dashboard not displaying three columns on wide screens.
2023-11-05 11:02:32 +01:00
tom mortensen
abc4ef1c80 Merge pull request #1492 from SimonFair/QEMU-Cmdline-and-Clocks
QEMU cmdline
2023-11-04 18:15:05 -07:00
tom mortensen
35d863fa4a Merge pull request #1491 from bergware/master
Code alignment
2023-11-04 18:14:22 -07:00
SimonFair
a18a6032fd Update get Clock function 2023-11-04 20:23:03 +00:00
SimonFair
21c8d79c71 Fix QEMU args value 2023-11-04 11:45:39 +00:00
SimonFair
f725ea1acd Update libvirt_helpers.php 2023-11-04 11:38:07 +00:00
SimonFair
b6ff572965 Merge remote-tracking branch 'upstream/master' into QEMU-Cmdline-and-Clocks 2023-11-04 11:35:38 +00:00
SimonFair
e0a55a18be Add QEMU args Support 2023-11-04 11:32:15 +00:00
SimonFair
9f39b162d0 Add QEMU arg Support 2023-11-04 11:31:46 +00:00
bergware
3a073ed4bd Code alignment 2023-11-04 10:05:51 +01:00
Tom Mortensen
879a350963 Merge branch 'master' of github.com:unraid/webgui 2023-11-03 11:06:46 -07:00
tom mortensen
53a683fe07 Merge pull request #1490 from bergware/master
Fixes for ZFS subpools
2023-11-03 11:03:51 -07:00
bergware
8706f118eb File Manager: fix incorrect references 2023-11-03 18:06:40 +01:00
bergware
f340ab8635 Updated copyright year to 2023 2023-11-03 12:49:46 +01:00
bergware
6f8c5ec69e Updated copyright year to 2023 2023-11-03 12:45:07 +01:00
bergware
dbde622c27 Update Acknowledge.php 2023-11-03 12:40:31 +01:00
bergware
c9eb2593cf Updated copyright year to 2023 2023-11-03 12:36:03 +01:00
bergware
e60f112959 Docker settings: always show custom network type
network type is forced to macvlan when no bridging is enabled
2023-11-03 11:29:25 +01:00
tom mortensen
3ed29c1f37 Merge pull request #1486 from ich777/patch-1
Custom rsyslog config files
2023-11-02 09:34:17 -07:00
bergware
58ad4a8c87 Fixes for ZFS subpools 2023-11-02 13:51:41 +01:00
bergware
76757b5cf0 Fixes for ZFS subpools 2023-11-02 13:07:48 +01:00
bergware
ec125653d6 Fixes for ZFS subpools 2023-11-02 12:10:58 +01:00
bergware
1132e39eeb Fixes for ZFS subpools 2023-11-02 11:47:55 +01:00
bergware
8d43f62910 Update device_list 2023-11-02 11:28:45 +01:00
bergware
44e2a8ca6e Fixes for ZFS subpools 2023-11-02 05:04:55 +01:00
bergware
0e8bb053f9 Update ToggleState.php 2023-11-02 04:56:13 +01:00
bergware
46ad2a266d Fixes for ZFS subpools 2023-11-02 04:55:10 +01:00
bergware
af3a468654 Fixes for ZFS subpools 2023-11-02 04:31:07 +01:00
bergware
6bea55b8d2 Update DeviceInfo.page 2023-11-02 03:13:47 +01:00
bergware
e6c594e4dd Update CacheDevices.page 2023-11-02 03:13:35 +01:00
bergware
76660f6ca7 Update ArrayDevices.page 2023-11-02 03:07:36 +01:00
bergware
b037b2f1d7 Update DeviceInfo.page 2023-11-02 03:04:41 +01:00
bergware
8a94509dc6 Update CacheDevices.page 2023-11-02 03:00:03 +01:00
bergware
193a0b2270 Update device_list 2023-11-02 02:55:27 +01:00
bergware
5206813efe Update DeviceInfo.page 2023-11-02 02:55:22 +01:00
bergware
582bdb1507 Update device_list 2023-11-02 02:27:37 +01:00
bergware
ad456ee5a9 Update device_list 2023-11-02 02:18:53 +01:00
bergware
7154cc48fe Fixes for ZFS subpools 2023-11-02 01:56:26 +01:00
bergware
d09c9142e8 Remove Erase button from ZFS subpools 2023-11-02 01:56:06 +01:00
bergware
c709c45413 Fix timing issue when changing slots 2023-11-02 01:55:09 +01:00
bergware
bbf495a8ce Device_list fixes
- Allow changing slots when pool is erased
- Fix changing slots sometimes not updating the GUI
2023-11-02 01:54:26 +01:00
bergware
5686a8b5ae Device_list: add warning to disabled disk 2023-11-01 21:46:13 +01:00
bergware
2d39033930 Device_list: add warning to disabled disk 2023-11-01 21:43:57 +01:00
bergware
01fea8a0f0 Device_list: update help text for pools 2023-11-01 21:22:01 +01:00
bergware
54eae13ef4 Fixes for ZFS subpools 2023-11-01 20:33:36 +01:00
bergware
0be84e8fa0 Fixes for ZFS subpools 2023-11-01 20:01:27 +01:00
bergware
b7b7d2b01c Fixes for ZFS subpools 2023-11-01 19:57:18 +01:00
bergware
eef112fbd2 Fixes for ZFS subpools 2023-11-01 19:51:40 +01:00
bergware
304be089ee Fixes for ZFS subpools 2023-11-01 19:02:29 +01:00
bergware
839745a48f Update device_list 2023-11-01 18:50:07 +01:00
bergware
491bc80181 Update device_list 2023-11-01 18:39:24 +01:00
bergware
f03d8a0090 Fixes for ZFS subpools
ZFS subpools have a tilde in their name, which is an illegal character in PHP keys and HTML ids. A tilde is automatically replaced to avoid conflicts.

The MAIN page shows the total of a ZFS pool at end, also when subpools are part of it.
2023-11-01 18:18:22 +01:00
87e4de6084 Custom rsyslog config files
This allows to create custom config files for rsyslog in `/boot/config/rsyslog.d/` and link them on boot in the directory `/etc/rsyslog.d/`
2023-10-31 10:36:45 +01:00
Tom Mortensen
35da27cbab Merge branch 'master' of github.com:unraid/webgui 2023-10-30 09:47:34 -07:00
tom mortensen
019a3028d6 Merge pull request #1483 from SimonFair/VM-template-enhancements-for-Windows-VMs
Additional multifunction changes
2023-10-30 09:47:00 -07:00
SimonFair
b10bceac79 Additional multifunction changes
Slot has to be > 1 for pc and 0 for q35
2023-10-29 17:29:32 +00:00
tom mortensen
00a0087d2b Merge pull request #1482 from SimonFair/VM-template-enhancements-for-Windows-VMs
Fix to multifunction which fails with non zero slot on beta21
2023-10-28 14:03:06 -07:00
SimonFair
ce53616c6b Fix to multifunction which fails with non zero slot on beta21 2023-10-28 21:42:25 +01:00
Tom Mortensen
98fe14560b remove pool name suffix from subpool names displayed on Main 2023-10-28 09:18:18 -07:00
tom mortensen
23cf5da832 Merge pull request #1480 from bergware/master
Make $subpools a global variable (single occurence)
2023-10-28 09:16:05 -07:00
tom mortensen
66b458e53a Merge pull request #1474 from SimonFair/VM-template-enhancements-for-Windows-VMs
VM  template enhancements for windows vms
2023-10-28 09:15:17 -07:00
SimonFair
7663e0ca68 Fix errors in VS 2023-10-28 13:39:52 +01:00
bergware
030127933e DefaultPageLayout: move styling from inline to file 2023-10-28 11:02:49 +02:00
bergware
d4b1366dae Update DateTime.page 2023-10-28 10:13:39 +02:00
bergware
e7b31f410c Update DateTime.page 2023-10-28 09:46:41 +02:00
bergware
424ece83d0 Update update_3 2023-10-27 23:28:31 +02:00
bergware
7042fbc3ce Revert "Update Wrappers.php"
This reverts commit 0b70d9800d.
2023-10-27 23:06:08 +02:00
bergware
49ae347b1a Revert "Update update_3"
This reverts commit 889a002884.
2023-10-27 23:06:01 +02:00
bergware
889a002884 Update update_3 2023-10-27 23:01:18 +02:00
bergware
0b70d9800d Update Wrappers.php 2023-10-27 22:56:17 +02:00
bergware
41d5c0d536 Update Wrappers.php 2023-10-27 22:36:44 +02:00
bergware
e9af9d2dba Update Wrappers.php 2023-10-27 22:34:44 +02:00
bergware
16b1608856 Update update_3 2023-10-27 22:16:55 +02:00
bergware
f6ae39c70b Update update_3 2023-10-27 22:00:06 +02:00
bergware
9feff82fac Update update_3 2023-10-27 21:55:10 +02:00
bergware
323376b8e0 Date-Time: disable buttons asap 2023-10-27 21:33:45 +02:00
bergware
13316fc3c2 Move date & time settings from "Display Settings" to "Date & Time Settings" 2023-10-27 20:53:58 +02:00
bergware
88e4d42c55 Dashboard: display date and time in user selected formats 2023-10-27 20:32:11 +02:00
bergware
fcb72a9b5c Move date & time settings from "Display Settings" to "Date & Time Settings" 2023-10-27 19:48:16 +02:00
bergware
16803cc7f1 Move date & time settings from "Display Settings" to "Date & Time Settings" 2023-10-27 19:32:27 +02:00
bergware
0607942243 Update Dispatcher.php 2023-10-27 19:11:16 +02:00
bergware
b06fa2b659 Move date & time settings from "Display Settings" to "Date & Time Settings" 2023-10-27 18:53:30 +02:00
bergware
eb0efc0d5c Update SysDriversHelpers.php 2023-10-27 15:13:38 +02:00
bergware
adef4eb786 SysDevs: fix regression error 2023-10-27 15:09:15 +02:00
bergware
e6518f69e9 SysDrivers: improved styling 2023-10-27 14:46:22 +02:00
bergware
ecdce37046 SysDrivers: improved styling 2023-10-27 14:17:10 +02:00
bergware
25033cfacc SysDrivers: improved styling 2023-10-27 14:14:49 +02:00
bergware
03132c0dd5 SysDrivers: improved styling 2023-10-27 14:11:54 +02:00
bergware
a29d3220f0 SysDrivers: improved styling 2023-10-27 14:09:02 +02:00
bergware
28567ed365 SysDrivers: improved styling 2023-10-27 13:54:29 +02:00
bergware
5c627a44cd SysDrivers: improved styling 2023-10-27 13:51:15 +02:00
bergware
4bbccde8f7 SysDrivers: improved styling 2023-10-27 13:49:16 +02:00
bergware
b04c2e38a3 SysDrivers: improved styling 2023-10-27 13:28:43 +02:00
bergware
38f52e637f SysDrivers: improved styling 2023-10-27 13:25:18 +02:00
bergware
7a2f8edc5f Dashboard: display date and time in user selected formats 2023-10-27 12:59:21 +02:00
bergware
a0cc91b24c Dashboard: display date and time in user selected formats 2023-10-27 12:56:14 +02:00
bergware
afa05760f1 Dashboard: display date and time in user selected formats 2023-10-27 12:42:36 +02:00
bergware
410ea26b0e Dashboard: display date and time in user selected formats 2023-10-27 12:40:38 +02:00
bergware
41e661505b Dashboard: show timezone as UTC offset with DST indicator 2023-10-27 11:52:07 +02:00
bergware
58575efa9d Dashboard: show timezone as UTC offset 2023-10-27 11:00:17 +02:00
bergware
2910c2e921 Dashboard: show timezone as UTC offset 2023-10-27 10:57:42 +02:00
bergware
99d7c3a5b5 Dashboard: show timezone as GMT offset 2023-10-27 10:55:39 +02:00
bergware
094ffccbdc SysDrivers: improved styling 2023-10-27 10:31:35 +02:00
bergware
d006f3da4d SysDrivers: improved styling 2023-10-27 10:29:28 +02:00
bergware
49c8980bb1 Make $subpools a global variable (single occurence) 2023-10-26 23:33:41 +02:00
bergware
b072f98787 Make $subpools a global variable (single occurence) 2023-10-26 23:28:30 +02:00
Tom Mortensen
3b2540a2fc corrections displaying zfs profiles 2023-10-26 14:09:36 -07:00
Tom Mortensen
944fcc6095 add missing rc.mysqld - not used but added for completeness 2023-10-26 14:01:44 -07:00
tom mortensen
b4e29e7c3b Merge pull request #1478 from unraid/remove-legacy-migration
remove legacy unraid.net settings migration
2023-10-26 12:41:17 -07:00
tom mortensen
5df3dbf911 Merge pull request #1477 from unraid/remove-legacy-certs
remove support for legacy unraid.net certs
2023-10-26 12:41:02 -07:00
tom mortensen
800614ea0d Merge pull request #1479 from bergware/master
Miscellaneous updates and fixes
2023-10-26 12:39:51 -07:00
bergware
dc760f17c7 Update SysDrivers.css 2023-10-26 21:34:09 +02:00
bergware
7805f1fbe6 Update SysDrivers.css 2023-10-26 21:32:03 +02:00
bergware
0cac30a0e1 Update SysDrivers.css 2023-10-26 21:31:26 +02:00
bergware
b5e8481848 SysDrivers: adjusted column widths 2023-10-26 21:27:45 +02:00
bergware
43402f3eba SysDrivers: place edit icon at bottom 2023-10-26 21:23:21 +02:00
bergware
52a42ce3dc SysDrivers: place edit icon at bottom 2023-10-26 21:17:24 +02:00
bergware
f92ec16f8e SysDrivers: fix regression errors 2023-10-26 20:08:55 +02:00
bergware
42a24c4136 Use "null coalescing assignment" operator for $docroot 2023-10-26 18:22:27 +02:00
bergware
d4e8617eef Use "null coalescing assignment" operator for $docroot 2023-10-26 18:17:44 +02:00
bergware
33a64665ea Use "null coalescing assignment" operator for $docroot 2023-10-26 18:10:11 +02:00
bergware
af3eee47ae Dashboard: update time when timezone is changed 2023-10-26 17:32:25 +02:00
bergware
72683fdab0 Copyright update 2023-10-26 17:18:00 +02:00
bergware
c9b86b8853 Copyright update 2023-10-26 17:14:53 +02:00
bergware
dc700749a2 Copyright update 2023-10-26 17:11:36 +02:00
bergware
9cc9b70c54 Copyright update 2023-10-26 17:08:38 +02:00
bergware
de4aa58e2a Copyright update 2023-10-26 17:04:48 +02:00
bergware
ceeb125ba9 Use "null coalescing assignment" operator for $docroot 2023-10-26 14:00:15 +02:00
bergware
a671e237a0 VM machines: add translation 2023-10-26 02:52:44 +02:00
bergware
d1d0880ceb SysDrivers: fix PHP8 errors 2023-10-26 02:43:31 +02:00
bergware
2235eefe09 Cache devices: add translation 2023-10-26 02:28:37 +02:00
bergware
c60156f6e6 Cache devices: add translation 2023-10-26 02:26:56 +02:00
bergware
c3826a5416 Dashboard: update time when timezone is changed 2023-10-26 02:06:06 +02:00
bergware
92b2179abf Vars: suppress $webComponentTranslations content 2023-10-26 01:13:36 +02:00
bergware
e2bfc62c02 Fix subpool errors 2023-10-26 01:00:18 +02:00
bergware
dd1fc4a04e Fix subpool errors 2023-10-26 00:48:49 +02:00
bergware
65b73b3c40 Fix PHP8 errors 2023-10-26 00:46:12 +02:00
bergware
5df25dd3e2 Fix subpool errors 2023-10-26 00:45:39 +02:00
bergware
de4e0f1e14 VM manager: display and dialog fixes 2023-10-25 22:57:19 +02:00
bergware
39faad3430 VM manager: display and dialog fixes 2023-10-25 22:53:00 +02:00
bergware
9bd92dca96 VM manager: display and dialog fixes 2023-10-25 22:50:25 +02:00
bergware
6734542fac VM manager: display and dialog fixes 2023-10-25 22:48:39 +02:00
bergware
2adac042ae SysDrivers: fix PHP8 errors 2023-10-25 21:07:03 +02:00
bergware
e3addef78d ups_status: fix PHP8 error 2023-10-25 21:01:23 +02:00
bergware
0b5a3990ad SysDrivers: fix PHP8 errors 2023-10-25 21:01:02 +02:00
bergware
9e61816983 Cached devices: fix templates 2023-10-25 21:00:43 +02:00
bergware
698071fa00 Revert "Cache devices: fix GUI when initially no pools are defined"
This reverts commit 341df0375f.
2023-10-25 19:32:09 +02:00
bergware
cb27feffd6 VM machines: fix ISOs dialog 2023-10-25 19:23:01 +02:00
bergware
341df0375f Cache devices: fix GUI when initially no pools are defined 2023-10-25 19:19:10 +02:00
bergware
de504d626f Make dialog window appearance more consistent 2023-10-25 18:54:41 +02:00
bergware
6d20bdc430 Make dialog window appearance more consistent 2023-10-25 18:50:51 +02:00
bergware
8d43fc8aa5 Cache Devices: make style consistent 2023-10-25 09:24:16 +02:00
ljm42
6ca0a39686 remove legacy unraid.net settings migration 2023-10-24 17:56:01 -07:00
ljm42
4f5b94f83b remove support for legacy unraid.net certs 2023-10-24 17:24:53 -07:00
ljm42
42e2ee6e39 remove support for legacy unraid.net certs 2023-10-24 17:17:10 -07:00
Tom Mortensen
25ccb39fa0 Fix comment in rc.nginx:
php-fpm socket name is php-fpm, not php5-fpm
Removed a couple files no longer needed:
  wrap_get.php
  wrap_post.php
2023-10-24 11:08:20 -07:00
tom mortensen
a1172a1695 Merge pull request #1476 from ich777/master
System Drivers: Just for the looks
2023-10-24 11:01:18 -07:00
tom mortensen
64d13509bf Merge pull request #1475 from unraid/fix-nginx
nginx: use the new http2 directive
2023-10-24 11:00:52 -07:00
d008f5a5f0 Just for the looks
- only add space if version number from module is found
2023-10-24 11:54:52 +02:00
ljm42
594ff1d642 nginx: use the new http2 directive 2023-10-23 16:42:06 -07:00
tom mortensen
bcedb464b0 Merge pull request #1473 from SimonFair/VM-Manager-GPU-display
Additional VM Manager Changes
2023-10-22 08:04:34 -07:00
tom mortensen
b5053fabe2 Merge pull request #1472 from desertwitch/fix-cookies
Fix browsers leaving dashboard visibility cookies in malformed state
2023-10-22 08:03:54 -07:00
SimonFair
c9b8d13261 Update libvirt.php 2023-10-21 15:58:09 +01:00
SimonFair
1ba8f32464 Add hypeclock for windows machines 2023-10-21 14:58:40 +01:00
SimonFair
f86df19b7d Add migratable help text. 2023-10-21 11:55:58 +01:00
SimonFair
b04b5d3519 Add option to set cpu migration
Support is only on host passthrough not custom.
2023-10-21 10:54:15 +01:00
SimonFair
7b181bd71a Add cpumigrate field 2023-10-20 18:31:07 +01:00
SimonFair
daf3393398 Additional VM Manager Changes 2023-10-19 21:00:34 +01:00
tom mortensen
0d19b89e78 Merge pull request #1471 from SimonFair/VM-Manager-GPU-display
Show all graphics cards
2023-10-19 10:36:59 -07:00
desertwitch
da23a245a2 clean up visibility cookies left in malformed state 2023-10-19 16:49:43 +02:00
SimonFair
2d21f674ff Show all graphics cards
Add IP addresses to title on name.
2023-10-18 23:02:50 +01:00
tom mortensen
cc6c997e58 Merge pull request #1469 from ich777/master
Add ntfy.sh to notification agents
2023-10-17 10:16:37 -07:00
tom mortensen
4362ce7028 Merge pull request #1468 from bergware/master
Miscellaneous fixes and updates
2023-10-17 10:16:11 -07:00
tom mortensen
8228f2dc13 Merge pull request #1466 from unraid/intelephense
Add libvirt-php to intelephense.stubs
2023-10-17 10:15:12 -07:00
tom mortensen
2f8b0f4ce3 Merge pull request #1464 from SimonFair/Vm-Multifunction-support
VM multifunction support
2023-10-17 10:14:00 -07:00
SimonFair
e33ec1466e SystemDrivers add version
Add version to module

Module (Version)
2023-10-17 17:16:20 +01:00
bergware
a30cac6822 Display: reset dashboard tiles when switching language 2023-10-17 15:09:18 +02:00
bergware
b2afe183fe Display: reset dashboard tiles when switching language 2023-10-17 15:03:50 +02:00
bergware
75c1c8a7a0 Display: reset dashboard tiles when switching language 2023-10-17 14:55:03 +02:00
bergware
9a97d3087d Merge remote-tracking branch 'upstream/master' 2023-10-17 12:05:14 +02:00
bergware
688927fd53 Dashboard: add timezone indicator 2023-10-17 12:05:04 +02:00
de9bf3d308 Add ntfy.sh icon 2023-10-17 11:24:19 +02:00
72f977f19b Add ntfy.sh to notification agents 2023-10-17 11:23:28 +02:00
bergware
ca7e1efdfe Dashboard: add hyperlink to clock 2023-10-17 09:52:08 +02:00
bergware
a6278fb671 device_list: fix missing parameter 2023-10-17 09:51:47 +02:00
bergware
cd190843ab container_size: rename $unit to $units 2023-10-17 09:51:28 +02:00
ljm42
b2db430510 Add libvirt-php to intelephense.stubs
... in the VS Code workspace settings file. Prevents Intelephense from complaining about libvirt functions
2023-10-16 15:22:45 -07:00
SimonFair
8fc34e3f4a Add PCI Other multifunction support. 2023-10-16 20:42:36 +01:00
tom mortensen
b7f2928d4a Merge pull request #1465 from bergware/master
rc.scripts: prevent service binding on '0' addresses
2023-10-16 12:23:29 -07:00
bergware
5adacfba98 white theme: minor style fix 2023-10-16 19:11:13 +02:00
bergware
ddf80158a9 VMsettings: fix typo 2023-10-16 18:27:54 +02:00
bergware
b3cd2b53dc DockerContainers: remove redundant brackets 2023-10-16 18:18:35 +02:00
bergware
0f455a69a5 DockerClient: remove unnecessary assignment 2023-10-16 18:14:34 +02:00
bergware
1d031aa262 wireguard update: add explanation about parsing 2023-10-16 17:53:51 +02:00
SimonFair
bde58c0298 Revise processing 2023-10-16 13:24:54 +01:00
bergware
4581506883 wireguard update: add explanation about parsing 2023-10-16 12:30:24 +02:00
bergware
dab8b99c9c minor syntax update 2023-10-16 12:18:57 +02:00
bergware
855da15b23 Fix typos 2023-10-16 12:15:16 +02:00
bergware
9f65dedda9 rc.scripts: prevent service binding on '0' addresses 2023-10-16 11:04:30 +02:00
tom mortensen
e7abf704c5 Merge pull request #1462 from bergware/master
Miscellaneous updates and fixes
2023-10-15 14:24:33 -07:00
tom mortensen
d8d054f8fa Merge pull request #1463 from SimonFair/PHP-VM-Manager-Fixes
PHP and Code tidy fixes
2023-10-15 14:21:06 -07:00
bergware
646314051b Minor code cleanup 2023-10-15 16:34:35 +02:00
bergware
9d788f010f VM snapshot: updated remove dialog 2023-10-15 16:29:07 +02:00
bergware
903a630fd0 VM snapshot: updated remove dialog 2023-10-15 16:27:55 +02:00
bergware
5d6cbbd3a6 Dialog window: adjust height 2023-10-15 16:22:30 +02:00
bergware
b2fcdf1d32 VM menu: add space in text 2023-10-15 16:05:57 +02:00
bergware
ef26fb3f57 Revert "VM manager: minor icon update"
This reverts commit ab661ccc06.
2023-10-15 15:50:53 +02:00
bergware
ab661ccc06 VM manager: minor icon update 2023-10-15 15:47:08 +02:00
bergware
a47cea481f SysDrivers: icon update 2023-10-15 15:37:50 +02:00
bergware
5a5b7f127b Docker: minor style update 2023-10-15 15:24:12 +02:00
bergware
3e1801faa0 Docker: minor style update 2023-10-15 15:18:09 +02:00
bergware
fec05e98bf Dashboard: minor icon update 2023-10-15 14:52:56 +02:00
bergware
536d990ee1 Dashboard: show time in header of collapsed tile 2023-10-15 12:18:16 +02:00
SimonFair
43465bfd35 Disable input if Virtual.
Add Support for OtherPCI Devices
2023-10-15 11:16:20 +01:00
bergware
7cd7c4b897 Dashboard: show time in header of collapsed tile 2023-10-15 12:11:24 +02:00
bergware
069f527445 Wireguard: fix LAN access when vhost interface is used 2023-10-15 10:33:34 +02:00
bergware
801c33a832 Wireguard: fix LAN access when vhost interface is used 2023-10-15 10:17:39 +02:00
SimonFair
b4bd84cd03 Update libvirt.php 2023-10-14 23:48:43 +01:00
SimonFair
83d02ea7ff Initial commit of multifunction support
Need to remove option for virtual gpus.
2023-10-14 23:46:31 +01:00
bergware
ed015569a7 Merge remote-tracking branch 'upstream/master' 2023-10-15 00:06:45 +02:00
bergware
416f8c4ceb Fix PHP8 errors 2023-10-14 23:37:53 +02:00
bergware
58a4fb601a rc.S: use absolute path 2023-10-14 22:46:39 +02:00
bergware
7715e09bef styling min width 2023-10-14 20:42:15 +02:00
bergware
65c8f4790e default-azure.css: remove unused entry 2023-10-14 20:32:32 +02:00
bergware
46148e7fb6 default-black.css: fix typo 2023-10-14 20:16:30 +02:00
bergware
ecde592124 snaphots: several updates for Dashboard and VMs page 2023-10-14 20:09:04 +02:00
bergware
202cb8c222 Move inline styling in page files to dedicated css files
Instead of styling defined inside a page file, these settings are now kept in a dedicated css file. This has several advantages:

- It comes much easier to maintain styling, all css files are easy to find and update
- Browser can cache css files, which may improve page loading time
- Separate theme css files exist, no more need to make selection by coding

- This PR is a 1-to-1 move of existing inline styling to css files
- In future more optimization can be made by consolidating css files
2023-10-14 19:02:35 +02:00
bergware
287468005a Prepare for automatic style sheet loading per page 2023-10-14 15:49:06 +02:00
bergware
b8d932d050 Prepare for automatic style sheet loading per page 2023-10-14 15:46:38 +02:00
bergware
4e4d5426e0 rc.libvirt: fix snapshot folder and link creation 2023-10-14 15:15:24 +02:00
bergware
2f82d097b6 Make dialog boxes consistent 2023-10-14 14:41:17 +02:00
bergware
a2818218c6 Make dialog boxes consistent 2023-10-14 14:21:18 +02:00
bergware
378eb9916c Make dialog boxes consistent 2023-10-14 14:18:56 +02:00
bergware
aef7b4c012 VMs: add missing space in text 2023-10-14 14:02:22 +02:00
bergware
f9167b929f snaphots: several updates for Dashboard and VMs page 2023-10-14 13:54:13 +02:00
SimonFair
e3cbf2309d PHP and Code tidy fixes 2023-10-14 11:31:12 +01:00
bergware
5ac608b43f rc scripts: insert short delay before checking running status 2023-10-14 10:14:25 +02:00
bergware
90ad79e846 Browse: remove legacy check 2023-10-14 01:59:13 +02:00
bergware
21189acdb0 Prepare for automatic style sheet loading per page 2023-10-14 01:42:46 +02:00
bergware
68a367bea7 libvirt_helpers: fix PHP8 error 2023-10-14 01:39:26 +02:00
bergware
0716ed2fe4 Revert "Dashboard: show time in header when collapsed"
This reverts commit c7216f18b2.
2023-10-13 19:29:40 +02:00
bergware
c7216f18b2 Dashboard: show time in header when collapsed 2023-10-13 19:26:13 +02:00
tom mortensen
5a69f4b8e3 Merge pull request #1460 from bergware/master
Miscellaneous fixes and updates
2023-10-13 10:11:20 -07:00
bergware
d06d2cb476 Dashboard: Remove leading zero in time display 2023-10-13 18:51:22 +02:00
bergware
a162a40a46 rc.S.cont: fix regression error in timezone setting 2023-10-13 18:47:02 +02:00
bergware
523cad12bc Merge remote-tracking branch 'upstream/master' 2023-10-13 18:10:43 +02:00
bergware
2ddceae4a3 Prepare for automatic style sheet loading per page 2023-10-13 18:08:58 +02:00
tom mortensen
25a8c10165 Merge pull request #1459 from bergware/master
Dashboard: fix font-size in processor and system bars
2023-10-13 09:05:49 -07:00
bergware
48e8c5bb73 Prepare for automatic style sheet loading per page 2023-10-13 17:59:06 +02:00
bergware
5bd4280e83 Prepare for automatic style sheet loading per page
This feature will be used in future development of the GUI
It allows pages to have their own style sheet settings stored in a related .css file
2023-10-13 17:49:13 +02:00
bergware
a6d66e0a65 Dashboard: more enhancements 2023-10-13 16:15:07 +02:00
bergware
64d161d09d Dashboard: more enhancements 2023-10-13 15:33:22 +02:00
bergware
e0ec6c1164 Dashboard: add current time display 2023-10-13 15:26:50 +02:00
bergware
debcacc1ba Dashboard: more enhancements 2023-10-13 12:33:33 +02:00
bergware
946a32fd96 Dashboard: more enhancements 2023-10-13 12:24:00 +02:00
bergware
540215bc5d Dashboard: more enhancements 2023-10-13 12:13:17 +02:00
bergware
7ee1d71d13 Dashboard: more enhancements 2023-10-13 12:06:02 +02:00
bergware
5362627433 Dashboard: reintroduce borders around tiles 2023-10-13 11:26:27 +02:00
bergware
83cb642448 Dashboard: more enhancements 2023-10-13 10:52:02 +02:00
bergware
84b265cbe4 Dashboard: more enhancements 2023-10-13 10:43:35 +02:00
bergware
5e2dc9da2f Dashboard: more enhancements 2023-10-13 10:39:34 +02:00
bergware
93b1f0d915 Dashboard: fix font-size in processor and system bars 2023-10-13 10:07:20 +02:00
tom mortensen
1149e0e1bd Merge pull request #1458 from bergware/master
Improve Dashboard tiles when hidden
2023-10-12 16:30:29 -07:00
bergware
3463bf8521 Improve Dashboard tiles when hidden 90a2ced9 2023-10-13 00:07:52 +02:00
bergware
9b0fbf1256 Improve Dashboard tiles when hidden 2023-10-12 23:42:43 +02:00
bergware
90a2ced901 Improve Dashboard tiles when hidden 2023-10-12 23:20:06 +02:00
tom mortensen
8d550ccf7e Merge pull request #1457 from SimonFair/Disable-VM-Manager-Autostart
Create VM autostart disable option
2023-10-12 12:51:13 -07:00
tom mortensen
dd305fa8a8 Merge pull request #1456 from bergware/master
rc.inet1: add "status" command
2023-10-12 12:50:35 -07:00
SimonFair
093d754b74 Create VM autostart disable option 2023-10-12 20:27:37 +01:00
bergware
4068b85470 dashboard: display separate tiles without borders 2023-10-12 18:12:10 +02:00
bergware
454d819634 dashboard: display separate tiles without borders 2023-10-12 17:42:29 +02:00
bergware
ab914472f0 rc.inet1: minor code update 2023-10-12 10:55:11 +02:00
bergware
5543f8c2e9 rc.inet1: minor code update 2023-10-12 10:40:49 +02:00
bergware
20e29bcf75 rc.inet1: add "status" command 2023-10-12 10:32:27 +02:00
bergware
a948173f15 rc.inet1: add "status" command 2023-10-12 10:28:54 +02:00
Zack Spear
5dd8186103 fix(upc): account callback url 2023-10-11 21:27:30 -05:00
Zack Spear
4294aa0d6b refactor(upc): state.php use apikey $registered 2023-10-11 21:23:24 -05:00
Zack Spear
7ba5e7bd99 Merge branch 'unraid:master' into master 2023-10-11 20:12:49 -05:00
Zack Spear
ba943c61c9 fix(upc): small ui bug with update os 2023-10-11 20:04:37 -05:00
Zack Spear
c2eab08582 feat: web-components update os + registration + header version 2023-10-11 19:44:20 -05:00
Zack Spear
cbd2475cf9 refactor: add osVersionBranch to state.php 2023-10-11 18:24:31 -05:00
Zack Spear
1698a7a644 refactor: add lifetime to install key page conditional display 2023-10-11 18:24:00 -05:00
tom mortensen
b54c4ec103 Merge pull request #1454 from bergware/master
scripts dutchification - batch 2
2023-10-11 14:04:00 -07:00
bergware
6902238f1a Disk Settings: add possibility to change encryption phrase/keyfile 2023-10-11 21:48:54 +02:00
bergware
79476b0a84 Disk Settings: add possibility to change encryption phrase/keyfile 2023-10-11 21:41:39 +02:00
bergware
e8cef12319 Disk Settings: add possibility to change encryption phrase/keyfile 2023-10-11 21:37:34 +02:00
bergware
6b9bc3c00f Revert "rc.mcelog: don't start when unsupported cpu"
This reverts commit 1dd3c10103.
2023-10-11 21:19:45 +02:00
bergware
1dd3c10103 rc.mcelog: don't start when unsupported cpu 2023-10-11 21:11:22 +02:00
bergware
77de3cb541 rc.mcelog: don't start when unsupported cpu 2023-10-11 21:07:08 +02:00
tom mortensen
2ad95e3d5a Merge pull request #1453 from SimonFair/Add-PCI-Override-and-include-CoralTPU-as-default
Add Override File support and default support for Coral TPu
2023-10-11 12:02:14 -07:00
bergware
ef63045632 scripts dutchification - batch 2 2023-10-11 20:44:38 +02:00
SimonFair
357171fec5 Add Override File support and default support for Coral TPu 2023-10-11 19:16:01 +01:00
tom mortensen
fee32792f9 Merge pull request #1449 from unraid/mirrored-syslog
Improved handling of USB-mirrored syslogs
2023-10-11 08:48:32 -07:00
tom mortensen
3b54299f9a Merge pull request #1451 from bergware/master
Miscellaneous updates and fixes
2023-10-11 08:47:38 -07:00
bergware
aeebf3bb61 scripts dutchification - batch 1 2023-10-11 16:42:11 +02:00
bergware
2692f1fbb5 rc.inet1: fix regression error 2023-10-11 16:30:14 +02:00
bergware
d1bb63ff49 rc.inet1: fix regression error 2023-10-11 16:25:40 +02:00
bergware
73091981a9 rc.inet1: fix regression error 2023-10-11 16:12:29 +02:00
bergware
69ee9387e3 scripts dutchification - batch 1 2023-10-11 14:44:44 +02:00
bergware
cd7ffc9e99 scripts dutchification - batch 1 2023-10-11 14:32:22 +02:00
bergware
d14b39970b scripts dutchification - batch 1 2023-10-11 14:23:32 +02:00
bergware
3b264e5297 scripts dutchification - batch 1 2023-10-11 14:19:17 +02:00
bergware
3159c6bcee scripts dutchification - batch 2 2023-10-11 10:59:10 +02:00
bergware
13df90493c Merge remote-tracking branch 'upstream/master' 2023-10-11 09:47:17 +02:00
bergware
48301a53ac rc.inet2: fix execution of sub scripts 2023-10-11 09:46:31 +02:00
bergware
e2a18275b7 Add "status" command to rc scripts 2023-10-11 09:46:02 +02:00
tom mortensen
6d639b1ad7 Merge pull request #1450 from bergware/master
Miscellaneous fixes and updates
2023-10-10 14:25:07 -07:00
bergware
319f922eb8 Update rc.apcupsd 2023-10-10 18:25:04 +02:00
Zack Spear
7db0650b53 refactor(css): black & white header remove min-width 2023-10-10 10:36:06 -05:00
bergware
34a586d449 Revert "rc.S.cont: fix variable name"
This reverts commit 406040364a.
2023-10-10 15:08:40 +02:00
bergware
c0db3f2ae2 Update monitor_nchan 2023-10-10 15:07:34 +02:00
bergware
406040364a rc.S.cont: fix variable name 2023-10-10 15:07:19 +02:00
ljm42
7593e0460a swap isset() for !empty() 2023-10-09 16:30:18 -07:00
ljm42
7583ca1959 Better handling of USB-mirrored syslogs 2023-10-09 15:57:02 -07:00
Zack Spear
acce31d4c9 fix: update page add flash backup js functions 2023-10-09 14:05:16 -05:00
Zack Spear
9e3a5cc22c refactor: downgrade page js functions 2023-10-09 14:05:01 -05:00
Zack Spear
104a0bee05 refactor: registration page clean up 2023-10-09 14:04:40 -05:00
Squidly271
09294f3111 Allow FCP to broadcast it's status to diagnostics GUI 2023-10-09 10:18:10 -04:00
Squidly271
b1d874ca85 DRAFT Run FCP scan during diagnostics
Pending Larry approval

Runs FCP scan if one hasn't been already run within 24 hours
2023-10-08 14:11:31 -04:00
tom mortensen
33ae31abc8 Merge pull request #1443 from Squidly271/patch-3
Descriptive error messages on install_key
2023-10-08 08:57:18 -07:00
tom mortensen
ba82756c74 Merge pull request #1442 from bergware/master
Miscellaneous updates and fixes
2023-10-08 08:56:33 -07:00
bergware
69b5a886cb rc.S: invoke testing hook for test versions only
- This is a potential security risk, which should not be active in public releases
2023-10-08 12:05:08 +02:00
bergware
b260cc6cca device_list: add translation for button "Add Subpool" 2023-10-08 11:21:50 +02:00
bergware
009132ce78 scripts dutchification - batch 1 2023-10-08 10:07:06 +02:00
bergware
9fcf59d3d9 scripts dutchification - batch 1 2023-10-08 09:41:25 +02:00
bergware
8dde29cc0d scripts dutchification - batch 1 2023-10-08 09:36:11 +02:00
bergware
bb92781cce scripts dutchification - batch 2 2023-10-08 08:48:10 +02:00
bergware
dd0dc1ff12 scripts dutchification - batch 1 2023-10-08 08:48:00 +02:00
Squidly271
4380ca19f0 Add Date & Time message to plugin installs / updates 2023-10-07 21:31:00 -04:00
bergware
c91386cca0 rc.inet1: added interface carrier check for DHCP polling 2023-10-07 19:47:06 +02:00
Squidly271
7926243de5 Descriptive error messages on install_key 2023-10-07 09:43:20 -04:00
bergware
61247972c0 network settings: fix when updating description only 2023-10-07 15:17:41 +02:00
bergware
b630ddf2e8 network settings: fix when updating description only 2023-10-07 14:50:55 +02:00
bergware
3f197fc96b rc.inet1: added interface carrier check for DHCP polling 2023-10-07 10:50:11 +02:00
bergware
7aeb04936d rc.inet1: added interface carrier check for DHCP polling 2023-10-07 10:45:29 +02:00
bergware
15dd359787 rc.inet1: added interface carrier check for DHCP polling 2023-10-07 10:36:36 +02:00
bergware
e19c9e6bc2 scripts dutchification - batch 2 2023-10-07 10:24:56 +02:00
tom mortensen
c743afe378 Merge pull request #1440 from Squidly271/patch-1
GUI Search: Only look for CMD-K shortcuts
2023-10-06 08:59:00 -07:00
tom mortensen
af198d889c Merge pull request #1439 from bergware/master
Miscellaneous updates and fixes
2023-10-06 08:58:32 -07:00
bergware
b082fc722f Update update_services 2023-10-06 10:34:41 +02:00
bergware
0753acd7fc Update monitor_nchan 2023-10-06 10:07:02 +02:00
Squidly271
6e0879abce Update gui_search.page 2023-10-05 19:48:23 -04:00
Zack Spear
39209a8b6a feat: downgrade page 2023-10-05 16:34:50 -07:00
Squidly271
d9b0ed7c10 Only look for CMD-K shortcuts 2023-10-05 09:27:09 -04:00
bergware
acfac7ae75 Plugin: update logging messages 2023-10-05 11:31:25 +02:00
bergware
1c27ce1923 scripts dutchification - batch 1 2023-10-05 11:00:01 +02:00
bergware
7927678861 scripts dutchification - batch 3 2023-10-05 10:52:11 +02:00
bergware
7a833f6a17 scripts dutchification - batch 3 2023-10-05 10:47:43 +02:00
bergware
c5d8097f46 scripts dutchification - batch 1 2023-10-05 10:05:16 +02:00
bergware
dcb6eb7eb3 WireGuard: fix regression erro 2023-10-05 01:48:53 +02:00
Zack Spear
9591198ecb fix(web): state $_SESSION usage 2023-10-04 16:47:50 -07:00
bergware
ea3c5d0269 scripts dutchification - batch 3 2023-10-05 01:42:04 +02:00
bergware
11e9fc1a61 scripts dutchification - batch 3 2023-10-05 01:34:37 +02:00
bergware
5ffe98bb2e scripts dutchification - batch 3 2023-10-05 01:32:35 +02:00
bergware
f3bf779f7a scripts dutchification - batch 3 2023-10-05 01:30:14 +02:00
bergware
3f8041afbd scripts dutchification - batch 3 2023-10-05 01:27:52 +02:00
bergware
efec20cf83 scripts dutchification - batch 3 2023-10-05 01:21:39 +02:00
bergware
16c2b793dc scripts dutchification - batch 3 2023-10-05 01:18:43 +02:00
bergware
32be7bd212 scripts dutchification - batch 3 2023-10-05 01:14:41 +02:00
bergware
4f430e17c3 scripts dutchification - batch 2 2023-10-04 22:36:46 +02:00
bergware
a1e9a7fea8 scripts dutchification - batch 2 2023-10-04 22:21:55 +02:00
bergware
b55f9c4f0a Dashboard: fix PHP error (snapshot part) 2023-10-04 21:54:35 +02:00
bergware
d254b66109 Dashboard: fix PHP error (snapshot part) 2023-10-04 21:47:45 +02:00
bergware
04744b8b1a scripts dutchification - batch 1 2023-10-04 20:57:50 +02:00
bergware
9eabc5bf1b scripts dutchification - batch 2 2023-10-04 20:16:09 +02:00
bergware
d9d6bcd266 scripts dutchification - batch 3 2023-10-04 20:12:23 +02:00
bergware
5d3ed363b9 scripts dutchification - batch 1 2023-10-04 20:04:40 +02:00
bergware
2a5790b4c9 scripts dutchification - batch 1 2023-10-04 19:35:31 +02:00
bergware
e374ab4aaf scripts dutchification - batch 2 2023-10-04 19:32:06 +02:00
bergware
e738565d54 scripts dutchification - batch 1 2023-10-04 19:31:51 +02:00
bergware
f35c7f276d scripts dutchification - batch 2 2023-10-04 19:15:49 +02:00
bergware
5bfde16b21 scripts dutchification - batch 1 2023-10-04 19:15:38 +02:00
bergware
92c32adca5 scripts dutchification - batch 1 2023-10-04 19:15:24 +02:00
bergware
abafbe91d9 scripts dutchification - batch 2 2023-10-04 19:12:59 +02:00
bergware
d9185d71aa scripts dutchification - batch 1 2023-10-04 19:12:53 +02:00
bergware
bb301c1ce0 scripts dutchification - batch 2 2023-10-04 19:12:40 +02:00
bergware
42e317b316 scripts dutchification - batch 3 2023-10-04 19:12:24 +02:00
bergware
9ee4ae050c scripts dutchification - batch 2 2023-10-04 16:30:37 +02:00
bergware
d9e7092809 scripts dutchification - batch 2 2023-10-04 16:19:33 +02:00
bergware
e3bf040732 scripts dutchification - batch 2 2023-10-04 16:15:14 +02:00
bergware
26d6890de9 scripts dutchification - batch 3 2023-10-04 15:56:36 +02:00
bergware
0a1667926f scripts dutchification - batch 2 2023-10-04 15:36:39 +02:00
bergware
324ae2b374 scripts dutchification - batch 3 2023-10-04 15:36:31 +02:00
bergware
c9f854f023 scripts dutchification - batch 1 2023-10-04 15:21:31 +02:00
bergware
48440fefbe scripts dutchification - batch 2 2023-10-04 15:13:23 +02:00
bergware
f4c7725ad3 scripts dutchification - batch 2 2023-10-04 15:11:22 +02:00
bergware
122b7ab33d scripts dutchification - batch 2 2023-10-04 15:09:22 +02:00
bergware
d8a5bd2239 scripts dutchification - batch 2 2023-10-04 15:00:05 +02:00
bergware
a5955bd84a scripts dutchification - batch 1 2023-10-04 14:50:15 +02:00
bergware
7c36ee1d16 scripts dutchification - batch 2 2023-10-04 14:50:07 +02:00
bergware
8487f52b73 scripts dutchification - batch 2 2023-10-04 14:40:05 +02:00
bergware
020e1b419d scripts dutchification - batch 1 2023-10-04 14:38:39 +02:00
bergware
ec0cdf9a2c Update error_interfaces 2023-10-04 12:57:02 +02:00
bergware
e708fb7571 scripts dutchification - batch 1 2023-10-04 12:56:47 +02:00
bergware
d9ec4f8eba scripts dutchification - batch 2 2023-10-04 12:00:35 +02:00
bergware
4ded916d38 scripts dutchification - batch 3 2023-10-04 11:48:08 +02:00
bergware
044455b8fc scripts dutchification - batch 3 2023-10-04 11:28:53 +02:00
bergware
bf19257f95 scripts dutchification - batch 3 2023-10-04 01:42:26 +02:00
bergware
077770b71a Sysdrivers page - css optimization 2023-10-04 01:37:35 +02:00
bergware
8b5fda3e25 rc.nginx: kill nginx if regular stop doesn't work 2023-10-04 00:49:15 +02:00
bergware
43a382afb7 scripts dutchification - batch 2 2023-10-04 00:19:18 +02:00
bergware
2843a0fa38 test on output presence for console / syslog selection 2023-10-04 00:16:39 +02:00
bergware
90ab33a0f0 make log function known in find exec command 2023-10-04 00:16:05 +02:00
bergware
303de5e792 Include IPv6 settings in default network file 2023-10-04 00:15:33 +02:00
tom mortensen
72303de5f9 Merge pull request #1438 from bergware/master
Updated logger registration
2023-10-03 09:14:04 -07:00
bergware
ac0e67eeac Updated logger registration 2023-10-03 10:21:19 +02:00
tom mortensen
b51719bce4 Merge pull request #1436 from bergware/master
Miscellaneous updates
2023-10-02 21:45:27 -07:00
bergware
2f16bc249f scripts dutchification - batch 1 2023-10-03 05:52:52 +02:00
bergware
fe1cc8fdef scripts dutchification - batch 1 2023-10-03 05:45:57 +02:00
bergware
7ba33d5cdc scripts dutchification - batch 1 2023-10-03 05:13:22 +02:00
Zack Spear
9208b951f2 feat: add flashbackup functions to Update.page 2023-10-02 15:37:40 -07:00
bergware
1f52c5a214 scripts dutchification - batch 1 2023-10-03 00:13:17 +02:00
bergware
e0602996e9 Updated logger function to escape message part 2023-10-02 23:52:48 +02:00
bergware
ceaf96f18c Updated logger function to escape message part 2023-10-02 23:48:08 +02:00
bergware
5b5eb27b0a rc.M: fix syslog reference 2023-10-02 22:56:42 +02:00
bergware
94b2a964f0 Updated logger function to escape message part 2023-10-02 22:39:01 +02:00
bergware
3903686c5f Updated logger function to escape message part 2023-10-02 22:16:23 +02:00
Zack Spear
2a6cc63d82 feat: add os version to flashbackup zip filename 2023-10-02 13:12:09 -07:00
bergware
cabaa5a437 scripts plugin & language: fix logger messaging 2023-10-02 21:56:14 +02:00
bergware
68336bf0d8 scripts dutchification - batch 1 2023-10-02 21:52:47 +02:00
bergware
054ccb6372 Revert "plugin & language: replace conflicting logger name"
This reverts commit 2c97bc312c.
2023-10-02 21:50:52 +02:00
bergware
931221b3c7 Revert "plugin & language: replace conflicting logger name"
This reverts commit 2149f3b238.
2023-10-02 21:50:43 +02:00
bergware
2149f3b238 plugin & language: replace conflicting logger name 2023-10-02 21:41:06 +02:00
bergware
2c97bc312c plugin & language: replace conflicting logger name 2023-10-02 21:35:06 +02:00
bergware
1ecba5cccd scripts dutchification - batch 1 2023-10-02 20:20:56 +02:00
bergware
d6cd881fee Revert "scripts dutchification - batch 1"
This reverts commit 119169cefa.
2023-10-02 20:17:11 +02:00
bergware
119169cefa scripts dutchification - batch 1 2023-10-02 20:15:52 +02:00
bergware
e43ea0e162 scripts dutchification - batch 1 2023-10-02 20:08:09 +02:00
bergware
e46a8991c4 Disk Settings: add possibility to change encryption phrase/keyfile 2023-10-02 19:31:34 +02:00
bergware
18703d0640 scripts dutchification - batch 1 2023-10-02 19:17:26 +02:00
bergware
90857f5a88 scripts dutchification - batch 1 2023-10-02 19:12:03 +02:00
bergware
d7edbe5551 Disk Settings: add possibility to change encryption phrase/keyfile 2023-10-02 14:26:25 +02:00
bergware
d4cb32c045 Disk Settings: add possibility to change encryption phrase/keyfile 2023-10-02 14:25:55 +02:00
bergware
e123d16568 scripts dutchification - batch 1 2023-10-02 14:05:36 +02:00
bergware
89bd7b4433 scripts dutchification - batch 1 2023-10-02 14:02:29 +02:00
bergware
5b3ad58384 scripts dutchification - batch 1 2023-10-02 13:48:44 +02:00
bergware
9a31659b5a scripts dutchification - batch 1 2023-10-02 13:46:51 +02:00
bergware
a7b7068ef6 scripts dutchification - batch 1 2023-10-02 13:44:38 +02:00
bergware
3d4ef7446b scripts dutchification - batch 1 2023-10-02 13:34:35 +02:00
bergware
1972f8665b scripts dutchification - batch 1 2023-10-02 13:18:14 +02:00
bergware
5fdfa2027a scripts dutchification - batch 1 2023-10-02 13:07:28 +02:00
bergware
2535edbeb1 scripts dutchification - batch 1 2023-10-02 13:05:54 +02:00
bergware
961651700c scripts dutchification - batch 1 2023-10-02 12:55:37 +02:00
bergware
330da0e334 scripts dutchification - batch 1 2023-10-02 12:47:15 +02:00
bergware
659a5d1790 scripts dutchification - batch 1 2023-10-02 12:45:10 +02:00
bergware
92c62e6e60 scripts dutchification - batch 1 2023-10-02 12:33:58 +02:00
bergware
ef13df4ea6 scripts dutchification - batch 1 2023-10-02 12:21:56 +02:00
bergware
661fdf7a25 Update ColorCoding.php 2023-10-01 23:19:41 +02:00
bergware
105f21fc81 Update ColorCoding.php 2023-10-01 23:12:42 +02:00
bergware
20d5e9ab20 multiplugin scrips: fix PHP8 error 2023-10-01 23:03:49 +02:00
bergware
8b8107bf16 scripts dutchification - batch 1 2023-10-01 22:54:11 +02:00
bergware
6dd5a6b772 scripts dutchification - batch 1 2023-10-01 22:42:28 +02:00
bergware
807060d7eb scripts dutchification - batch 1 2023-10-01 22:24:19 +02:00
bergware
e406aa4e47 scripts dutchification - batch 1 2023-10-01 22:18:12 +02:00
bergware
0e18d59137 scripts dutchification - batch 1 2023-10-01 21:10:20 +02:00
bergware
dfbe59fbe3 scripts dutchification - batch 1 2023-10-01 20:49:14 +02:00
bergware
74d12ebae2 Revert "dynamix.js - removed sizzle css selector - included now in jQuery 3.7.0"
This reverts commit 2ec782f297.
2023-10-01 20:18:02 +02:00
bergware
2ec782f297 dynamix.js - removed sizzle css selector - included now in jQuery 3.7.0 2023-10-01 20:13:25 +02:00
bergware
4c8b77a485 GUI search: use search icon of Unraid 2023-10-01 16:08:13 +02:00
bergware
1b6f43e05d Disk Settings: add possibility to change encryption phrase/keyfile 2023-10-01 15:58:26 +02:00
bergware
6f5f9c400e Disk Settings: add possibility to change encryption phrase/keyfile 2023-10-01 15:47:25 +02:00
bergware
0eaaad5c13 Disk Settings: add possibility to change encryption phrase/keyfile 2023-10-01 15:23:37 +02:00
bergware
fb9e116e87 Wrappers.php: fix non-existing interfaces 2023-10-01 15:20:37 +02:00
bergware
7c6eb80850 update.php: fix empty file error 2023-10-01 15:19:58 +02:00
bergware
9e6fd22d8a scripts dutchification - batch 1
- includes fix for docker ipv6 used by containers
2023-10-01 14:01:59 +02:00
bergware
bc6bf903ae Update jQuery to version 3.7.0 2023-10-01 11:18:00 +02:00
bergware
c317408a4e Improve footer array status display 2023-10-01 11:11:41 +02:00
bergware
6f74ce9968 Make script executable 2023-10-01 11:10:34 +02:00
bergware
2d28256c26 Add Dynamix File Manager to stock GUI 2023-10-01 11:10:02 +02:00
Zack Spear
214699639c refactor(upc): additional prop data 2023-09-27 19:40:31 -07:00
Zack Spear
d15360fc1c refactor(upc): vars passed to web components 2023-09-26 17:41:02 -07:00
Zack Spear
2dc7f10334 refactor: registration page with web component 2023-09-25 20:25:58 -07:00
Zack Spear
5b1ab2ecb1 refactor: detect reboot prop for user profile component 2023-09-25 15:14:59 -07:00
Zack Spear
eeb8579122 refactor: header os version with web component 2023-09-25 15:14:39 -07:00
Zack Spear
2a992a4582 refactor: Update.page with web component 2023-09-25 15:14:22 -07:00
Tom Mortensen
62dc15a9f5 Merge branch 'master' of github.com:unraid/webgui 2023-09-25 13:25:34 -07:00
tom mortensen
929409d294 Merge pull request #1431 from unraid/fix-downgrade
Improve Downgrade process
2023-09-25 12:33:46 -07:00
tom mortensen
90ba712f7c Merge pull request #1433 from SimonFair/VM-Clone-and-Snapshot-merge
Vm clone and snapshot merge
2023-09-25 12:33:24 -07:00
Tom Mortensen
eda1d50ac4 zfs subpool support 2023-09-25 11:37:34 -07:00
Tom Mortensen
9c9e85d284 not rally needd, but ok 2023-09-25 11:36:37 -07:00
tom mortensen
dbdbc3b9d8 Merge pull request #1434 from ich777/patch-3
Update rc.docker
2023-09-25 11:34:44 -07:00
3cda86d099 Update rc.docker
- kill containers which are still running before stopping dockerd gracefully
2023-09-25 20:28:06 +02:00
cb513ed29b Update rc.docker
- add user defined Docker timeout to stop_containers function
- kill running containers and dockerd after 15 seconds in stop_docker function
2023-09-25 19:53:42 +02:00
SimonFair
f95b599b61 Ignore same target and source files 2023-09-25 18:14:00 +01:00
tom mortensen
c2db155751 Merge pull request #1423 from unraid/fix-shebang
Set bash shebang on scripts
2023-09-25 10:10:29 -07:00
tom mortensen
f320b13bab Merge pull request #1429 from Squidly271/master
Integrate GUI Search
2023-09-25 10:06:37 -07:00
tom mortensen
b5f3f74095 Merge pull request #1428 from unraid/rcdocker-add-logging
Add more logging when stopping docker
2023-09-25 10:05:17 -07:00
tom mortensen
0ee34fb8c4 Merge pull request #1427 from ich777/patch-1
update LXC diagnostics
2023-09-25 10:03:52 -07:00
tom mortensen
f5c3a72164 Merge pull request #1424 from zackspear/master
refactor(upc): vue3 + ts web components & improved supporting php
2023-09-25 10:03:21 -07:00
tom mortensen
046e8f0f6e Merge pull request #1422 from unraid/add-readme
Add readme and VS Code settings
2023-09-25 10:01:34 -07:00
SimonFair
6b67f4a589 Merge and spaces fixes 2023-09-25 15:05:02 +01:00
Squidly271
a039c2dd49 Fatal PHP error if dynamix.cfg corrupt or non existent 2023-09-23 10:20:14 -04:00
Squidly271
051e603384 Minor logic error if locale is "en_US" instead of "" (unlikely) 2023-09-23 10:07:04 -04:00
SimonFair
31e49a5f70 Merge branch 'Snapshots' into VM-Clone-and-Snapshot-merge 2023-09-23 10:39:34 +01:00
ljm42
e842121c3b Improve Downgrade process 2023-09-19 16:49:03 -07:00
Squidly271
e44851de92 PHP8 error if dynamix.cfg doesn't exist 2023-09-19 07:50:04 -04:00
SimonFair
5e5fb2e7b6 PHP Fix and Spice Audio Fix
Fix some PHP errors
Fix changing from spice to vnc if 	<audio id='1' type='spice'> is set,
2023-09-17 21:22:50 +01:00
SimonFair
3aeba2f871 Update reflink error display. 2023-09-16 00:27:23 +01:00
SimonFair
eda8d37c12 Add option to try reflink first. Revert to rsync if not supported. 2023-09-15 21:10:06 +01:00
SimonFair
167ad02e4c Merge remote-tracking branch 'upstream/master' into Add-Clone-VM-option- 2023-09-14 18:33:59 +01:00
Squidly271
6ce02d1caa Stop GUI search.plg from installing 2023-09-13 19:57:17 -04:00
Squidly271
da3c313254 Integrate GUI Search 2023-09-13 19:50:21 -04:00
ljm42
4eea535841 Add more logging when stopping docker 2023-09-13 15:32:27 -07:00
fa0a965494 update LXC diagnostics
- remove GitHub user and token from LXC diagnostics if they are set
2023-09-11 15:20:56 +02:00
Zack Spear
a6be030a3a fix(upc): remove erroneous button from welcome dropdown 2023-09-08 16:15:58 -07:00
Zack Spear
4347cf7e38 refactor: .gitignore .dev-scripts/ 2023-09-08 16:06:35 -07:00
Zack Spear
f59c3430e6 refactor(upc): vue3 + ts web components & improved supporting php 2023-09-08 15:54:00 -07:00
ljm42
cb4a7d8735 rename sftp-template.json 2023-09-08 11:55:53 -07:00
ljm42
c9c2a0a8be Set bash shebang on scripts
Any shell scripts that have been modified for Unraid should have the correct `#!/bin/bash` shebang to aid with linting.
2023-09-08 11:17:53 -07:00
Tom Mortensen
44817e1049 fill out complete set of startup (rc) files used by Unraid OS 2023-09-08 09:19:46 -07:00
ljm42
ffe4f4a743 Add readme and VS Code settings 2023-09-08 09:13:03 -07:00
Tom Mortensen
1cfe793761 Change wording of notification "lifetime" to "auto-close". Also a little shuffing of the settings and update Help text. 2023-08-31 12:03:20 -07:00
Tom Mortensen
c37fbc7b07 Modify markdown to include "target='_blank'" for all inline links starting with "http". This will let us
get rid of inline <a .. /> anchors to do this and use normal markdown link syntax.
2023-08-31 12:00:12 -07:00
tom mortensen
b3d974d86d Merge pull request #1420 from bergware/master
Notifications: auto archive when life time is zero
2023-08-30 09:17:13 -07:00
bergware
b4c9b1aac2 Revert "rc.inet1: added error logging to syslog"
This reverts commit 7065c6342c.
2023-08-26 15:55:11 +02:00
bergware
7065c6342c rc.inet1: added error logging to syslog 2023-08-26 14:06:56 +02:00
bergware
28bc68560c Notifications: auto archive when life time is zero 2023-08-26 10:02:26 +02:00
tom mortensen
fab966a182 Merge pull request #1419 from bergware/master
Docker settings: revert javascript floor function
2023-08-25 13:29:03 -07:00
bergware
09042aff3f Docker settings: fix wrong size calculation function 2023-08-25 22:09:48 +02:00
bergware
835f2f1aa7 Revert "Docker settings: revert javascript floor function"
This reverts commit 3367eab76a.
2023-08-25 22:05:49 +02:00
bergware
3367eab76a Docker settings: revert javascript floor function 2023-08-25 21:17:39 +02:00
tom mortensen
bd1714ebc6 Merge pull request #1418 from justinnichols/master
CSS: set overflow-x to 'auto'
2023-08-25 08:57:37 -07:00
tom mortensen
c2f7d47a51 Merge pull request #1417 from bergware/master
docker: fix routing when "host access" is enabled
2023-08-25 08:56:49 -07:00
bergware
05d5738423 Helptext: fix typo 2023-08-25 12:48:04 +02:00
bergware
f0017ec452 Set default notifications life time to 5 seconds 2023-08-25 11:13:55 +02:00
bergware
a64c76cd57 rc.inet1: minor code refactoring 2023-08-25 10:46:18 +02:00
bergware
15db8bdd36 Docker settings: fix subnet sizes 2023-08-24 19:22:03 +02:00
Justin Nichols
868578b17c CSS: set overflow-x to 'auto'
When overflow-x is set to 'scroll',
in some browsers, it will reserve
space for the scrollbar and will
override the background color even
when no scrollbar is necessary.
2023-08-24 12:48:49 -04:00
bergware
a2dca4bc03 Docker settings: fix subnet sizes 2023-08-24 18:42:37 +02:00
bergware
1d5b9f5d0a rc.docker: IPv6 enhancement 2023-08-24 13:44:10 +02:00
bergware
2818af86a3 rc.docker: remove IPv6 from shim/vhost interface 2023-08-24 12:06:00 +02:00
bergware
cc62d90b6b network: print public ipv6 address 2023-08-24 12:00:52 +02:00
bergware
68ab454ea2 rc.docker: remove IPv6 from shim/vhost interface
Some routers are incompatible.
2023-08-24 11:08:55 +02:00
bergware
6be8cd6482 rc.docker: minor code refactoring 2023-08-23 10:55:31 +02:00
bergware
099fb3a2c6 New notification option: notification life time 2023-08-22 15:55:00 +02:00
bergware
e1beeb022e Update rc.docker 2023-08-22 15:42:28 +02:00
bergware
f19d9de65a shim interface gets MAC address of parent, no need to generate one 2023-08-22 15:39:36 +02:00
bergware
e6b39b7806 shim interface gets MAC address of parent, no need to generate one 2023-08-22 15:38:34 +02:00
bergware
a12e07cd00 docker: add routing when shim network is used 2023-08-22 14:16:58 +02:00
bergware
4f9cd26c7c docker: add routing when shim network is used 2023-08-22 14:01:18 +02:00
bergware
d887f58402 docker: add routing when shim network is used 2023-08-22 13:45:49 +02:00
bergware
f5740d2b3c docker: add routing when shim network is used 2023-08-22 13:39:40 +02:00
bergware
27cf4415c0 docker: add routing when shim network is used 2023-08-22 13:31:58 +02:00
bergware
3a60e081c7 docker: add routing when shim network is used 2023-08-22 13:13:07 +02:00
bergware
f5083b3e58 New notification option: auto-closure time 2023-08-22 11:59:45 +02:00
bergware
55406f2925 docker: add routing when shim or macvtap network is used 2023-08-22 11:08:30 +02:00
bergware
f1dffa81e5 network: print public ipv6 address 2023-08-22 10:56:44 +02:00
bergware
a2977821ae docker: add routing when shim or macvtap network is used 2023-08-22 09:11:37 +02:00
bergware
472375d532 docker: fix routing when shim network is used 2023-08-22 08:45:21 +02:00
tom mortensen
2573157697 Merge pull request #1416 from bergware/master
More refinements
2023-08-18 14:43:28 -07:00
bergware
81073be813 rc.docker: updated docker network removal 2023-08-18 10:38:20 +02:00
bergware
9efdcd14fc rc.docker: updated docker network removal 2023-08-18 10:33:04 +02:00
bergware
d9d67df948 rc.docker: updated shim network removal 2023-08-18 10:25:41 +02:00
bergware
2e3be9bc14 Fix: routing metric information 2023-08-18 02:26:04 +02:00
bergware
72937d625e Fix: routing metric information 2023-08-18 02:24:15 +02:00
tom mortensen
6696569940 Merge pull request #1415 from bergware/master
rc.docker: disable IPv6 on shim interface when not in use
2023-08-17 14:43:46 -07:00
bergware
106cccc8f7 rc.docker: disable IPv6 on shim interface when not in use 2023-08-17 23:35:02 +02:00
tom mortensen
c1809576e9 Merge pull request #1414 from bergware/master
rc.wireguard: fix regression bug
2023-08-17 13:34:03 -07:00
bergware
21f50f1c81 Simplified shim interface creation
When bridging enabled:
- Create shim interface which is attached to bridge interface
- Copy parent address to shim interface with lower metric to allow host access
- More specific routes are no longer created

When bridging disabled:
- Copy parent address to vhost interface with lower metric to allow host access
2023-08-17 21:48:06 +02:00
bergware
185de6487b rc.inet1: avoid error messages 2023-08-17 11:36:32 +02:00
bergware
49aa1bcc86 rc.inet1: avoid error messages 2023-08-17 11:33:58 +02:00
bergware
9899645b25 Minor code optimization 2023-08-17 11:27:28 +02:00
bergware
6021269ca6 rc.wireguard: fix regression bug
Connection to Internet is interrupted at startup and Wireguard docker VPN is configured
2023-08-16 02:45:47 +02:00
Tom Mortensen
a32cb1b5bf rc.libvirt: Unraid OS version check tweak: 3-digitize only major.minor for comparison 2023-08-15 15:28:31 -07:00
tom mortensen
2d14853a95 Merge pull request #1413 from bergware/master
vhost and shim network: assign predefined MAC address
2023-08-15 14:30:59 -07:00
bergware
a007b026d4 vhost and shim network: assign predefined MAC address
Make MAC addresses unique per system
2023-08-15 23:05:11 +02:00
tom mortensen
9490d06b2a Merge pull request #1412 from bergware/master
vhost and shim network: assign predefined MAC address
2023-08-15 12:45:14 -07:00
bergware
6831de2529 Merge remote-tracking branch 'upstream/master' 2023-08-15 20:55:23 +02:00
bergware
34444b4ffb vhost and shim network: assign predefined MAC address
- This prevents the MAC address changing with each system reboot, and is useful when port forwarding is needed
2023-08-15 19:47:46 +02:00
tom mortensen
94be1b77c9 Merge pull request #1411 from bergware/master
Auto update wireguard tunnels when disabling/enabling bridging
2023-08-15 09:53:04 -07:00
bergware
e5c5035b4b Update rc.libvirt 2023-08-15 14:56:25 +02:00
bergware
9cd5518439 Auto update wireguard tunnels when disabling/enabling bridging 2023-08-15 14:39:30 +02:00
bergware
29b96374f2 Auto update wireguard tunnels when disabling/enabling bridging 2023-08-15 14:16:33 +02:00
tom mortensen
08b216556c Merge pull request #1410 from SimonFair/Pre-6.13-QEMU-remove-watch-dog
Pre 6.13 qemu remove watch dog
2023-08-14 14:16:34 -07:00
tom mortensen
aa1f377e45 Merge pull request #1409 from bergware/master
rc.inet1: suppress errors on non-existing interfaces
2023-08-14 14:16:20 -07:00
tom mortensen
8b948355c4 Merge pull request #1408 from SimonFair/delete.vv-file
Add fix to remove downloaded .vv file when used.
2023-08-14 14:16:05 -07:00
SimonFair
75a9f7e601 Fix sed 2023-08-14 19:30:32 +01:00
SimonFair
6d1106fdd0 Add version function. 2023-08-14 19:21:07 +01:00
SimonFair
9ba8a09634 Revert 6.13 qemu xml changes. 2023-08-14 19:18:45 +01:00
bergware
fa70ef343e VMs: support IPv6 on macvtap interface 2023-08-14 12:29:03 +02:00
bergware
2f396ccb68 Remove ipv6 host addresses from list 2023-08-13 13:33:25 +02:00
bergware
c90c7ade0e Remove ipv6 host addresses from list 2023-08-13 13:13:56 +02:00
bergware
cc4b6334fd rc.docker: update comments 2023-08-13 12:51:38 +02:00
bergware
93ba1ce444 rc.inet1: suppress errors on non-existing interfaces 2023-08-13 12:36:33 +02:00
SimonFair
0bf12cd420 Add fix to remove downloaded .vv file when used. 2023-08-11 19:24:41 +01:00
tom mortensen
7a36262423 Merge pull request #1407 from bergware/master
networking: use new macvtap network instead of macvlan
2023-08-11 09:52:27 -07:00
bergware
9d710a9203 rc.inet1: fix error message when vhost not existing 2023-08-11 18:01:04 +02:00
bergware
3e3adbaab5 rc.inet1: fix error message when vhost not existing 2023-08-11 17:52:30 +02:00
SimonFair
951b0c9b1c Merge remote-tracking branch 'upstream/master' into Add-Clone-VM-option- 2023-08-11 15:07:58 +01:00
bergware
9f4a86acf1 Fix PHP error in SysDrivers.php 2023-08-11 12:38:58 +02:00
bergware
efc21e838a adjust logging 2023-08-11 09:28:23 +02:00
bergware
d21293a2bd Update rc.libvirt 2023-08-11 03:54:46 +02:00
bergware
b5d91a968f Update rc.docker 2023-08-11 02:35:00 +02:00
bergware
c894482404 Update rc.libvirt 2023-08-11 02:26:23 +02:00
bergware
a4f45751da Update rc.docker 2023-08-11 02:18:31 +02:00
bergware
3e992ee00c Update libvirt_helpers.php 2023-08-11 02:13:48 +02:00
bergware
b6dc2799dc Update libvirt.php 2023-08-11 02:13:45 +02:00
bergware
5a0cf82a67 Update rc.libvirt 2023-08-10 22:55:09 +02:00
bergware
3a5d567230 Update rc.libvirt 2023-08-10 22:45:37 +02:00
bergware
ec2817334a Update rc.libvirt 2023-08-10 22:28:34 +02:00
bergware
aeda05bed7 Make bridge / macvtap selection per physical interface 2023-08-10 22:08:04 +02:00
bergware
afe9065663 Update libvirt.php 2023-08-10 04:14:15 +02:00
bergware
7a7383a84b Update libvirt.php 2023-08-10 04:10:10 +02:00
bergware
28c6f03e83 Update libvirt.php 2023-08-10 04:07:21 +02:00
bergware
c32ed46529 Update rc.libvirt 2023-08-10 03:50:51 +02:00
bergware
fe97aef051 Update rc.libvirt 2023-08-10 03:49:04 +02:00
bergware
b9c74a8ea4 Update rc.libvirt 2023-08-10 03:45:36 +02:00
bergware
0adf1daa26 Update rc.libvirt 2023-08-10 03:43:16 +02:00
bergware
180c4c2e91 Re-introduce macvlan / ipvlan selection when bridge is enabled 2023-08-10 03:26:04 +02:00
bergware
5e6f8656ac Fix container starts when no auto-start is set 2023-08-10 02:08:15 +02:00
bergware
4f61f11879 networking: use new macvtap network instead of macvlan
Minor fixes
2023-08-09 23:26:21 +02:00
tom mortensen
11d5212210 Merge pull request #1406 from bergware/master
New vhost network for both containers and VMs
2023-08-09 12:39:25 -07:00
bergware
ffbe92c497 networking: use new macvtap network instead of macvlan 2023-08-09 21:19:06 +02:00
bergware
3635320d14 New vhost network for both containers and VMs 2023-08-09 20:38:17 +02:00
bergware
5b102f5702 Make script executable 2023-08-09 19:38:18 +02:00
bergware
8c143304fe Create rebuild_container 2023-08-09 19:37:40 +02:00
bergware
d2cb9d620f Merge remote-tracking branch 'upstream/master' 2023-08-09 19:36:47 +02:00
bergware
f8d6560b79 New vhost network for both containers and VMs
User can enable / disable bridging to change network behavior.
Containers and VMs are automatically updated to the new network settings
2023-08-09 19:36:00 +02:00
Tom Mortensen
4f47afb7a8 Create syslog entries for packages installed from /boot/extra/ via rc.local.
Also restore executable bit for rc.samba.
2023-08-08 15:12:20 -07:00
tom mortensen
535dd1cd6a Merge pull request #1400 from SimonFair/SystemDrivers
System Drivers: Code fixes
2023-08-08 13:03:55 -07:00
tom mortensen
76813bfd4f Merge pull request #1405 from bergware/master
Revert: Revised networking and docker macvlan usage
2023-08-08 11:03:18 -07:00
bergware
a734929342 Revert "Revised networking and docker macvlan usage"
This reverts commit 29ebdd8a9c.
2023-08-08 19:40:42 +02:00
bergware
1b8f4bf805 Revert "Revised networking and docker macvlan usage"
This reverts commit 9f45678748.
2023-08-08 19:40:29 +02:00
tom mortensen
76b499283a Merge pull request #1403 from unraid/debug-docker
add more logging when stopping dockerd
2023-08-08 08:05:04 -07:00
tom mortensen
dea12990e6 Merge pull request #1404 from bergware/master
Translations: trim key and value in language files
2023-08-08 08:04:18 -07:00
bergware
cc08059389 Trailing spaces cleanup 2023-08-08 15:19:39 +02:00
bergware
9f45678748 Revised networking and docker macvlan usage 2023-08-08 15:12:24 +02:00
bergware
29ebdd8a9c Revised networking and docker macvlan usage
- Create new interface(s), names macvlan as macvlan networks
- Attach docker macvlan to newly created macvlan network instead of interface
2023-08-08 09:10:08 +02:00
bergware
e9060412b6 Translations: trim key and value in language files 2023-08-08 04:31:47 +02:00
bergware
8149104647 Translations: trim key and value in language files 2023-08-08 02:56:09 +02:00
ljm42
fe0d783e6a add more logging when stopping dockerd 2023-08-07 17:44:06 -07:00
tom mortensen
e2a0cefa79 Merge pull request #1402 from bergware/master
Pool minimum free space: only enabled when array is stopped
2023-08-07 14:30:58 -07:00
bergware
e8ba038fed rc.docker: fix docker stop command 2023-08-07 22:46:42 +02:00
bergware
6d0f1c3c4b Pool minimum free space: only enabled when array is stopped 2023-08-07 22:41:46 +02:00
tom mortensen
9a60e246ae Merge pull request #1401 from bergware/master
rc.inet1: add persistent option to dhcpcd
2023-08-04 17:47:37 -07:00
bergware
98b338ed1a rc.inet1: add persistent option to dhcpcd 2023-08-04 13:21:02 +02:00
SimonFair
00c59cd5ad Merge remote-tracking branch 'upstream/master' into Snapshots 2023-08-04 08:28:35 +01:00
Tom Mortensen
2353f19e22 rc.local: add comment to auto-generated /etc/modprobe.d/zfs.conf file 2023-07-30 09:23:17 -07:00
SimonFair
621c94a56c Update SysDrivers.php 2023-07-29 22:07:01 +01:00
SimonFair
da0ba3e031 Code fixes 2023-07-29 19:37:19 +01:00
tom mortensen
8be3d872b5 Merge pull request #1399 from SimonFair/SystemDrivers
Sysdrivers: Updates
2023-07-29 08:49:18 -07:00
SimonFair
aac56da2be Fix typo 2023-07-29 09:55:49 +01:00
SimonFair
b207e08dbb Update SysDrivers.page 2023-07-29 09:42:20 +01:00
SimonFair
f36e307de0 Sysdrivers: Updates
Add remove button and confirmation
Fix sort issues by updating cells
Code tidy
2023-07-29 09:39:36 +01:00
tom mortensen
a151faf62b Merge pull request #1398 from SimonFair/SystemDrivers
Fix reboot banner - System Drivers
2023-07-28 14:18:44 -07:00
SimonFair
c30405434a Add System to filters 2023-07-28 21:41:57 +01:00
SimonFair
64ea160d32 Add system modprobe.d files 2023-07-28 21:33:54 +01:00
SimonFair
d2ee1c1daf Fix scroll to top of page on edit. 2023-07-28 20:30:53 +01:00
tom mortensen
dfe44097e6 Merge pull request #1397 from unraid/diag-url
diagnostics: anonymize urls in servers.conf
2023-07-28 12:30:38 -07:00
SimonFair
caf018e0f4 Fix reboot banner. 2023-07-28 20:06:50 +01:00
tom mortensen
14d3088a9e Merge pull request #1396 from unraid/gitignore
Add VS Code SFTP config to .gitignore
2023-07-28 11:20:48 -07:00
tom mortensen
c2bc3e4bf0 Merge pull request #1395 from bergware/master
Network settings: fix DNS settings sometimes disappear
2023-07-28 11:20:15 -07:00
ljm42
ebbe7d43b9 diagnostics: anonymize urls in servers.conf 2023-07-28 11:14:29 -07:00
ljm42
fac2d4e7cf Add VS Code SFTP config to .gitignore 2023-07-28 09:55:14 -07:00
bergware
02a6951c14 Network settings: fix DNS settings sometimes disappear 2023-07-28 13:30:18 +02:00
bergware
fd01513258 Merge remote-tracking branch 'upstream/sysdrivers_helptext' 2023-07-28 13:28:27 +02:00
tom mortensen
f1136df451 Merge pull request #1394 from bergware/master
Network: do not use promiscuous mode for bridging
2023-07-28 00:44:44 -07:00
bergware
922200e8be Network: do not use promiscuous mode for bridging 2023-07-28 05:22:57 +02:00
tom mortensen
0c0e29b205 Merge pull request #1393 from unraid/sysdrivers_helptext
add System Drivers helptext
2023-07-27 17:35:13 -07:00
tom mortensen
661123a0e8 Merge pull request #1392 from SimonFair/SystemDrivers
System Drivers
2023-07-27 17:35:00 -07:00
tom mortensen
bf83258f1b Merge pull request #1391 from dlandon/master
Remove upgrade date.
2023-07-27 17:34:34 -07:00
ljm42
d111e72814 add System Drivers helptext 2023-07-27 14:38:37 -07:00
SimonFair
caab0f8959 Reduce number of tar packages tested. 2023-07-27 21:15:31 +01:00
dlandon
e2b6e2cf4c Revert "Add detection of network supporting promiscuous mode and disable macvlan if so,"
This reverts commit ab56583c71.
2023-07-26 11:13:37 -05:00
dlandon
ab56583c71 Add detection of network supporting promiscuous mode and disable macvlan if so, 2023-07-26 10:23:32 -05:00
dlandon
311534f019 Merge remote-tracking branch 'upstream/master' 2023-07-26 06:57:10 -05:00
dlandon
b233607809 Remove upgrade date. 2023-07-26 05:41:00 -05:00
bergware
45fcc2dd05 Merge remote-tracking branch 'upstream/master' 2023-07-26 09:18:34 +02:00
tom mortensen
73f3d56f90 Merge pull request #1390 from dlandon/master
Add ntp.conf, sshd.config, and servers.conf; apply maskIP to testparm…
2023-07-25 23:39:50 -07:00
dlandon
9ec5e7974c Insure all files have newline changed to cr, lf; don't do maskIP if 'all' option is specified; fix linefeed routine not working; change update date to mtime.. 2023-07-25 21:05:34 -05:00
dlandon
68cf94f04f Add ntp.conf, sshd.config, and servers.conf; apply maskIP to testparm; fix php warning. 2023-07-25 15:08:09 -05:00
bergware
a54e61e80e Revert "diagnostics: anonymize IP addresses"
This reverts commit 68aba40a7e.
2023-07-25 19:38:52 +02:00
bergware
c6021ae87a Revert "diagnostics: anonymize IP addresses"
This reverts commit 9781e9e41f.
2023-07-25 19:38:44 +02:00
bergware
f23f97e899 Merge remote-tracking branch 'upstream/master' 2023-07-25 19:35:59 +02:00
bergware
9781e9e41f diagnostics: anonymize IP addresses 2023-07-25 19:32:41 +02:00
bergware
68aba40a7e diagnostics: anonymize IP addresses 2023-07-25 19:19:17 +02:00
tom mortensen
a2c9e5bb8a Merge pull request #1389 from bergware/master
Dashboard: hide ZFS bar when no ZFS is used
2023-07-25 10:19:03 -07:00
bergware
014d0831cd diagnostics: anonymize IP addresses 2023-07-25 19:10:54 +02:00
bergware
3d284a0da0 diagnostics: anonymize IP addresses 2023-07-25 15:54:46 +02:00
bergware
12631a107d Dashboard: hide ZFS bar when no ZFS is used 2023-07-25 09:50:44 +02:00
tom mortensen
0d957d04ca Merge pull request #1388 from dlandon/master
Add previous Unraid version to diagnostics version txt file.
2023-07-24 16:13:52 -07:00
dlandon
ab277ce203 Remove branch from previous version. 2023-07-24 18:00:21 -05:00
dlandon
6a23a3d432 Add previous Unraid version to diagnostics version txt file. 2023-07-24 17:29:24 -05:00
tom mortensen
911b8ee5d6 Merge pull request #1366 from SimonFair/SystemDrivers
Add system drivers.
2023-07-24 15:28:04 -07:00
SimonFair
e7fc92e231 Check if rebuild is running. 2023-07-23 08:28:49 +01:00
SimonFair
c66026364b Fix support icon after system boot 2023-07-22 08:14:21 +01:00
SimonFair
6ec8cc9334 Disable rebuild button first time after boot. 2023-07-22 00:05:45 +01:00
SimonFair
beb3fe1527 Make script executable 2023-07-21 23:20:07 +01:00
SimonFair
d2634e821a Delete SysDriversInit.php 2023-07-21 23:19:16 +01:00
SimonFair
33230da120 Update initial build process 2023-07-21 23:19:02 +01:00
tom mortensen
bf0d59fc11 Merge pull request #1387 from SimonFair/VNC-Password
Retain VNC password during update.
2023-07-21 10:18:18 -07:00
tom mortensen
d18e03170d Merge pull request #1385 from bergware/master
rc.library: fix show ipv6
2023-07-21 10:13:42 -07:00
SimonFair
b7a1fc07ef Retain VNC password during update. 2023-07-21 12:54:08 +01:00
bergware
4a7a654a5e rc.library: fix show ipv6 2023-07-21 09:41:26 +02:00
tom mortensen
154eb943d9 Merge pull request #1384 from bergware/master
Show "Minimum free space" as absolute number instead of percentage
2023-07-19 11:28:51 -07:00
tom mortensen
c23a5fb2b2 Merge pull request #1383 from unraid/stop-libvirt
rc.libvirt: revised libvirt daemon running check
2023-07-19 11:28:17 -07:00
bergware
4ee1b3e9d1 Pools: show "Minimum free space" as absolute number instead of percentage 2023-07-19 11:42:30 +02:00
bergware
dd503c9552 Shares: show "Minimum free space" as absolute number instead of percentage 2023-07-19 11:40:42 +02:00
ljm42
ba0e21b27f rc.libvirt: revised libvirt daemon running check 2023-07-18 19:59:38 -07:00
tom mortensen
60b649aac0 Merge pull request #1382 from bergware/master
NFS: fixed running process detection
2023-07-18 17:43:10 -07:00
bergware
78cdf2a7cd NGINX: revise running process detection 2023-07-19 01:30:12 +02:00
bergware
1f6dd53dee Merge remote-tracking branch 'upstream/master' 2023-07-19 01:02:08 +02:00
bergware
783d5637c5 NFS: fixed running process detection 2023-07-19 01:01:26 +02:00
tom mortensen
478ba3ee3f Merge pull request #1381 from bergware/master
rc.services: fixes and improvements
2023-07-18 14:01:45 -07:00
bergware
3bdc5f5094 Revert "Add nginx watcher: restart nginx when open sockets are present"
This reverts commit 157d28ab0b.
2023-07-18 21:55:05 +02:00
bergware
89d52bb702 Revert "Make script executable"
This reverts commit a6f615ead2.
2023-07-18 21:54:50 +02:00
bergware
a6f615ead2 Make script executable 2023-07-18 17:05:24 +02:00
bergware
157d28ab0b Add nginx watcher: restart nginx when open sockets are present 2023-07-18 17:04:15 +02:00
bergware
1caadf7da0 Update monitor_nchan 2023-07-18 17:03:19 +02:00
bergware
a1e6c4a7a7 services: add logging 2023-07-18 13:56:38 +02:00
bergware
01fb06138c rc.services: exclude wireguard VPN docker tunnels 2023-07-18 13:43:29 +02:00
bergware
ea8c4e57e1 rc.services: exclude wireguard VPN docker tunnels 2023-07-18 13:38:38 +02:00
bergware
f427471e24 rc.services: exclude wireguard tunnels for ntp (code optimization) 2023-07-18 13:13:17 +02:00
bergware
5adeed0515 rc.services: exclude wireguard tunnels for ntp (code optimization) 2023-07-18 13:12:11 +02:00
bergware
a5b16f05bb rc.services: exclude wireguard tunnels for ntp (code optimization) 2023-07-18 13:06:33 +02:00
bergware
c880b4d4b2 rc.services: exclude wireguard VPN docker tunnels 2023-07-18 13:03:01 +02:00
bergware
14d3b3f2dd create_network_ini: improved IP address collection 2023-07-18 12:05:51 +02:00
bergware
4a11108fea services: add logging 2023-07-18 11:46:46 +02:00
bergware
b4ff52dcac create_network_ini: fixed dhcp hook 2023-07-18 11:46:31 +02:00
bergware
104eee06e3 RPC: changed running process detection 2023-07-18 11:45:02 +02:00
tom mortensen
bfe4fd5b12 Merge pull request #1380 from zackspear/refactor/feedback
refactor/feedback script
2023-07-17 22:17:02 -07:00
tom mortensen
ed158593ef Merge pull request #1379 from bergware/master
rc.docker: create same IPv6 network for containers and services
2023-07-17 22:16:30 -07:00
bergware
34276527da rc.library: interfaces always listed in the same order 2023-07-18 04:56:54 +02:00
bergware
993fe61e75 NFS: changed running process detection 2023-07-18 04:55:52 +02:00
Zack Spear
5656088f03 Merge branch 'unraid:master' into refactor/feedback 2023-07-17 17:27:06 -07:00
SimonFair
f0b13665a2 Change (builtin) to Kernel
Include Kernel - Inuse in selection.
2023-07-17 23:25:58 +01:00
SimonFair
3dcd3a7e71 Updates to rebuild. 2023-07-17 17:25:31 +01:00
SimonFair
d617c7508a Code Tidy 2023-07-16 23:15:59 +01:00
SimonFair
8372970be8 Fix support url. 2023-07-16 19:10:43 +01:00
SimonFair
c3e5801e82 Fix scrolling/php issues add search box. Set colours.
Only show support if available next to name,
2023-07-16 15:08:06 +01:00
bergware
52ac7fe459 rc.docker: create same IPv6 network for containers and services 2023-07-16 11:26:38 +02:00
SimonFair
74b8b47d93 Make script executable 2023-07-15 23:21:07 +01:00
SimonFair
e736bffb35 Tablesorter zebra bar and php fixes. 2023-07-15 23:15:52 +01:00
SimonFair
a19f337575 Move iniit and php fixes. 2023-07-15 20:29:03 +01:00
SimonFair
a562e98a75 Change order of json file creation. 2023-07-15 11:13:30 +01:00
SimonFair
2e712e4b33 Fix php warnings. 2023-07-15 10:35:23 +01:00
SimonFair
90f26f4312 Set Timeout for curl process 2023-07-15 10:28:43 +01:00
SimonFair
dc58e2fd69 Make script executable 2023-07-15 10:16:14 +01:00
SimonFair
bfdb01559f Create SysDriversInit event. 2023-07-15 10:14:38 +01:00
SimonFair
7d803ad7db Code Tidy 2023-07-15 09:44:16 +01:00
tom mortensen
0ba3f704ab Merge pull request #1378 from bergware/master
Network related fixes
2023-07-14 18:55:14 -07:00
bergware
602dc49291 rc.docker: change route metric of main interface as needed to avoid conflict with shim interface with shim interface 2023-07-15 01:47:01 +02:00
bergware
5344d24e93 rc.docker: change route metric of main interface as needed to avoid conflict with shim interface with shim interface 2023-07-15 01:04:04 +02:00
bergware
49d4f64874 Revert "rc.docker: change route metric of main interface as needed to avoid conf…"
This reverts commit e61ca5a898.
2023-07-15 00:34:08 +02:00
bergware
3dc6920485 Revert "rc.docker: change route metric of main interface as needed to avoid conf…"
This reverts commit 7b56181c61.
2023-07-15 00:33:50 +02:00
bergware
7b56181c61 rc.docker: change route metric of main interface as needed to avoid conf… 2023-07-15 00:27:42 +02:00
bergware
e61ca5a898 rc.docker: change route metric of main interface as needed to avoid conf… 2023-07-15 00:26:32 +02:00
bergware
3a6d7f345e rc.docker: change route metric of main interface as needed to avoid conflict with shim interface 2023-07-15 00:13:27 +02:00
bergware
8b8bf199d7 Routing table: fix display of metric value when zero 2023-07-15 00:12:09 +02:00
bergware
9467711a86 Wireguard: fix typo in Ipv6 mask 2023-07-15 00:11:37 +02:00
SimonFair
e4e5c09b49 Updates to selection and PHP updates. 2023-07-14 17:58:13 +01:00
Zack Spear
807e3effc0 refactor: feedback modal add troubleshoot option 2023-07-13 15:44:03 -07:00
Zack Spear
bc972e5470 refactor: feedback script dev maintainability 2023-07-13 14:52:26 -07:00
ljm42
eb3afe1c76 Merge pull request #1377 from zackspear/revert/feedback-modal
revert: feedback script to old format
2023-07-13 14:30:02 -07:00
Zack Spear
9f95fe4989 revert: feedback script to old format 2023-07-13 14:21:45 -07:00
Zack Spear
2c03593a5f refactor: feedback script for dev maintainability 2023-07-13 14:05:32 -07:00
SimonFair
5dced67f96 Update for filtering. 2023-07-12 20:44:33 +01:00
SimonFair
e1112b4ee9 Tablesorter updates. 2023-07-12 07:28:42 +01:00
tom mortensen
de080c0011 Merge pull request #1376 from bergware/master
rc.library: support ipv4 mapped addresses
2023-07-11 16:10:38 -07:00
bergware
0e62aadc10 rc.library: support ipv4 mapped addresses 2023-07-11 20:36:11 +02:00
tom mortensen
15eeac90ee Merge pull request #1375 from bergware/master
Share Edit: make minimum free space settings always available
2023-07-11 10:39:10 -07:00
bergware
13e7530255 rc.library: support ipv4 mapped addresses 2023-07-11 19:20:15 +02:00
bergware
3760ca333a rc.library: support ipv4 mapped addresses 2023-07-11 19:16:17 +02:00
bergware
4642900b68 rc.library: support ipv4 mapped addresses 2023-07-11 18:12:27 +02:00
bergware
8dde488806 rc.library: support ipv4 mapped addresses 2023-07-11 18:06:09 +02:00
bergware
1b616a11fc rc.library: support ipv4 mapped addresses 2023-07-11 17:22:17 +02:00
bergware
aa0910b206 rc.library: support ipv4 mapped addresses 2023-07-11 13:48:18 +02:00
bergware
d8d5d79105 rc.library: support ipv4 mapped addresses 2023-07-11 13:28:10 +02:00
bergware
959a7361b5 IPv6 RFC5952 correction 2023-07-11 11:17:10 +02:00
bergware
d476b316df Share Edit: make minimum free space settings always available 2023-07-11 08:55:08 +02:00
bergware
a3c4baf96f Share Edit: make minimum free space settings always available 2023-07-10 23:29:13 +02:00
SimonFair
f093a490ad Table sorter updates. 2023-07-10 20:02:01 +01:00
tom mortensen
c47825c12e Merge pull request #1374 from bergware/master
rc.nginx: explicit ipv4/ipv6 selection on lo interface
2023-07-10 09:21:37 -07:00
bergware
ea1ef65b06 rc.library: code optimization for ipv6 max/min 2023-07-10 13:27:29 +02:00
bergware
c9c920581e rc.library: code optimization for ipv6 max/min 2023-07-10 13:25:24 +02:00
bergware
dd29418299 rc.library: code optimization for ipv6 max/min 2023-07-10 10:06:15 +02:00
bergware
9313e1f1c8 rc.library: code optimization for ipv6 max/min 2023-07-10 05:48:20 +02:00
bergware
c95555a18f rc.library: code optimization for ipv6 max/min 2023-07-10 04:15:50 +02:00
bergware
d815c6aa49 rc.library: code optimization for ipv6 max/min 2023-07-10 03:57:07 +02:00
bergware
762d803496 rc.library: code optimization for ipv6 max/min 2023-07-10 03:32:30 +02:00
bergware
423f14b293 Revert "rc.library: code optimization for ipv6 max/min"
This reverts commit 4754705a9b.
2023-07-10 02:08:15 +02:00
bergware
7c58c5b518 Revert "rc.library: code optimization for ipv6 max/min"
This reverts commit 6da50d05ed.
2023-07-10 02:08:10 +02:00
bergware
31c8f4708c Revert "rc.library: code optimization for ipv6 max/min"
This reverts commit 60afb08b81.
2023-07-10 02:08:02 +02:00
bergware
60afb08b81 rc.library: code optimization for ipv6 max/min 2023-07-09 22:47:33 +02:00
bergware
6da50d05ed rc.library: code optimization for ipv6 max/min 2023-07-09 22:30:47 +02:00
bergware
4754705a9b rc.library: code optimization for ipv6 max/min 2023-07-09 22:26:35 +02:00
SimonFair
8c02c0c91d Fix save icon settings. 2023-07-09 19:05:38 +01:00
SimonFair
cbfe0f47b0 Enable supportpages switch. 2023-07-09 12:58:09 +01:00
SimonFair
bc736825db Add support page link. 2023-07-09 12:35:10 +01:00
SimonFair
429a18f5a3 Add Tablesorter 2023-07-09 08:00:45 +01:00
bergware
dada22beb8 rc.nginx: explicit ipv4/ipv6 selection on lo interface 2023-07-09 07:37:36 +02:00
SimonFair
aa93672c59 Revert to original load model. 2023-07-08 20:14:22 +01:00
SimonFair
8933d4e18d New load methods 2023-07-08 13:38:28 +01:00
SimonFair
aaebd5e237 Sigle Line Update for Modprobe 2023-07-08 09:02:46 +01:00
Tom Mortensen
29e31d3b75 further refinements testing for dockerd exit in 'docker stop' 2023-07-07 21:10:59 -07:00
tom mortensen
d141e243b3 Merge pull request #1373 from bergware/master
Miscellaneous fixes and enhancements
2023-07-07 14:25:20 -07:00
bergware
1bea993939 rc.docker: revised docker daemon running check 2023-07-07 20:29:49 +02:00
bergware
b051e7e028 rc.docker: revised docker daemon running check 2023-07-07 13:03:27 +02:00
bergware
b91a4ef28c VM settings: fixed typo 2023-07-07 13:01:08 +02:00
SimonFair
d8e0d82152 Set highlight lines 2023-07-06 22:03:37 +01:00
bergware
72626dbebf rc.library fix regression 2023-07-06 22:09:23 +02:00
SimonFair
62b2ef74dc Fix unsaved error prompt. 2023-07-06 18:25:02 +01:00
SimonFair
1de464754f Modprobe file update. 2023-07-06 17:21:14 +01:00
SimonFair
f2f0cf665f Add selections 2023-07-05 20:02:25 +01:00
SimonFair
580066ec1e Include Builtin Modules 2023-07-04 21:50:53 +01:00
bergware
a71badcec6 rc.library: improved selection of IPv6 addresses 2023-07-04 15:56:02 +02:00
bergware
e5b25761ea Network improvement: better IPv6 handling 2023-07-04 15:55:16 +02:00
bergware
42875c1a68 Code cleanup: remove unused setting 2023-07-04 15:54:05 +02:00
SimonFair
b2ab922439 Fix Multilanguage buttons 2023-07-03 06:46:50 +01:00
SimonFair
cf13a33f00 Fir directory permissions. 2023-07-02 21:54:34 +01:00
SimonFair
2b3990922d Fix usb updates. 2023-07-02 21:37:11 +01:00
SimonFair
a08452c59e Wip update. 2023-07-02 20:45:59 +01:00
SimonFair
5c76b3c850 WIP Update. 2023-07-02 08:45:21 +01:00
tom mortensen
7bd908bebe Merge pull request #1372 from dlandon/master
Allow more room on input line for NFS rules.
2023-06-29 09:26:48 -07:00
dlandon
76231385eb Allow more room on line for rules. 2023-06-28 10:20:42 -05:00
tom mortensen
9188ae90a2 Merge pull request #1371 from bergware/master
Dashboard: change header  MEMORY to SYSTEM
2023-06-28 07:36:34 -07:00
bergware
5cbbfa6fae diagnostics: include list of duplicate assignments 2023-06-28 09:58:58 +02:00
bergware
5abbd63bcc Dashboard: change header MEMORY to SYSTEM 2023-06-28 09:33:29 +02:00
tom mortensen
89cd18947d Merge pull request #1369 from unraid/fix-management-access
prevent error when no keyfile
2023-06-26 21:55:27 -07:00
tom mortensen
9aaed2940a Merge pull request #1370 from bergware/master
Suppress shim interfaces in list of duplicates
2023-06-26 21:55:00 -07:00
bergware
b9c34155df Merge remote-tracking branch 'upstream/master' 2023-06-27 03:38:34 +02:00
bergware
906cdf0215 Suppress shim interfaces in list of duplicates 2023-06-27 03:37:55 +02:00
ljm42
f2589dddf6 prevent error when no keyfile 2023-06-26 18:14:40 -07:00
ljm42
ae68286ecf prevent error when no keyfile 2023-06-26 17:57:48 -07:00
tom mortensen
2a71038657 Merge pull request #1368 from bergware/master
Networking: handle duplicate IP assignments and give warning
2023-06-26 17:29:57 -07:00
bergware
c3ee2d3879 Update error_interfaces 2023-06-27 02:03:41 +02:00
bergware
e6014cb504 Make script executable 2023-06-27 01:51:34 +02:00
bergware
256c40bea0 script: get list of duplicate assignments 2023-06-27 01:51:08 +02:00
bergware
82d825063b rc.library: do not allow duplicates in bind list 2023-06-27 01:50:27 +02:00
bergware
43cb533104 Network: add duplicate IPs warning 2023-06-27 01:49:44 +02:00
SimonFair
a391023148 Make script executable 2023-06-25 21:51:23 +01:00
SimonFair
276406c830 WIP Update 2023-06-25 20:51:00 +01:00
SimonFair
ec04a03ee3 Merge remote-tracking branch 'upstream/master' into Add-Clone-VM-option- 2023-06-25 19:15:01 +01:00
SimonFair
144c456980 WIP Update. 2023-06-25 18:50:18 +01:00
tom mortensen
41ea933b09 Merge pull request #1365 from bergware/master
Dashboard: use prototype function
2023-06-24 09:29:40 -07:00
SimonFair
74416ae502 Update SysDrivers.page 2023-06-24 16:07:01 +01:00
SimonFair
6b80225ada Add initial display page. 2023-06-24 16:03:05 +01:00
bergware
dbb6191e38 rc.library: do not allow duplicate entries 2023-06-24 12:25:46 +02:00
bergware
0dc226b0c9 WireGuard: delayed service update to avoid race condition 2023-06-24 09:53:51 +02:00
bergware
b186761ee7 Make script executable 2023-06-23 23:53:49 +02:00
bergware
d2dc649f8b WireGuard: delayed service update to avoid race condition 2023-06-23 23:51:34 +02:00
bergware
1c7c315dcd ZFS: fix percentage value to max 100% 2023-06-23 18:29:28 +02:00
bergware
5280224a07 Dashboard: description -> model 2023-06-23 18:21:53 +02:00
bergware
d0db98ebd3 Dashboard: description -> model 2023-06-23 18:20:02 +02:00
bergware
529e6f492f Dashboard: use prototype function 2023-06-23 12:05:44 +02:00
bergware
f9a72c0dbf Dashboard: use prototype function 2023-06-23 11:58:32 +02:00
bergware
22ec726111 Dashboard: use prototype function
This makes it easier for 3rd party developers to automatically hide dynamic content
2023-06-23 11:26:09 +02:00
tom mortensen
a6f084ab43 Merge pull request #1364 from bergware/master
Miscellaneous updates
2023-06-22 12:57:10 -07:00
bergware
9e070ff70e Merge remote-tracking branch 'upstream/master' 2023-06-22 21:21:05 +02:00
bergware
37563023df Minor code optimization to generate the welcome message 2023-06-22 21:15:23 +02:00
bergware
2e8ffa7dad OS update: add checkbox to confirm reading release notes before upgrading 2023-06-22 21:14:56 +02:00
bergware
1f0e326f81 Dashboard updates
- Re-introduce show/hide tile content
- Add new icon function to show/hide all content at once
- Reduce gap between columns
2023-06-22 21:13:38 +02:00
tom mortensen
46b0838da2 Merge pull request #1363 from bergware/master
RC services update
2023-06-21 09:52:09 -07:00
bergware
9e2d24460a RC services update
1. NFS - fix service reload
2. RPC - fix service reload
3. NGINX - remove HTTPS port in FQDN redirect when default 443
4. All services - register IPv4 Link local assignment (169.254.xxx.xxx)
5. All services - make lock file programmable
2023-06-21 18:04:29 +02:00
tom mortensen
874464702b Merge pull request #1362 from bergware/master
Dashboard: suppress coloring of ZFS utilization bar
2023-06-19 14:42:39 -07:00
bergware
9ee4b20225 Dashboard: suppress coloring of ZFS utilization bar 2023-06-19 23:31:07 +02:00
tom mortensen
d3711c0edc Merge pull request #1361 from bergware/master
rc updates
2023-06-19 11:16:05 -07:00
bergware
a40e38af45 Update rc.library.source 2023-06-19 20:11:55 +02:00
bergware
3c28f34b95 Update rc.library.source 2023-06-19 20:03:16 +02:00
bergware
09431bf07d Update rc.library.source 2023-06-19 19:57:29 +02:00
bergware
87475a8f47 rc updates
NTP: exclude WG tunnels and user defined interfaces
NTP: add interface name in config
SSH: add interface name in config
2023-06-19 19:54:09 +02:00
tom mortensen
e11657a747 Merge pull request #1360 from bergware/master
NTP: fix listening interfaces
2023-06-19 09:06:39 -07:00
bergware
002327476b Dashboard: show ZFS percentage based on c_max value 2023-06-19 09:41:33 +02:00
bergware
cbbdc001e2 Dashboard: show ZFS percentage based on c_max value 2023-06-19 09:35:45 +02:00
bergware
1070b46d3e NTP: fix listening interfaces 2023-06-19 09:32:34 +02:00
bergware
bb3c0c0b9a NTP: fix listening interfaces 2023-06-19 08:48:08 +02:00
bergware
9bb5178649 Merge remote-tracking branch 'upstream/master' 2023-06-19 06:46:24 +02:00
bergware
64c5690b06 Revert "Revised service reload functionality"
This reverts commit fa3532e46f.
2023-06-19 06:45:49 +02:00
bergware
fa3532e46f Revised service reload functionality 2023-06-18 17:23:14 +02:00
tom mortensen
e62c75e471 Merge pull request #1359 from bergware/master
rc.library: read IP addresses directly from interfaces instead of file
2023-06-18 07:58:40 -07:00
bergware
29dd4db867 Revised service reload functionality 2023-06-18 04:09:28 +02:00
bergware
c2065a3d93 Revised service reload functionality 2023-06-18 03:45:26 +02:00
bergware
384fa10575 Revised service reload functionality
This approach ensures the services are only reloaded once and not multiple times as happened before
2023-06-18 01:55:51 +02:00
bergware
0e14320c96 Dashboard: remove enhancements
Only fixes are included
2023-06-18 01:44:47 +02:00
bergware
9965273d21 Fix prc update 2023-06-18 01:28:17 +02:00
bergware
f2fa1b2f19 Fix nfsd update 2023-06-18 01:28:07 +02:00
bergware
4b04046623 rc.library correction for avahi service 2023-06-17 20:53:48 +02:00
bergware
c9b7470599 rc.avahi update 2023-06-17 20:53:28 +02:00
bergware
d5a3292b88 rc.library.source smarter ip address listing 2023-06-17 20:09:11 +02:00
bergware
89d499a801 rc.library.source smarter ip address listing 2023-06-17 20:04:40 +02:00
bergware
472d21ff16 rc.library.source smarter ip address listing 2023-06-17 19:44:44 +02:00
bergware
35f4d1bb91 Dashboard fixes and enhancements 2023-06-17 12:26:00 +02:00
bergware
679b4bd487 Dashboard fixes and enhancements 2023-06-17 12:22:58 +02:00
bergware
05c70b64f6 Dashboard fixes and enhancements 2023-06-17 12:07:41 +02:00
bergware
0f653bb315 Revert "Dashboard fixes and enhancements"
This reverts commit 3d30b5d34f.
2023-06-17 12:06:17 +02:00
bergware
3d30b5d34f Dashboard fixes and enhancements 2023-06-17 12:04:02 +02:00
bergware
504eb0a741 Revert "Dashboard fixes and enhancements"
This reverts commit 6f49e66a1a.
2023-06-17 11:55:47 +02:00
bergware
6f49e66a1a Dashboard fixes and enhancements 2023-06-17 11:54:31 +02:00
bergware
44bdb432c5 Dashboard fixes and enhancements
- Remove unnecessary title popups
- Add size view when hovering over memory fields
2023-06-17 11:52:14 +02:00
bergware
c695317b30 smb service: force listening interfaces upon reload 2023-06-17 07:16:03 +02:00
bergware
05d65de8f0 rc.library: remove unnecessary function 2023-06-17 06:31:20 +02:00
bergware
5aa7ecbadf Add REPLY6 event for IPv6 assignments 2023-06-17 06:13:20 +02:00
bergware
0344ee0482 Add REPLY6 event for IPv6 assignments 2023-06-17 06:02:41 +02:00
bergware
02985e163d rc.library: add ippv4/ipv6 selection to extra interfaces 2023-06-17 05:53:50 +02:00
bergware
c7d53c34d6 rc.library: read IP addresses directly from interfaces instead of file 2023-06-17 05:09:45 +02:00
bergware
67b3b51978 Merge remote-tracking branch 'upstream/master' 2023-06-17 05:01:34 +02:00
bergware
7f59557dc3 rc.library: read IP addresses directly from interfaces instead of file 2023-06-17 05:01:15 +02:00
bergware
89e60c6c99 rc.library: read IP addresses directly from interfaces instead of file 2023-06-17 04:31:39 +02:00
tom mortensen
6b502b7515 Merge pull request #1358 from bergware/master
UPS: PHP8 support
2023-06-16 01:09:25 -07:00
bergware
fafb8716ed UPS: PHP8 support 2023-06-15 21:37:42 +02:00
Tom Mortensen
081a87381e rc.docker: give dockerd 30 sec instead of 15 to start up 2023-06-13 14:02:07 -07:00
tom mortensen
ec8793b556 Merge pull request #1357 from bergware/master
StatusCheck: fixed: temperature thresholds
2023-06-12 12:10:53 -07:00
bergware
9b9674b666 StatusCheck: fixed: temperature thresholds 2023-06-11 17:54:33 +02:00
tom mortensen
b4c58243f4 Merge pull request #1356 from bergware/master
Minor code refactoring
2023-06-10 13:55:20 -07:00
bergware
a8cf94d7b3 DeviceInfo: fix incorrect floor size entries 2023-06-10 11:26:07 +02:00
bergware
bf720c488a Minor code refactoring 2023-06-10 03:57:59 +02:00
tom mortensen
d1cc5509d3 Merge pull request #1355 from bergware/master
Remove LO from rc.rpc, it is already included (regression)
2023-06-09 14:08:08 -07:00
bergware
1a9466e874 Remove LO from rc.rpc, it is already included (regression) 2023-06-09 22:51:40 +02:00
tom mortensen
d631f689a9 Merge pull request #1354 from bergware/master
Fix smb bind when using wireguard/tailscale tunnel
2023-06-08 21:25:28 -07:00
bergware
f5af4ff0c6 Fix smb bind when using wireguard/tailscale tunnel 2023-06-08 09:55:41 +02:00
bergware
7181d89c64 Fix smb bind when using wireguard/tailscale tunnel 2023-06-08 09:45:04 +02:00
bergware
c69f31b8fe Fix regression error in disk utilization and disk temperature thresholds 2023-06-07 22:12:42 +02:00
bergware
2d65dcee05 Remove LO from rc.rpc, it is already included 2023-06-07 21:26:24 +02:00
bergware
21b0545882 Fix smb bind when using wireguard/tailscale tunnel 2023-06-07 13:48:35 +02:00
bergware
2e70232c4e Fix smb bind when using wireguard/tailscale tunnel 2023-06-07 12:59:34 +02:00
tom mortensen
878598bb15 Merge pull request #1352 from bergware/master
rc.samba: add loopback as listening interface
2023-06-05 15:03:51 -07:00
bergware
32e413d747 rc.samba: all loopback as listening interface 2023-06-05 23:02:37 +02:00
tom mortensen
1f32774d7d Merge pull request #1351 from SimonFair/VM-Pages-fix-for-no-allocated-vCPUs
Fix VM page load issue
2023-06-04 15:08:06 -07:00
tom mortensen
5c04f4057e Merge pull request #1350 from Leseratte10/Leseratte10-patch-1
rc.docker: Fix multiple fixed IPs
2023-06-04 15:07:38 -07:00
SimonFair
6ede3d55a1 Merge remote-tracking branch 'upstream/master' into Add-Clone-VM-option- 2023-06-04 17:10:58 +01:00
SimonFair
42ab3ef58e Fix page load issue
Fix issues with VM page loads if users have removed vcpu pinning.
2023-06-04 16:37:25 +01:00
tom mortensen
1e9ddf4a02 Merge pull request #1349 from bergware/master
Minor fixes
2023-06-04 07:13:04 -07:00
SimonFair
c74236612e WIP Update 2023-06-04 12:09:36 +01:00
Florian Bach
e1b7edc389 rc.docker: Fix multiple fixed IPs 2023-06-04 12:58:16 +02:00
bergware
3e4d550e1f rc.samba: remove debug code 2023-06-04 10:10:14 +02:00
bergware
cafba206fb Helpers: fix PHP error in my_scale function 2023-06-04 10:09:36 +02:00
tom mortensen
ba9f2b9fae Merge pull request #1347 from bergware/master
rc scripts: use common library source
2023-06-03 12:16:22 -07:00
bergware
d16b17942f rc scripts: use common library source 2023-06-03 16:03:14 +02:00
bergware
5cf79417d4 rc scripts: use common library source 2023-06-03 15:21:26 +02:00
bergware
f2960f1630 rc scripts: use common library source 2023-06-03 12:13:12 +02:00
bergware
af4cc5b89d rc scripts: use common library source 2023-06-03 12:04:37 +02:00
bergware
8d3ca2347e rc scripts: use common library source 2023-06-03 11:55:27 +02:00
bergware
a74c08aa1f php-fpm: shebang 2023-06-03 11:46:01 +02:00
bergware
8b2b107e4a apcupsd: shebang 2023-06-03 11:45:49 +02:00
bergware
b99077e487 rc.inet1 suppress error messages 2023-06-03 11:42:03 +02:00
bergware
73c42baecc rc scripts: use common library source 2023-06-03 11:34:53 +02:00
bergware
30ad511b25 rc scripts: use common library source 2023-06-03 11:31:46 +02:00
bergware
74afa9e33e rc scripts: use common library source 2023-06-03 11:25:23 +02:00
bergware
ec6dfdb2cc rc scripts: use common library source 2023-06-03 11:03:11 +02:00
bergware
07c5d61c51 rc scripts: use common library source 2023-06-03 11:01:31 +02:00
bergware
61bf9180da rc scripts: use common library source 2023-06-03 10:58:32 +02:00
bergware
a1080bfc08 rc scripts: use common library source 2023-06-03 10:49:20 +02:00
bergware
f7107f0167 Revert "rc scripts: use common library source"
This reverts commit 56acff7c78.
2023-06-03 10:37:05 +02:00
bergware
56acff7c78 rc scripts: use common library source 2023-06-03 10:34:05 +02:00
bergware
7ed9634d15 rc scripts: use common library source 2023-06-03 10:17:02 +02:00
SimonFair
8f69ed880d Add snapshot directory setup to rc.libvirt 2023-06-03 07:47:48 +01:00
SimonFair
443305e3c7 Merge remote-tracking branch 'upstream/master' into Snapshots 2023-06-03 07:36:39 +01:00
bergware
a2cce93f66 rc scripts: use common library source 2023-06-03 07:01:43 +02:00
bergware
b3abc23591 rc scripts: use common library source 2023-06-03 06:59:45 +02:00
bergware
755d6577f7 rc scripts: use common library source
Library file is imported by each rc script, which has the common functions
This makes maintenance easier
2023-06-03 06:53:43 +02:00
Tom Mortensen
4462877775 oops inadvertently gitignore'd src 2023-06-02 13:58:27 -07:00
tom mortensen
6a77ad3449 Merge pull request #1346 from bergware/master
Diagnostics: add listening interfaces / updated rc scripts
2023-06-02 13:45:42 -07:00
bergware
2b0001e884 Updated rc scripts
- Fix typo in take() function
- Handle vlan names too, e.g. br0.2
2023-06-02 22:26:15 +02:00
bergware
ad93a8f37f Merge remote-tracking branch 'upstream/master' 2023-06-02 22:20:24 +02:00
Tom Mortensen
f9ec00b488 repo reorg 2023-06-02 12:49:33 -07:00
SimonFair
b16b9c35d2 WIP Update. 2023-06-02 16:32:48 +01:00
bergware
a2287286c1 Diagnostics: add listening interfaces 2023-06-02 10:39:40 +02:00
tom mortensen
25e934f0a7 Merge pull request #1345 from limetech/fix-wiki-links
Update documentation links
2023-05-31 12:10:28 -07:00
tom mortensen
2e879abde3 Merge pull request #1344 from zackspear/refactor/upc-wiki-links-to-new-docs
refactor(upc): update wiki links to new docs
2023-05-31 12:09:59 -07:00
ljm42
b364118a5f Update documentation links 2023-05-31 11:39:16 -07:00
Zack Spear
413f8f15a3 refactor(upc): update wiki links to new docs 2023-05-31 10:26:59 -07:00
tom mortensen
6535bb793d Merge pull request #1343 from bergware/master
Fixed disk utilization and temp thresholds
2023-05-31 07:37:35 -07:00
bergware
e473a4c52e Fixed disk utilization and temp thresholds 2023-05-31 11:13:42 +02:00
bergware
a259d16f69 Fixed disk utilization and temp thresholds 2023-05-31 09:48:55 +02:00
tom mortensen
d6853fb3fb Merge pull request #1342 from bergware/master
Fixed thresholds
2023-05-29 09:50:07 -07:00
SimonFair
67f6743060 WIP Update
Remove using snapshot metadata and create own record.
2023-05-29 17:07:04 +01:00
bergware
ba808f68ea Fixed thresholds 2023-05-29 17:51:09 +02:00
tom mortensen
1dc8ae39d7 Merge pull request #1341 from bergware/master
Fixed regression error in disk critical / warning coloring & monitoring
2023-05-29 08:47:09 -07:00
bergware
fd4dad2dae Fixed thresholds 2023-05-29 17:39:14 +02:00
bergware
3ccc68c13b Revert "Fixed thresholds"
This reverts commit 8e817b666a.
2023-05-29 17:35:23 +02:00
SimonFair
ea5cc33135 WIP Update 2023-05-28 18:46:51 +01:00
bergware
8e817b666a Fixed thresholds 2023-05-28 13:05:58 +02:00
bergware
fcd3dce728 Update monitor 2023-05-28 12:57:44 +02:00
bergware
321f40888b Merge remote-tracking branch 'upstream/master' 2023-05-28 12:55:54 +02:00
bergware
4213484c60 Fixed: temp / disk threshold monitoring 2023-05-28 12:48:41 +02:00
bergware
d2d51285f5 Fixed disk critical / warning coloring 2023-05-28 12:35:16 +02:00
tom mortensen
85440840f1 Merge pull request #1340 from bergware/master
GUI network fixes
2023-05-28 00:02:47 -07:00
bergware
ad2a1f85aa GUI network fixes 2023-05-27 11:09:53 +02:00
tom mortensen
c53e295074 Merge pull request #1339 from bergware/master
Network Extra: show current listening interfaces
2023-05-24 11:18:47 -07:00
bergware
342fc9c0fe Update NetworkExtra.page 2023-05-24 19:06:39 +02:00
bergware
b21b250df5 Update show_interfaces 2023-05-24 18:58:15 +02:00
bergware
fb065a0846 Merge remote-tracking branch 'upstream/master' 2023-05-24 18:51:23 +02:00
Tom Mortensen
7adc22e3cf Add Global Share Settings -> Permit exclusive shares 2023-05-24 09:35:14 -07:00
bergware
7573020e55 Make script executable 2023-05-24 18:34:48 +02:00
bergware
a8b88b8de0 Network Extra: show current listening interfaces 2023-05-24 18:34:27 +02:00
SimonFair
0eec9f2ad7 WIP Update 2023-05-24 07:44:29 +01:00
SimonFair
c7b88354db Make Script executable 2023-05-24 07:27:12 +01:00
tom mortensen
76f71014c6 Merge pull request #1338 from bergware/master
New network settings
2023-05-23 15:07:11 -07:00
bergware
dececc2da1 Make script executable 2023-05-23 23:39:03 +02:00
bergware
f5e3617a9a New script to reload and update services 2023-05-23 23:37:13 +02:00
bergware
e910e8f554 New network settings 2023-05-23 23:36:43 +02:00
bergware
cc074f50d1 WG: add service reload function 2023-05-23 23:36:27 +02:00
bergware
1b852a0311 Update helptext with new network settings 2023-05-23 23:36:00 +02:00
tom mortensen
d99d21b3b0 Merge pull request #1337 from bergware/master
Fix network regression
2023-05-23 10:24:44 -07:00
bergware
6461a22122 Fix network regression 2023-05-23 10:56:39 +02:00
SimonFair
34c3de339e Updates for Blockcommit 2023-05-21 19:24:13 +01:00
SimonFair
1911da7fc3 Add VMAjaxCall for Block commands 2023-05-21 19:04:35 +01:00
tom mortensen
b7d4ea63c4 Merge pull request #1336 from bergware/master
Lock / unlock button: switch green / red colorr
2023-05-17 11:09:13 -07:00
bergware
b968b54260 Lock / unlock button: switch green / red colorr
Green is normal state (page is locked)
Red is attention state (page is unlocked)
2023-05-17 19:58:58 +02:00
tom mortensen
7d40a23265 Merge pull request #1335 from bergware/master
Share Edit: allow 1 letter names
2023-05-17 08:54:05 -07:00
bergware
f1c9fd467f Share Edit: allow 1 letter names 2023-05-17 11:00:58 +02:00
tom mortensen
8bfc9f88f8 Merge pull request #1334 from bergware/master
Share Edit: warn when invalid zfs name is used
2023-05-16 10:53:19 -07:00
bergware
c891ba0946 Share Edit: warn when invalid zfs name is used 2023-05-16 19:32:51 +02:00
tom mortensen
4d8276eeea Merge pull request #1333 from ich777/master
Add Pushbits to notification agents
2023-05-16 08:56:07 -07:00
ab0c8245d5 Update NotificationAgents.xml
- corrected typo
2023-05-16 17:28:45 +02:00
62076eded5 Update NotificationAgents.xml
- Added default values to Pushbits URL and App Token
2023-05-16 13:26:18 +02:00
cc0d8e8fe0 added pushbits.png
- size 16x16
2023-05-16 13:17:31 +02:00
65452938fa Update NotificationAgents.xml
- Add Pushbits Agent for Matrix/Synapse integration
  https://github.com/pushbits/server
2023-05-16 13:15:48 +02:00
SimonFair
0ad1be3c23 Updates to snapshots 2023-05-13 12:46:35 +01:00
SimonFair
4c835ba2fa Add snapshot option to Dashboard 2023-05-11 18:58:04 +01:00
SimonFair
8011ce4533 Add snpshot option to Dashboard 2023-05-11 18:57:43 +01:00
SimonFair
3907be9758 Add CD view to main VM detail 2023-05-11 17:25:53 +01:00
SimonFair
5e4bd81b4b Updates to snapshots. 2023-05-11 17:25:17 +01:00
tom mortensen
661e29f11c Merge pull request #1332 from bergware/master
Management: fix ipv4 and ipv6 references
2023-05-11 00:07:19 -07:00
bergware
151238e988 Login: fix regression display on phones 2023-05-10 13:14:50 +02:00
bergware
d419e054e9 Management: fix ipv4 and ipv6 references 2023-05-10 00:15:19 +02:00
bergware
ff11476400 Management: fix ipv4 and ipv6 references 2023-05-10 00:12:26 +02:00
bergware
a6860c2376 Management: fix ipv4 and ipv6 references 2023-05-09 23:14:43 +02:00
SimonFair
a953d903f4 Add popups and delete function.
Error with checkbox on revert page and real file delete is disabled
2023-05-08 17:05:01 +01:00
SimonFair
7af43228c8 Change Snapshot option to show only for shutdown VMs. 2023-05-07 20:04:38 +01:00
SimonFair
f104dfcf2b Initial Snapshot and revert function 2023-05-07 19:39:34 +01:00
tom mortensen
d183da7130 Merge pull request #1330 from bergware/master
TRIM: fix operation when ZFS is not active
2023-05-07 09:49:36 -07:00
bergware
2649d58c8f TRIM: fix operation when ZFS is not active 2023-05-07 12:00:23 +02:00
tom mortensen
6eff9dd909 Merge pull request #1329 from bergware/master
Network settings: fix bug in description field
2023-05-06 08:11:57 -07:00
tom mortensen
08f8d979fc Merge pull request #1328 from zackspear/master
fix(upc): v3.7.3 duplicate upgrade button in metainfo only while iframed
2023-05-06 08:11:17 -07:00
bergware
632c96d0d3 Merge remote-tracking branch 'upstream/master' 2023-05-06 16:15:26 +02:00
bergware
e2fb303e91 Updated CoW help text 2023-05-06 15:25:05 +02:00
bergware
096b3f6649 Network settings: fix bug in description field 2023-05-06 08:34:18 +02:00
bergware
9e055e29f9 Network settings: fix bug in description field
- For interfaces other then eth0
2023-05-06 03:07:21 +02:00
tom mortensen
08a6347f6d Merge pull request #1327 from bergware/master
netconfig: PHP8 fix and regression fix
2023-05-05 17:17:44 -07:00
Zack Spear
2d759318ed fix(upc): v3.7.3 duplicate upgrade button in metainfo only while iframed 2023-05-05 17:15:38 -07:00
bergware
73b536c7ae Network settings: fix bug in description field 2023-05-06 01:25:06 +02:00
bergware
e25f32b258 Diagnostics: fix PHP8 error 2023-05-06 01:22:08 +02:00
bergware
86357dbde8 Network settings: fix bug in description field 2023-05-06 01:07:14 +02:00
SimonFair
8020bd3518 Add snapshots to view 2023-05-06 00:00:36 +01:00
bergware
40ecff3bb0 netconfig: PHP8 fix and regression fix 2023-05-05 22:47:56 +02:00
bergware
90499aabb8 netconfig: PHP8 fix and regression fix 2023-05-05 22:42:21 +02:00
tom mortensen
f680322860 Merge pull request #1326 from bergware/master
Network settings: fix bug in description field
2023-05-05 11:46:53 -07:00
bergware
45ac6fced7 Network settings: fix bug in description field 2023-05-05 20:40:02 +02:00
tom mortensen
cdc095a86d Merge pull request #1325 from bergware/master
netconfig: fix PHP8 errors
2023-05-05 09:41:22 -07:00
bergware
0a4a91e7f8 netconfig: fix PHP8 errors 2023-05-05 14:57:51 +02:00
tom mortensen
83bec84db1 Merge pull request #1324 from bergware/master
VMs: fixed notification subject
2023-05-05 02:41:08 -07:00
bergware
2622027fe3 VMs: fixed notification subject 2023-05-04 00:17:44 +02:00
bergware
1db4f30ab4 VMs: fixed notification subject 2023-05-04 00:10:58 +02:00
bergware
cb060f00f1 VMs: fixed notification subject 2023-05-03 23:55:51 +02:00
tom mortensen
dcb027814e Merge pull request #1323 from SimonFair/1Tb-Fix-for-VMs
VM  Max memory > 1TB
2023-05-03 10:55:24 -07:00
tom mortensen
53b7b31eaf Merge pull request #1322 from bergware/master
Shares: enable CLEAN UP button only when unused files are present
2023-05-03 10:48:35 -07:00
tom mortensen
d6c2e1b659 Merge pull request #1321 from zackspear/master
fix(upc): v3.7.2 key replacement w/ connect & not registered
2023-05-03 10:47:17 -07:00
SimonFair
667a599351 Fix space in memory 2023-05-03 18:24:11 +01:00
bergware
4f88952835 Shares CLEAN UP: compare names case non-sensitive 2023-05-02 21:47:04 +02:00
bergware
eb02e0b62e Legacy: Openbox display DONE button inside iframe 2023-05-02 05:59:14 +02:00
bergware
121177a369 Shares: enable CLEAN UP button only when unused files are present 2023-05-01 23:22:25 +02:00
Zack Spear
9c7332cb97 fix(upc): v3.7.2 key replacement w/ connect & not registered 2023-05-01 13:45:57 -07:00
tom mortensen
c4e13784a2 Merge pull request #1319 from bergware/master
newperms: added path check to restrict the operation
2023-05-01 09:58:04 -07:00
tom mortensen
b7e66a1e27 Merge pull request #1320 from zackspear/master
fix(upc): v3.7.1 replace key fix on registration page
2023-05-01 09:25:03 -07:00
Zack Spear
1588bf5031 fix(upc): v3.7.1 replace key fix on registration page 2023-05-01 09:23:36 -07:00
bergware
883b279075 newperms: support UD and add warning when invalid input 2023-05-01 18:11:36 +02:00
bergware
7f21dd4724 newperms: support UD and add warning when invalid input 2023-05-01 09:18:37 +02:00
bergware
1b989d1c9f newperms: added path check to restrict the operation
Only /mnt/disk or /mnt/user is accepted
2023-04-30 09:57:01 +02:00
tom mortensen
b7a2432b0f Merge pull request #1318 from bergware/master
Shares: enhancements and removal of csrf exposure
2023-04-29 08:24:14 -07:00
bergware
ddbbadedcb Shares: enhancements and removal of csrf exposure 2023-04-29 16:57:52 +02:00
tom mortensen
78dd8378d2 Merge pull request #1317 from zackspear/master
refactor(upc): 3.7.0 post connect launch fixes / refactors
2023-04-28 18:55:45 -07:00
tom mortensen
eaafb214a7 Merge pull request #1316 from bergware/master
Shares: fixed typo
2023-04-28 18:55:36 -07:00
Zack Spear
59ced63dd7 refactor(upc): 3.7.0 post connect launch fixes / refactors 2023-04-28 11:16:52 -07:00
bergware
3ee6384e90 Helptext: fixed typo 2023-04-28 13:32:20 +02:00
bergware
8e55b571c9 Shares: fixed typo 2023-04-28 10:58:06 +02:00
Tom Mortensen
c9eed5e32e update helptext 2023-04-27 12:47:08 -07:00
tom mortensen
01023582ed Merge pull request #1314 from bergware/master
Shares: improved empty folder checking
2023-04-26 08:53:08 -07:00
bergware
e580c16ccd Shares: improved empty folder checking 2023-04-26 10:49:00 +02:00
tom mortensen
cfdddfd275 Merge pull request #1313 from bergware/master
Update helptext.txt
2023-04-25 15:33:48 -07:00
bergware
98a2b44939 Update helptext.txt 2023-04-25 23:23:20 +02:00
bergware
48ae8d7845 Update helptext.txt 2023-04-25 22:33:36 +02:00
tom mortensen
cf557a1567 Merge pull request #1312 from bergware/master
Auto fill-in minimum free space for new shares
2023-04-25 11:59:56 -07:00
bergware
e76366192d Auto fill-in min free space for new shares 2023-04-25 20:52:18 +02:00
bergware
fc239a9d37 ShareEdit: fix regression error 2023-04-25 20:15:49 +02:00
tom mortensen
edab5e892c Merge pull request #1311 from zackspear/master
feat(upc): update to v3 for connect
2023-04-25 11:05:56 -07:00
tom mortensen
93f9f69aec Merge pull request #1309 from Squidly271/patch-56
PHP8 Update
2023-04-25 11:05:45 -07:00
tom mortensen
95446bf496 Merge pull request #1308 from bergware/master
DeviceInfo and ShareEdit: fix size calculation
2023-04-25 11:05:24 -07:00
tom mortensen
235b4f7363 Merge pull request #1307 from SimonFair/Remove-lock-posix='on'-flock='on'/-
VM Manager Updates
2023-04-25 11:05:05 -07:00
Zack Spear
0b20787f68 feat(upc): v3.3.0 patches 2023-04-25 10:16:35 -07:00
Zack Spear
85ae590fb4 refactor: myservers1/2 update to match plg 2023-04-25 07:55:17 -07:00
bergware
1a8cd35e25 Shares: GUI enhancement 2023-04-25 11:34:36 +02:00
bergware
0cd4d3b9b6 Shares: scan for empty folder in background 2023-04-25 11:03:26 +02:00
bergware
817831e859 Shares: scan for empty folder in background 2023-04-25 10:53:47 +02:00
bergware
ae99020373 Share/Pool size calculation: show and allow percentage values 2023-04-25 10:06:07 +02:00
bergware
35d7b7cbc9 Share/Pool size calculation: show and allow percentage values 2023-04-25 10:04:06 +02:00
bergware
3f131a139f Share/Pool size calculation: show and allow percentage values 2023-04-25 10:02:07 +02:00
bergware
0f7b6fd8a2 Share/Pool size calculation: show and allow percentage values 2023-04-25 09:45:41 +02:00
bergware
d4b74590b1 Share/Pool size calculation: show and allow percentage values 2023-04-25 09:39:16 +02:00
bergware
5cedfe7dcd Share/Pool size calculation: show and allow percentage values 2023-04-25 09:37:38 +02:00
bergware
327e04e882 Share/Pool size calculation: show and allow percentage values 2023-04-25 09:29:42 +02:00
bergware
18268788c2 Share/Pool size calculation: show and allow percentage values 2023-04-25 09:27:33 +02:00
bergware
b66cb3bd49 Share/Pool size calculation: show and allow percentage values 2023-04-25 09:16:41 +02:00
bergware
5f75651877 Share/Pool size calculation: show and allow percentage values 2023-04-25 09:12:04 +02:00
bergware
bd605da4f5 Share/Pool size calculation: show and allow percentage values 2023-04-25 07:45:53 +02:00
bergware
43707f5287 Revert "Share/Pool size calculation: show and allow percentage values"
This reverts commit f588b3ef48.
2023-04-25 07:13:21 +02:00
bergware
f588b3ef48 Share/Pool size calculation: show and allow percentage values 2023-04-25 07:09:32 +02:00
bergware
a1871f0310 Share/Pool size calculation: show and allow percentage values 2023-04-25 07:04:05 +02:00
bergware
b3e49bc721 Share/Pool size calculation: show and allow percentage values 2023-04-25 07:01:23 +02:00
bergware
e69b1e7de4 Share/Pool size calculation: show and allow percentage values 2023-04-25 06:48:09 +02:00
bergware
98c8f5cbc5 Share/Pool size calculation: show and allow percentage values 2023-04-25 06:43:08 +02:00
bergware
3815eba412 Share/Pool size calculation: show and allow percentage values 2023-04-25 06:17:16 +02:00
bergware
f3af5a3959 Updated browser function 2023-04-25 05:44:39 +02:00
bergware
c4aef4790d Updated browser function 2023-04-25 05:34:38 +02:00
bergware
8e5f5997ed Updated browser function 2023-04-25 04:25:35 +02:00
bergware
f20fb092f4 Updated browser function 2023-04-25 03:52:57 +02:00
bergware
393d5306a6 Updated browser function
- Make compatible with Unraid 6.12
2023-04-25 03:36:47 +02:00
Zack Spear
ffc3955a4b feat(upc): update to v3.0.0 for connect 2023-04-24 18:14:24 -07:00
bergware
356e5ca497 Share/Pool size calculation: show and allow percentage values 2023-04-25 01:58:35 +02:00
bergware
d791c8d2ad Revert "GUI style adjustment"
This reverts commit a283073dfb.
2023-04-24 21:31:05 +02:00
bergware
72f3196059 Revert "Shares: add open file detection for exclusive shares"
This reverts commit b7f1952276.
2023-04-24 21:29:58 +02:00
bergware
bc5fb1ef9a Revert "Shares: add open file detection for exclusive shares"
This reverts commit ecefb2c61e.
2023-04-24 21:29:50 +02:00
bergware
4f6b39f313 Revert "Shares: add open file detection for exclusive shares"
This reverts commit 85aced172c.
2023-04-24 21:29:43 +02:00
bergware
a283073dfb GUI style adjustment 2023-04-24 15:28:44 +02:00
bergware
85aced172c Shares: add open file detection for exclusive shares 2023-04-24 14:59:33 +02:00
bergware
ecefb2c61e Shares: add open file detection for exclusive shares 2023-04-24 14:27:52 +02:00
bergware
b7f1952276 Shares: add open file detection for exclusive shares
Editing is disabled when exclusive share has open files
2023-04-24 14:21:43 +02:00
bergware
c43f3e003c ShareEdit: hide minimum free space when not used 2023-04-24 11:21:54 +02:00
bergware
cb43119a19 ShareEdit: hide minimum free space when not used 2023-04-24 11:07:03 +02:00
bergware
440c7b40da DeviceInfo: improved exception handling 2023-04-24 11:06:31 +02:00
Squidly271
048184f3a1 PHP8 Update 2023-04-23 15:21:06 -04:00
SimonFair
e10dd6fd13 Fix typo 2023-04-23 17:26:00 +01:00
SimonFair
edef2b4b0a Make remote viewer and web console options selectable. 2023-04-23 13:23:58 +01:00
bergware
6f07cc869e Shares: add exclusive access indicator 2023-04-23 10:49:34 +02:00
bergware
74e39d4f7b Shares: add exclusive access indicator 2023-04-22 21:00:37 +02:00
bergware
134ab27295 DeviceInfo and ShareEdit: fix size calculation 2023-04-22 20:41:30 +02:00
Tom Mortensen
f325e7af2e Exclusive share handling 2023-04-22 02:04:41 -07:00
SimonFair
004141beff Add remote viewer console support
Option to download .vv file and start remote viewer is browser set to open file .vv when downloaded.
2023-04-21 19:29:57 +01:00
SimonFair
3032b26cd6 Remove-lock-posix='on'-flock='on'/-
Remove Remove-lock-posix='on'-flock='on' as not supported by Rust version of virtiofsd and virtiofsd been removed from QEMU from v8 onwards and needs to be updated to rust version.
2023-04-21 14:03:41 +01:00
tom mortensen
6712378cd9 Merge pull request #1304 from dlandon/master
Fix network display aberation.
2023-04-18 09:01:50 -07:00
tom mortensen
de5af1b403 Merge pull request #1305 from Squidly271/patch-55
PHP8 update
2023-04-18 09:00:44 -07:00
tom mortensen
8eb1e87067 Merge pull request #1306 from bergware/master
Updated DeviceInfo and Shares page
2023-04-18 09:00:23 -07:00
bergware
8e866244cd PHP8 support 2023-04-18 11:45:43 +02:00
bergware
d100f37eb7 Shares: added info icon 2023-04-18 11:28:21 +02:00
bergware
8b9b2ee24b Shares: added info icon 2023-04-18 11:17:10 +02:00
bergware
eb644123bc Added autosize message 2023-04-18 11:10:24 +02:00
bergware
c59f965a35 Added autosize message 2023-04-18 11:05:41 +02:00
bergware
021ed95419 Added autosize message 2023-04-18 11:01:46 +02:00
bergware
34b7b01e4a Added autosize message 2023-04-18 10:57:37 +02:00
bergware
7467a80104 Added typo protection 2023-04-18 10:04:17 +02:00
bergware
08bc72c2c9 Shares: new set up with primary and secondary
Includes automatic floor calculation for shares
2023-04-18 09:42:37 +02:00
bergware
a7569b9e76 DeviceInfo: added automatic floor calculation 2023-04-18 09:41:21 +02:00
bergware
444447d867 DeviceInfo: show shareFloor with units 2023-04-17 16:13:56 +02:00
Squidly271
f434125d61 PHP8 update 2023-04-15 13:10:53 -04:00
dlandon
6180603e8a Fix display aberation. 2023-04-14 18:12:51 -05:00
dlandon
ade53bff3b Merge remote-tracking branch 'upstream/master' 2023-04-14 17:24:10 -05:00
Tom Mortensen
d4a62035e5 Merge branch 'master' of github.com:limetech/webgui 2023-04-13 10:58:45 -07:00
Tom Mortensen
40e252468a btrfs raid0 requires min 2 devices 2023-04-13 10:58:38 -07:00
tom mortensen
993d97e2c2 Merge pull request #1303 from Squidly271/patch-54
Docker Containers console won't use bash if selected
2023-04-13 10:56:50 -07:00
Squidly271
b022ef4bae Docker Containers console won't use bash if selected 2023-04-11 18:01:42 -04:00
Tom Mortensen
edbc963c45 prevent spurious 'missing device' notifications 2023-04-10 23:53:30 -07:00
Tom Mortensen
b7af84e47a Merge branch 'master' of github.com:limetech/webgui 2023-04-10 14:35:51 -07:00
tom mortensen
0c1b50c0ff Merge pull request #1301 from bergware/master
Change update.htm to work inside i-frame
2023-04-10 14:35:39 -07:00
bergware
4e4a6f5af4 Array Operation: prevent double clicking of Start button 2023-04-10 23:17:54 +02:00
bergware
2ab6365e83 Change update.htm to work inside i-frame 2023-04-10 22:54:23 +02:00
Tom Mortensen
c27e88c3ab Merge branch 'master' of github.com:limetech/webgui 2023-04-10 09:15:18 -07:00
tom mortensen
a1ef762438 Merge pull request #1300 from bergware/master
Miscellaneous updates and fixes
2023-04-10 09:15:07 -07:00
bergware
3f3bdc9e74 Revert "Shares: changed "cache" options"
This reverts commit 4f13764740.
2023-04-09 10:18:09 +02:00
bergware
ada3fdc048 Dashboard: fix color of wrench icon 2023-04-08 11:18:33 +02:00
bergware
3a81c67eab Array operation: add missing mdState "STARTED" 2023-04-08 11:09:43 +02:00
bergware
9dd6d5c946 ShareList: adjust column width 2023-04-05 09:58:15 +02:00
bergware
0679d39fa6 ShareList: adjust column width 2023-04-05 09:56:07 +02:00
bergware
8dc3b7bed6 OpenTerminal: change termination signal (hard stop) 2023-04-05 09:46:29 +02:00
bergware
9ad75c2233 Display settings: add missing defaults 2023-04-05 09:39:41 +02:00
bergware
4f13764740 Shares: changed "cache" options
This is a prroposal
2023-04-03 22:05:30 +02:00
Tom Mortensen
9fbfeb693c Merge branch 'master' of github.com:limetech/webgui 2023-04-02 10:31:07 -07:00
tom mortensen
06e3c0c887 Merge pull request #1299 from bergware/master
Add share: fix hidden share name check
2023-04-02 09:56:09 -07:00
bergware
09ea6aae59 Add share: fix hidden share name check 2023-04-02 04:57:59 +02:00
bergware
b17474b20d Revert "Dashboard: disable "Edit" button on page entry"
This reverts commit 5fea237e7b.
2023-04-02 04:27:46 +02:00
bergware
5fea237e7b Dashboard: disable "Edit" button on page entry
- Use the lock icon to enable "Edit"
2023-04-02 03:29:34 +02:00
Tom Mortensen
05e82e527f if vfio-pci bind error, prevent autostart 2023-03-31 14:40:50 -07:00
Tom Mortensen
c2032e5bc4 fix autustart incorrect toggle state 2023-03-31 14:39:42 -07:00
tom mortensen
6828594671 Merge pull request #1297 from Squidly271/patch-53
PHP8 update
2023-03-30 13:02:53 -07:00
Squidly271
c19a405c39 PHP8 update 2023-03-30 15:33:30 -04:00
tom mortensen
2dbfae7c74 Merge pull request #1296 from Commifreak/wget_percentage_fix
Make wget percentage detection more robust
2023-03-30 09:42:01 -07:00
tom mortensen
09a6842577 Merge pull request #1295 from bergware/master
Minor updates
2023-03-30 09:39:02 -07:00
Robin Kluth
63cef77e29 Make wget percentage detection more robust 2023-03-30 17:09:49 +02:00
bergware
5ab39d1f8b Docker container size: minor column adjustment 2023-03-29 09:59:23 +02:00
bergware
e35384bd4a Dashboard: revised status check of docker / libvirt 2023-03-29 09:39:17 +02:00
bergware
b987f35d12 PHP8 support 2023-03-29 09:38:33 +02:00
tom mortensen
8a0546ad7c Merge pull request #1293 from Squidly271/patch-52
Plugin: Don't show update button if incompatible
2023-03-27 13:29:49 -07:00
tom mortensen
1af02319f3 Merge pull request #1292 from Commifreak/plugin-display-retval
Display Run command retval in error message
2023-03-27 13:29:25 -07:00
tom mortensen
7ab0abf8c1 Merge pull request #1291 from Commifreak/docker-orphanimage-colspan-fix
Fix table layout for orphan images
2023-03-27 13:28:26 -07:00
tom mortensen
966482da39 Merge pull request #1290 from bergware/master
Miscellaneous updates
2023-03-27 13:27:54 -07:00
Squidly271
41ab38ec45 Plugin: Don't show update button f incompatible 2023-03-26 10:12:48 -04:00
Robin Kluth
8e78d6350b Display Run command retval in error message 2023-03-26 13:51:03 +02:00
Robin Kluth
b5f2e9da94 Fix table layout for orphan images 2023-03-25 19:13:11 +01:00
bergware
94d1952c5e Plugins: fix missing button when multiple updates 2023-03-25 10:29:22 +01:00
bergware
2a58b4e7a8 Docker: fix running status detection (optimized) 2023-03-25 09:32:36 +01:00
bergware
eea94bba2c VM: lock list reset upon page load 2023-03-25 01:42:14 +01:00
bergware
06125019c2 Docker: lock list reset upon page load 2023-03-25 01:42:05 +01:00
bergware
dc93960912 OpenTerminal: set terminate signal 2023-03-24 17:14:25 +01:00
bergware
55b7b14e23 OpenTerminal: limit clients 2023-03-24 16:55:20 +01:00
bergware
607a888abd Revert "OpenTerminal: kill stalled instances"
This reverts commit af66d0d641.
2023-03-24 16:46:12 +01:00
bergware
af66d0d641 OpenTerminal: kill stalled instances 2023-03-24 16:34:47 +01:00
bergware
6c91047106 TRIM: skip ZFS sub-volumes 2023-03-24 15:53:19 +01:00
bergware
74429dfc94 Revert "TRIM: skip ZFS sub-volumes"
This reverts commit d8c5e1bbd8.
2023-03-24 15:50:35 +01:00
bergware
d8c5e1bbd8 TRIM: skip ZFS sub-volumes 2023-03-24 15:46:42 +01:00
bergware
77b793ac6b Context menu: automatic triangle placement 2023-03-23 22:52:04 +01:00
bergware
9f552ac985 Docker: fix running status detection 2023-03-23 17:46:39 +01:00
bergware
16d6853449 Dashboard: fix pool warnings 2023-03-23 16:57:36 +01:00
bergware
68c23105db Syslog: fix resizing 2023-03-22 12:05:45 +01:00
bergware
c21f35c29d Revert "Syslog: fix resizing"
This reverts commit 994740259c.
2023-03-22 12:03:20 +01:00
bergware
994740259c Syslog: fix resizing 2023-03-22 12:01:47 +01:00
bergware
3f0b49352b TRIM: fix is_hdd logic 2023-03-22 11:22:17 +01:00
bergware
045dcc8699 TRIM: skip BTRFS devices which do not support trim 2023-03-22 10:58:00 +01:00
bergware
20bdc80a9f PHP8 support 2023-03-21 17:55:43 +01:00
bergware
da2fad1869 Allow SMART long test for UD 2023-03-21 17:36:21 +01:00
bergware
e555902e15 TRIM: better detection of HDD / SSD 2023-03-21 13:30:19 +01:00
bergware
2b4d408f35 TRIM: better detection of HDD / SSD 2023-03-21 13:14:36 +01:00
bergware
c575da11c3 TRIM: better detection of HDD / SSD
Will skip trim on HDD
2023-03-21 13:12:55 +01:00
bergware
48ef8b415d TRIM: skip BTRFS devices which do not support trim 2023-03-21 11:04:44 +01:00
bergware
e38f7a6140 PHP8 support 2023-03-21 02:43:21 +01:00
bergware
7da5ec4381 TRIM: skip ZFS devices which do not support trim 2023-03-20 17:32:11 +01:00
bergware
580be6ed91 TRIM: skip ZFS devices which do not support trim 2023-03-20 17:19:23 +01:00
bergware
00e8f39958 TRIM: skip ZFS devices which do not support trim 2023-03-20 16:56:35 +01:00
bergware
f1571783b8 Dashboard: make wrench icon stand out 2023-03-20 11:00:29 +01:00
bergware
cbe9e6480f Notifications Archive: adjust fixed height 2023-03-19 22:13:07 +01:00
bergware
7f3fd438d5 Read processor type from /proc/cpuinfo
Use dmidecode as backup
2023-03-19 18:30:23 +01:00
bergware
a3579163ed PHP8 support 2023-03-19 12:32:22 +01:00
bergware
65e929bc51 Minor code optimization 2023-03-19 11:47:15 +01:00
bergware
ba4b62d63a PHP8 support 2023-03-19 11:37:12 +01:00
bergware
4810c5988c Notifications Archive: adjust fixed height 2023-03-19 11:28:30 +01:00
bergware
992643b666 TRIM: code optimization 2023-03-18 22:04:04 +01:00
bergware
ef30f756d5 TRIM: code optimization 2023-03-18 22:02:48 +01:00
bergware
7d00a374c9 TRIM: code optimization 2023-03-18 22:01:21 +01:00
bergware
97f49a1873 TRIM: code optimization 2023-03-18 21:53:22 +01:00
bergware
96547a76ff Revert "TRIM: code optimization"
This reverts commit a82b0d6d09.
2023-03-18 21:48:47 +01:00
bergware
a82b0d6d09 TRIM: code optimization 2023-03-18 21:47:39 +01:00
bergware
72d63b68af TRIM: code optimization 2023-03-18 21:35:42 +01:00
bergware
a016b2a3a2 TRIM: check mount state 2023-03-18 21:08:13 +01:00
bergware
c5677e4892 TRIM: improved zfs listing 2023-03-18 20:58:02 +01:00
bergware
00aa8a2b0a TRIM: improved zfs listing 2023-03-18 20:46:08 +01:00
bergware
c9fbe40b2f CSS: solve scrollbar issue in firefox 2023-03-18 19:04:50 +01:00
tom mortensen
4d836adc0d Merge pull request #1289 from bergware/master
Main: revert reiserfs info message
2023-03-18 10:06:32 -07:00
bergware
3519159234 Main: revert reiserfs info message 2023-03-18 18:02:12 +01:00
tom mortensen
66f8edc31c Merge pull request #1288 from bergware/master
TRIM enhancements
2023-03-18 08:14:00 -07:00
bergware
7aaaf36c1c Merge remote-tracking branch 'upstream/master' 2023-03-18 16:04:27 +01:00
bergware
3a8cc3981b TRIM enhancements 2023-03-18 15:55:54 +01:00
bergware
683e1ba901 TRIM enhancements 2023-03-18 15:53:01 +01:00
bergware
6b80ce8f57 TRIM enhancements 2023-03-18 15:46:51 +01:00
tom mortensen
6f7dccae39 Merge pull request #1287 from bergware/master
Docker / VM: fix listing of table
2023-03-18 07:39:24 -07:00
bergware
71d8011ffa TRIM schedule: improved operation 2023-03-18 14:48:23 +01:00
bergware
5da32c59bd TRIM: improved ZFS trim reporting 2023-03-18 13:20:31 +01:00
bergware
b4f9f695a0 TRIM: improved ZFS trim reporting 2023-03-18 11:49:29 +01:00
bergware
eca5da9cb4 VM: fix listing of vms 2023-03-18 11:05:26 +01:00
bergware
27d68ed733 VM: fix listing of vms 2023-03-18 11:01:51 +01:00
bergware
e098e83de4 Docker: fix listing of containers 2023-03-18 11:00:20 +01:00
tom mortensen
251625ca44 Merge pull request #1286 from bergware/master
Add scheduled trimming of ZFS pools
2023-03-17 15:22:34 -07:00
bergware
2068e551f8 Add ZFS pool trim to TRIM schedule 2023-03-17 22:34:23 +01:00
bergware
298c451399 Add ZFS pool trim to TRIM schedule 2023-03-17 22:31:01 +01:00
tom mortensen
aa78b8cf19 Merge pull request #1285 from SimonFair/Fix-for-Missing-PCI-devices-
FixPCIDevice Lookup
2023-03-17 09:01:07 -07:00
tom mortensen
d0c907f94e Merge pull request #1284 from bergware/master
Miscellaneous updates
2023-03-17 09:00:25 -07:00
bergware
d336ef7c8f Main: add ReiserFS deprecation warning 2023-03-17 13:51:19 +01:00
SimonFair
b7949da22d FixPCIDevice Lookup
VM Manager page doesn't load if PCI devices are missing.
2023-03-17 12:11:22 +00:00
bergware
0cac63d65f DeviceInfo: add ZFS Clear button
Show Clear button instead of Scrub button when applicable
2023-03-17 11:27:08 +01:00
bergware
9140fe367e Dashboard: change cursor shape when moving is enabled 2023-03-17 00:50:31 +01:00
bergware
1d88759969 Dashboard: use tile title as index 2023-03-17 00:30:24 +01:00
bergware
fce2710890 Revert "Dashboard: reset tiles list when Docker/VM selection is changed"
This reverts commit 41d35df56d.
2023-03-16 23:30:42 +01:00
bergware
3a9e4aeeba PHP settings: enable view log when log file has content 2023-03-16 23:11:20 +01:00
tom mortensen
54795c0264 Merge pull request #1283 from bergware/master
Main: fix temp error when Fahrenheit is used
2023-03-16 14:22:08 -07:00
bergware
f762304ae3 Merge remote-tracking branch 'upstream/master' 2023-03-16 22:18:10 +01:00
bergware
a3611bf957 Main: fix temp error when Fahrenheit is used 2023-03-16 22:17:53 +01:00
tom mortensen
856be48bb2 Merge pull request #1282 from bergware/master
Miscellaneous updates
2023-03-16 13:55:16 -07:00
bergware
41d35df56d Dashboard: reset tiles list when Docker/VM selection is changed 2023-03-16 21:07:51 +01:00
bergware
e5376edfa2 VM: operation corrections 2023-03-16 20:39:40 +01:00
bergware
b4e6f88002 Docker operation corrections 2023-03-16 20:39:27 +01:00
bergware
243fe697b0 VM; add move indicator 2023-03-16 05:14:06 +01:00
bergware
d316c5cede Docker: add move indicator 2023-03-16 05:13:50 +01:00
bergware
45fb613c91 Dashboard: lock tile management 2023-03-16 05:13:28 +01:00
bergware
e912160100 Remove redundant header in templates 2023-03-16 03:57:05 +01:00
bergware
51687a5cd4 Remove redundant header in templates 2023-03-16 03:37:46 +01:00
bergware
fa7a4be214 Revert vnc.html 2023-03-16 03:19:39 +01:00
bergware
fa5782f5f0 PHP8 support 2023-03-16 01:51:21 +01:00
bergware
66db4e7570 Make "Lock" a page variable 2023-03-16 01:45:56 +01:00
bergware
da510b844d Revert "VM: fix template display"
This reverts commit c968c02a25.
2023-03-15 16:58:31 +01:00
bergware
d222eb6730 Revert "VM: fix template display"
This reverts commit 852d0d34a0.
2023-03-15 16:58:24 +01:00
bergware
9dd1a65d0c Revert "VM: fix template display"
This reverts commit a97f9267e1.
2023-03-15 16:58:19 +01:00
bergware
a97f9267e1 VM: fix template display 2023-03-15 16:54:32 +01:00
bergware
852d0d34a0 VM: fix template display 2023-03-15 16:27:06 +01:00
bergware
c968c02a25 VM: fix template display 2023-03-15 16:19:33 +01:00
bergware
1a22a09650 Improve display for mobile devices 2023-03-15 16:04:43 +01:00
tom mortensen
4f46206489 Merge pull request #1280 from bergware/master
Update VFIO: fix regression errors
2023-03-13 12:49:34 -07:00
bergware
ec7a536b50 Update VFIO: fix regression errors 2023-03-13 17:09:18 +01:00
bergware
7d40d5068d Update VFIO: fix regression errors 2023-03-13 16:54:09 +01:00
bergware
ba067af612 Update VFIO: fix regression errors 2023-03-13 13:26:13 +01:00
bergware
f53656c81e Update VFIO: fix regression errors
- Allow all text
- Return correct state
2023-03-13 13:23:51 +01:00
tom mortensen
d28f205058 Merge pull request #1279 from ljm42/fix-regex-diagnostics
fix regex in diagnostics
2023-03-09 10:52:24 -08:00
ljm42
5926925118 fix regex in diagnostics 2023-03-07 16:47:55 -07:00
tom mortensen
35550b8002 Merge pull request #1278 from Squidly271/patch-50
PHP8 Fixes
2023-03-05 01:04:30 -08:00
tom mortensen
3f306fd066 Merge pull request #1277 from Squidly271/patch-49
Add testparm to diagnostics
2023-03-05 01:03:14 -08:00
tom mortensen
2cfc16521c Merge pull request #1276 from bergware/master
Miscellaneous updates and fixes
2023-03-05 01:02:47 -08:00
Squidly271
7b51e00a65 Update Helpers.php 2023-03-04 13:32:26 -05:00
Squidly271
2264954040 Update Helpers.php 2023-03-04 13:29:00 -05:00
Squidly271
c5aec39ae8 Support Notepad versions before Windows 11 2023-03-04 12:05:40 -05:00
Squidly271
2fbbc79d46 Support new UD reserved mount point of /mnt/addons 2023-03-03 14:30:14 -05:00
Squidly271
c693196c2e PHP8 Fixes 2023-03-03 13:19:33 -05:00
Squidly271
be0d8c313e Update diagnostics 2023-03-02 09:22:53 -05:00
Squidly271
191d66662b UD improvements 2023-03-02 09:20:41 -05:00
Squidly271
85587ca38c spaces 2023-03-02 08:25:42 -05:00
Squidly271
5879d36273 Add testparm to diagnostics 2023-03-02 08:24:45 -05:00
bergware
fc867bb3b0 PHP8 support 2023-02-28 21:21:19 +01:00
bergware
8eaae085fa DeviceInfo: fix status reporting 2023-02-28 21:08:45 +01:00
bergware
b1c5962740 DEviceInfo : ZFS add resilver update progress 2023-02-28 20:52:36 +01:00
bergware
5d1d62df41 DEviceInfo : ZFS add resilver update progress 2023-02-28 20:47:57 +01:00
bergware
2b3c799392 DEviceInfo : ZFS add resilver update progress 2023-02-28 20:46:24 +01:00
bergware
c930ddc5db DEviceInfo : ZFS add resilver update progress 2023-02-28 20:43:09 +01:00
bergware
fc1b65ced8 DEviceInfo : ZFS add resilver update progress 2023-02-28 20:35:30 +01:00
bergware
c65c957e17 Fix indicator position in context menu 2023-02-28 20:12:16 +01:00
bergware
6834df5561 Fix indicator position in context menu 2023-02-28 20:07:48 +01:00
bergware
5d09fdb9e0 Main: fix regression error 2023-02-28 19:33:22 +01:00
bergware
06db41ddbf Docker: use latest API 2023-02-28 18:27:17 +01:00
bergware
0595daf803 Fix indicator position in context menu 2023-02-28 16:20:18 +01:00
bergware
9c3a68c5f9 Fix indicator position in context menu 2023-02-28 15:43:27 +01:00
bergware
414b678659 PHP8 support 2023-02-27 19:12:04 +01:00
bergware
4de35c63e9 PHP8 support 2023-02-27 18:26:55 +01:00
bergware
16eb6789f1 Code formatting 2023-02-27 18:22:09 +01:00
bergware
d7ee9ed919 PHP8 support 2023-02-27 17:34:07 +01:00
bergware
e582a9b214 Code formatting 2023-02-27 16:59:48 +01:00
bergware
b32e88b512 PHP8 support 2023-02-27 16:59:31 +01:00
bergware
cf11cdd196 Code forrmatting 2023-02-27 16:40:19 +01:00
bergware
025491a274 PHP8 support 2023-02-27 16:32:12 +01:00
bergware
af2a838cd1 PHP8 support 2023-02-27 16:01:12 +01:00
bergware
b0636c363b PHP8 support 2023-02-27 15:47:24 +01:00
bergware
e8a7fe4671 PHP8 support 2023-02-27 15:39:01 +01:00
bergware
203b8ae900 PHP8 support 2023-02-27 15:05:43 +01:00
bergware
a3ce19d703 PHP8 support 2023-02-27 14:29:36 +01:00
bergware
64008d7d5c PHP8 support 2023-02-27 12:46:17 +01:00
bergware
b668930402 PHP8 support 2023-02-27 12:28:51 +01:00
bergware
2b1166cfb3 PHP8 support 2023-02-27 12:16:07 +01:00
bergware
9096d156a0 PHP8 support 2023-02-27 12:09:20 +01:00
bergware
ba78296ab9 PHP8 support 2023-02-27 11:17:14 +01:00
bergware
a21c544bac PHP8 support 2023-02-27 05:50:00 +01:00
bergware
f25ab3827b PHP8 support 2023-02-27 05:47:22 +01:00
bergware
0ce11576d6 PHP8 support 2023-02-27 04:53:05 +01:00
bergware
e0c7945dff Diagnostics: fix regression 2023-02-27 04:10:19 +01:00
bergware
644b369930 PHP8 support 2023-02-27 03:35:33 +01:00
bergware
041d1b5953 PHP8 support 2023-02-27 03:06:28 +01:00
bergware
1a328adff7 PHP8 support 2023-02-27 02:08:27 +01:00
bergware
45d3e3b939 PHP8 support 2023-02-26 23:27:06 +01:00
bergware
4524a3db27 PHP8 support 2023-02-26 21:44:56 +01:00
SimonFair
97869e66a6 Merge remote-tracking branch 'upstream/master' into Add-Clone-VM-option- 2023-02-26 15:14:48 +00:00
bergware
d9e60e02c2 PHP8 support 2023-02-26 15:51:12 +01:00
bergware
4c2697b229 PHP8 support 2023-02-26 15:39:13 +01:00
bergware
0cc92ad3e8 Rename "get_var" to "_var" 2023-02-26 15:39:03 +01:00
SimonFair
3d3544e5c6 Initial Commit. 2023-02-26 14:14:03 +00:00
bergware
19f6d969a2 PHP8 support 2023-02-26 14:25:32 +01:00
bergware
6c861ac850 PHP8 support 2023-02-26 14:11:30 +01:00
bergware
313e7df2a1 DeviceInfo: PHP8 support 2023-02-26 13:28:39 +01:00
bergware
3a828a0a47 Added generic get_var function for PHP8 support 2023-02-26 13:23:36 +01:00
bergware
65fb9bff4b DeviceInfo: fix flashing screen when zfs scrub is active 2023-02-26 13:22:46 +01:00
tom mortensen
adb01f3979 Merge pull request #1275 from ljm42/fix-validate-file-upload
Validate File Upload
2023-02-24 13:37:05 -08:00
tom mortensen
e082c8225d Merge pull request #1273 from bergware/master
Dashboard: show ZFS indicator based on arcstats presence
2023-02-24 13:35:51 -08:00
bergware
8c1523d069 PHP8 support 2023-02-24 19:46:00 +01:00
bergware
e682525652 PHP8 support 2023-02-24 19:42:05 +01:00
ljm42
efad26394d Validate File Upload 2023-02-24 11:37:03 -07:00
bergware
1219f1b89a Minor code optimization 2023-02-22 22:54:27 +01:00
bergware
0aae528551 Dashboard: show ZFS indicator based on arcstats presence 2023-02-22 22:54:09 +01:00
tom mortensen
a614d8dc48 Merge pull request #1272 from bergware/master
Dashboard: add ZFS memory usage
2023-02-22 09:18:22 -08:00
bergware
6f94f25b81 Array Management: remove ERROR in message part
Make the message more readable
2023-02-22 14:32:18 +01:00
bergware
9369551edd Revised New Permissions
Select either disks or shares (not both)
2023-02-22 12:01:30 +01:00
bergware
58d507cf4e Merge remote-tracking branch 'upstream/master' 2023-02-21 19:58:02 +01:00
bergware
b675b368ee Dashboard: add ZFS memory usage 2023-02-21 19:49:23 +01:00
tom mortensen
d3bab29bbb Merge pull request #1271 from bergware/master
Main: hide browse icon when disk is not mounted
2023-02-21 10:27:51 -08:00
bergware
d4423b2bea Diagnostics: add additional btrfs and zfs info 2023-02-21 17:49:49 +01:00
bergware
509bc3a690 PHP8 support 2023-02-21 12:26:44 +01:00
bergware
46cc6d70c8 Main: hide browse icon when disk is not mounted 2023-02-21 11:42:52 +01:00
tom mortensen
cc2fbe02a9 Merge pull request #1268 from studycwq/master
Add notification agent for Bark
2023-02-20 10:42:26 -08:00
tom mortensen
b572c527b0 Merge pull request #1267 from Squidly271/patch-47
PHP8 Fix
2023-02-20 10:40:52 -08:00
tom mortensen
3c7224f3ab Merge pull request #1270 from Squidly271/patch-48
PHP 8 fixes
2023-02-20 10:40:29 -08:00
tom mortensen
3ddaa33bd4 Merge pull request #1269 from bergware/master
Notifications: fixes and enhancements
2023-02-20 10:40:04 -08:00
Squidly271
50ac6aafae PHP 8 fixes 2023-02-20 08:49:07 -05:00
bergware
5d080d8836 Revert "SMB: check both netBIOS and WSD"
This reverts commit 8e6ba07f3b.
2023-02-20 00:40:52 +01:00
bergware
8e6ba07f3b SMB: check both netBIOS and WSD 2023-02-19 20:06:21 +01:00
bergware
04098b6395 Dashboard: fix styling 2023-02-19 16:22:46 +01:00
bergware
88f1b3986c Dashboard: minor code optimization 2023-02-19 11:14:41 +01:00
bergware
3f7316c609 PHP8 support 2023-02-18 20:30:50 +01:00
bergware
9ae8d2daa5 Dashboard: fix styling 2023-02-18 18:22:20 +01:00
bergware
6eab88423e Notifications: fixes and enhancements 2023-02-18 17:22:33 +01:00
bergware
1144a655d4 Notifications: fixes and enhancements 2023-02-18 17:21:05 +01:00
bergware
a129fcab6c Notifications: fixes and enhancements 2023-02-18 17:18:02 +01:00
bergware
e39d0c57c8 Notifications: fixes and enhancements 2023-02-18 17:13:03 +01:00
bergware
be2dbed1ca Notifications: fixes and enhancements 2023-02-18 17:06:19 +01:00
bergware
5c55043daa Notifications: fixes and enhancements 2023-02-18 16:47:49 +01:00
bergware
282355b403 Notifications: fixes and enhancements 2023-02-18 16:42:33 +01:00
bergware
08a33bbb7b Notifications: fixes and enhancements 2023-02-18 15:35:15 +01:00
bergware
7af9b92b63 Notifications: fixes and enhancements 2023-02-18 14:49:31 +01:00
bergware
56c2cb340e Notifications: fixes and enhancements 2023-02-18 14:19:02 +01:00
bergware
0068527313 Notifications: fixes and enhancements 2023-02-18 14:03:03 +01:00
bergware
f14af88fa7 Notifications: fixes and enhancements 2023-02-18 13:54:02 +01:00
bergware
d4c24312ef Notifications: fixes and enhancements 2023-02-18 13:44:56 +01:00
bergware
27cf32f845 Notifications: fixes and enhancements 2023-02-18 12:20:47 +01:00
Will Chen
151186ad36 Add notification agent for Bark 2023-02-18 08:35:26 +08:00
Will Chen
dba2c745dd Add notification agent for Bark 2023-02-18 08:29:18 +08:00
Squidly271
94097ff20d PHP8 Fix 2023-02-17 13:22:14 -05:00
tom mortensen
c2b334d3a9 Merge pull request #1266 from ljm42/fix-diagnostics
diagnostics: PHP 8 fixes
2023-02-16 16:48:49 -08:00
tom mortensen
39a4ab3be8 Merge pull request #1265 from bergware/master
Miscellaneous updates and fixes
2023-02-16 16:48:28 -08:00
ljm42
6b2f3620e2 diagnostics: PHP 8 fixes 2023-02-16 12:26:47 -07:00
bergware
59719d78af PHP8 support 2023-02-16 20:18:15 +01:00
bergware
5409975ad1 Docker: fix ipvlan / macvlan display 2023-02-16 20:12:00 +01:00
bergware
ccb4f99a59 Revert "Docker: set "folder" as default image type for new installs"
This reverts commit 68afc31cfe.
2023-02-16 20:07:23 +01:00
bergware
756dac2f1d Fix: reading of SMART attributes sometimes not done 2023-02-16 19:22:04 +01:00
bergware
7b663e9097 Fix: reading of SMART attributes sometimes not done 2023-02-16 17:01:23 +01:00
bergware
ffd9379b76 Main: allow Move operation when parity operation is paused 2023-02-16 15:50:27 +01:00
bergware
d141173d81 Docker: fix regression error which caused docker page to hang 2023-02-16 15:02:35 +01:00
bergware
68afc31cfe Docker: set "folder" as default image type for new installs 2023-02-16 12:33:11 +01:00
bergware
c611ce6b3b Notifications: add filter to archive 2023-02-16 11:01:07 +01:00
bergware
3721cbc2b0 DeviceInfo: Fix scrub misplacement when array stopped
A simple empty line insertion to get Markdown working okay
2023-02-16 09:32:44 +01:00
Tom Mortensen
018465420a fix bug which produced erroneous password not being set status 2023-02-15 23:57:38 -08:00
Tom Mortensen
221fdadc96 btrfs raid0 and raid1 profiles require min 2 devices 2023-02-15 23:56:32 -08:00
tom mortensen
741fc7ac91 Merge pull request #1263 from bergware/master
PHP8 support
2023-02-14 14:47:55 -08:00
bergware
7cb0852364 Merge remote-tracking branch 'upstream/master' 2023-02-14 22:46:29 +01:00
bergware
80dd6e76b5 PHP8 support 2023-02-14 22:31:56 +01:00
tom mortensen
2193085c91 Merge pull request #1261 from bergware/master
Add Scrub operation to ZFS pool
2023-02-14 13:30:00 -08:00
tom mortensen
61f845e774 Merge pull request #1262 from Squidly271/patch-47
Fix plugins not able to check for updates to themselves
2023-02-14 13:29:31 -08:00
Squidly271
aa7f175fe6 Fix plugins not able to check for updates to themselves 2023-02-14 15:36:54 -05:00
bergware
c40fdf4659 Monitor: fix running btrfs activities 2023-02-14 16:24:14 +01:00
bergware
a47a4d3b00 Notification window: right-aligned pointer 2023-02-14 15:53:38 +01:00
bergware
a821630490 Notification window: right-aligned pointer 2023-02-14 15:47:31 +01:00
bergware
0f36b0f002 OpenTerminal: delay window opening 2023-02-14 13:26:42 +01:00
bergware
240e88ff0d Make zfs_scrub excutable 2023-02-14 12:59:21 +01:00
bergware
eed470429b Add Scrub operation to ZFS pool 2023-02-14 12:57:12 +01:00
tom mortensen
4f309cee75 Merge pull request #1260 from bergware/master
Notifications: single icon only
2023-02-13 22:26:14 -08:00
bergware
83d1d73de6 OpenTerminal: add delay before opening window
Allow socket to be ready (bad gateway)
2023-02-14 01:27:20 +01:00
bergware
b5da373511 Notifications: single icon only
- Menu items without messages are disabled
2023-02-14 01:09:41 +01:00
tom mortensen
cfbdb3bd35 Merge pull request #1259 from bergware/master
Black/White themes: fix header underlining
2023-02-13 12:12:12 -08:00
bergware
a3330d32f1 Notifications: more refinements 2023-02-13 20:24:42 +01:00
bergware
ecde1633ba Notifications: fix "target" area 2023-02-13 20:06:20 +01:00
bergware
725a40b6ed .nav-user.show : add underline when hovering 2023-02-13 18:57:00 +01:00
bergware
4cc1657b13 Black/White themes: fix header underlining 2023-02-13 18:49:53 +01:00
tom mortensen
a9e5acd1f5 Merge pull request #1258 from bergware/master
Notifications: new look
2023-02-13 09:21:07 -08:00
bergware
a59026b82a PHP8 support 2023-02-13 16:32:20 +01:00
bergware
92ccc97bdf PHP8 support 2023-02-13 16:26:20 +01:00
bergware
ba4f16e9b9 Notifications: add panel indicators 2023-02-13 10:07:46 +01:00
bergware
c19615dac1 Fix openAlert function 2023-02-13 01:24:53 +01:00
bergware
f18cb11061 Notifications: add panel indicators 2023-02-13 01:04:46 +01:00
bergware
171b4d937e PHP8 support 2023-02-12 14:38:41 +01:00
bergware
9a4aa73fa5 Context: fix submenu not displayed 2023-02-12 14:17:13 +01:00
bergware
d5a1cade5d Notifications: use a single nav item 2023-02-12 14:16:50 +01:00
bergware
9946309f61 Notifications: add number of messages 2023-02-11 14:04:32 +01:00
bergware
ca5ab7e5e5 Notifications: refinement
- Restore Detailed / Summarized view
- Show messages in groups of 10
- Support hyperlink in messages
2023-02-11 13:38:09 +01:00
bergware
479aae8d9a Notifications: new look 2023-02-11 11:26:51 +01:00
tom mortensen
61925e9b68 Merge pull request #1257 from bergware/master
Miscellaneous updates
2023-02-10 14:57:35 -08:00
bergware
3f64a96bf3 Dashboard: fix division by zero 2023-02-10 22:58:38 +01:00
bergware
0d8283275f DeviceInfo: minor code update 2023-02-10 22:11:23 +01:00
bergware
b60fb3dc14 DeviceList: add FS type in offline state 2023-02-10 21:59:31 +01:00
bergware
f66f313d15 DeviceList: fix incorrect fstype 2023-02-10 21:13:28 +01:00
bergware
00dfc19c97 Security update 2023-02-10 20:28:27 +01:00
bergware
abd8968d44 Merge remote-tracking branch 'upstream/master' 2023-02-10 20:15:09 +01:00
bergware
6121ce7b27 Notify: address security concerns 2023-02-10 20:14:16 +01:00
tom mortensen
2a8fde7916 Merge pull request #1256 from bergware/master
Add space between paragraphs in openChanges
2023-02-10 10:52:40 -08:00
bergware
64a9d11d87 Main: show none present disks in ZFS pool 2023-02-10 19:43:12 +01:00
bergware
190ee05b34 Add space between paragraphs in openChanges 2023-02-10 18:44:04 +01:00
tom mortensen
b913508e0f Merge pull request #1255 from bergware/master
Docker: filetree corrections
2023-02-10 09:33:10 -08:00
bergware
389024d75e Notifications: revised operation
Add security
2023-02-10 16:52:50 +01:00
bergware
87baaee543 Notifications: revised operation
- Autoclose new notifications after 3 seconds
- Fix notifications reappearing after closure
- Show notification counters permanently
2023-02-10 16:46:07 +01:00
bergware
9fbd892952 Fixed: Dashboard: show heat alarm per pool 2023-02-10 14:37:26 +01:00
bergware
70b99711a0 Put flash warning after name 2023-02-10 14:21:42 +01:00
bergware
fdd528b100 Docker: filetree corrections 2023-02-10 13:52:59 +01:00
tom mortensen
93cb54841a Merge pull request #1254 from bergware/master
PHP8 support
2023-02-08 10:01:13 -08:00
bergware
b01a7d9516 PHP8 support 2023-02-08 15:00:27 +01:00
tom mortensen
d163dc30f9 Merge pull request #1253 from bergware/master
Miscellaneous updates
2023-02-07 13:30:23 -08:00
bergware
5521165543 Check pool state on ERROR condition
All other states are considered valid
2023-02-07 21:21:07 +01:00
bergware
3d13dda271 Minor code reformat 2023-02-07 20:58:24 +01:00
bergware
579d02dbe3 DeviceInfo: disable buttons when erase operation is running 2023-02-07 20:45:38 +01:00
bergware
6dcdafaff4 DeviceInfo: fix regression error in enabling/disabling zfs/btrfs options 2023-02-07 19:57:09 +01:00
bergware
72bb601334 Added Pool state check before starting array
First implementation
2023-02-07 11:43:04 +01:00
bergware
0975b1e891 Updated copyright date 2023-02-07 10:56:57 +01:00
bergware
909e073831 Update jquery to v3.6.3 2023-02-07 10:52:25 +01:00
bergware
c977c3bcfe PHP8 support 2023-02-07 09:01:49 +01:00
bergware
7c979914f3 PHP8 support 2023-02-07 00:52:52 +01:00
bergware
007ffaefbe PHP8 support 2023-02-07 00:46:32 +01:00
bergware
f200255f1a DeviceInfo: fix JS error 2023-02-07 00:40:32 +01:00
bergware
bdf04ee8a3 DeviceInfo: Confirm by typing pool name
+ Show error message when confirmation is wrong
2023-02-07 00:13:30 +01:00
tom mortensen
86fc8f8503 Merge pull request #1252 from ljm42/fix-php8-a
PHP 8
2023-02-06 12:21:07 -08:00
tom mortensen
4cd0313138 Merge pull request #1251 from bergware/master
System info: minor change
2023-02-06 12:20:55 -08:00
ljm42
1b585d4311 PHP 8 2023-02-05 14:21:41 -07:00
bergware
7ebb5f23ff PHP settings: undo page refresh 2023-02-05 21:05:34 +01:00
bergware
10d32057a8 PHP settings: add LOG size display 2023-02-05 20:50:11 +01:00
bergware
69021884a6 PHP settings: refresh page upon reload 2023-02-05 20:42:57 +01:00
bergware
c38989e5c9 PHP settings: refresh page upon reload 2023-02-05 20:39:20 +01:00
bergware
9205f45d18 PHP settings: add LOG size display 2023-02-05 20:33:08 +01:00
bergware
66c41e2302 System info: minor change 2023-02-05 09:49:24 +01:00
tom mortensen
dbbc08d260 Merge pull request #1249 from SimonFair/Spice-mouse-fix-with-copy-paste
Fix for Spice Mouse if Copy paste enabled.
2023-02-04 15:56:20 -08:00
tom mortensen
5e768ed4c8 Merge pull request #1250 from bergware/master
PHP8 support
2023-02-04 15:55:56 -08:00
bergware
1137781d85 PHP8 support 2023-02-04 21:56:10 +01:00
bergware
d4b3d273c9 PHP8 support 2023-02-04 19:11:11 +01:00
bergware
e3c69ae80c PHP8 support 2023-02-04 17:10:53 +01:00
bergware
b60b3ffa4b PHP8 support 2023-02-04 14:52:45 +01:00
bergware
84195f0457 System info: memory enhancement 2023-02-04 13:55:53 +01:00
bergware
6ba5698779 System info: cache enhancement 2023-02-04 13:47:16 +01:00
bergware
b1068f6614 Remove legacy file 2023-02-04 12:11:34 +01:00
bergware
ff3b0bdb73 PHP8 support 2023-02-04 10:32:14 +01:00
SimonFair
511a2093be Fix for Spice Mouse if Copy paste enabled. 2023-02-04 09:22:28 +00:00
tom mortensen
18c4049572 Merge pull request #1248 from bergware/master
PHP settings: add option to show errors on screen
2023-02-03 22:53:00 -08:00
bergware
ae827fcb9a Merge remote-tracking branch 'upstream/master' 2023-02-04 01:56:38 +01:00
bergware
16e4777dc5 PHP settings: add option to show errors on screen 2023-02-04 01:39:46 +01:00
tom mortensen
8fb6944f0c Merge pull request #1215 from Commifreak/master
[plugin] Include the actual command, being executed
2023-02-03 15:00:13 -08:00
tom mortensen
08cf264669 Merge pull request #1224 from iarp/readmore-js-disable-option
feat(docker): option to disable readmore-js on container table
2023-02-03 14:08:09 -08:00
tom mortensen
9c794b13ea Merge pull request #1247 from djerfy/fix/dockerclient-indent
fix(docker): update header indent
2023-02-03 14:07:12 -08:00
tom mortensen
5fc2e15f62 Merge pull request #1246 from bergware/master
PHP8 support
2023-02-03 14:05:27 -08:00
bergware
87015a03f0 System info: fix reading inactive ports 2023-02-03 22:31:05 +01:00
bergware
37982bc09a System info: fix port listing 2023-02-03 22:23:15 +01:00
bergware
b29083f485 PHP8 support 2023-02-03 21:49:07 +01:00
Jeremy Chabernaud
ade217d819 Fix indent in DockerClient 2023-02-03 13:48:55 +01:00
bergware
c8733a62f8 DeviceInfo: translation correction 2023-02-03 10:46:20 +01:00
bergware
8ab901b2c1 DeviceInfo: translation correction 2023-02-03 10:43:16 +01:00
bergware
3f90b203af PHP8 support 2023-02-03 10:30:43 +01:00
tom mortensen
7824a78172 Merge pull request #1244 from bergware/master
Added Compression & Autotrim to pools
2023-02-02 19:13:30 -08:00
bergware
3c3c5e0783 Download: fix file deletion 2023-02-03 03:59:05 +01:00
bergware
0986288904 PHP8 support 2023-02-03 03:43:10 +01:00
bergware
ec8699a7ca PHP8 support 2023-02-03 02:39:10 +01:00
bergware
aee5ded94c Add conditional session_start to login & set password 2023-02-03 01:20:56 +01:00
bergware
4b796ca844 Add conditional session_start to login & set password 2023-02-03 01:10:04 +01:00
bergware
e5d684eb8c OpenTerminal: fix process closure when window is closed 2023-02-03 00:59:56 +01:00
bergware
ff45777f27 PHP settings: enable/disable CLEAR button based on log file presence 2023-02-03 00:21:53 +01:00
bergware
1ebd8d617b PHP8 support 2023-02-03 00:15:36 +01:00
bergware
518ff76c0c PHP settings: enable/disable CLEAR button based on log file presence 2023-02-02 20:20:17 +01:00
bergware
6954400764 Plugins API: address security issues 2023-02-02 19:08:46 +01:00
bergware
c8325c1988 PHP8 support 2023-02-02 18:40:04 +01:00
bergware
47bba3df56 PHP8 support 2023-02-02 18:33:58 +01:00
bergware
125939c2cb Display settings: fix translation 2023-02-02 18:16:44 +01:00
bergware
25846190b8 PHP8 support 2023-02-02 18:10:51 +01:00
bergware
9550ee7637 Added Compression & Autotrim to pools
Updated code to show new fields instantly
2023-02-02 17:29:29 +01:00
dlandon
fce6a5aa52 Merge remote-tracking branch 'upstream/master' 2023-02-02 07:28:12 -06:00
bergware
f2a10f335c Merge remote-tracking branch 'upstream/master' 2023-02-02 12:19:06 +01:00
Tom Mortensen
5b97a7e5fe Merge branch 'master' of github.com:limetech/webgui 2023-01-31 16:47:26 -08:00
Tom Mortensen
71e417374d Autotrim and Compressing settings 2023-01-31 10:42:21 -08:00
Tom Mortensen
ba690ff22f PHP8 support 2023-01-31 10:41:23 -08:00
tom mortensen
1e5872e328 Merge pull request #1243 from ljm42/fix-php8
fix php8 warnings
2023-01-31 10:40:09 -08:00
tom mortensen
f6ee47323f Merge pull request #1242 from ich777/patch-1
overhaul from third party plugins diagnostics and additions
2023-01-31 10:39:43 -08:00
ljm42
002a251b64 fix php8 warnings 2023-01-30 16:49:23 -07:00
bdf9623060 overhaul from third party plugins diagnostics
- created BEGIN and END comment for third party plugins
- added LXC thridparty plugin to diagnostics
- added iSCSI-Target thridparty plugin to diagnostics
- added iSCSI-Initiator thridparty plugin to diagnostics
2023-01-30 17:10:19 +01:00
bergware
53056eff52 Revert "Docker: update header for file retrieval"
This reverts commit 77b86bf8b0.
2023-01-24 20:09:54 +01:00
bergware
77b86bf8b0 Docker: update header for file retrieval
Solves the "unavailable" message which sometimes appears after checking for updates
2023-01-24 19:50:41 +01:00
Tom Mortensen
cd687b3294 Accept images in OCI format. 2023-01-24 10:02:12 -08:00
tom mortensen
f1f59c899e Merge pull request #1238 from bergware/master
PHP8 support
2023-01-20 10:46:51 -08:00
tom mortensen
f9c18f3eac Merge pull request #1237 from ljm42/sync-myservers
Sync with My Servers plugin
2023-01-20 10:44:54 -08:00
bergware
b5254df26e PHP8 support 2023-01-20 14:22:20 +01:00
bergware
6ee5ea35fc PHP8 support 2023-01-20 11:14:13 +01:00
bergware
f9ff77617c PHP8 support 2023-01-20 10:11:16 +01:00
bergware
8f17ab709f PHP8 support 2023-01-19 20:28:26 +01:00
bergware
c49ff0e70f PHP8 support 2023-01-19 19:48:24 +01:00
bergware
7a16ce37fc PHP8 support 2023-01-19 19:26:59 +01:00
bergware
a22deb97b3 PHP8 support 2023-01-19 18:44:17 +01:00
bergware
7acab50303 PHP8 support 2023-01-19 18:38:32 +01:00
bergware
9703382a57 Revert "PHP8 support"
This reverts commit c6d361ae5b.
2023-01-19 16:25:58 +01:00
bergware
c6d361ae5b PHP8 support 2023-01-19 16:25:12 +01:00
bergware
82bf6fba48 PHP8 support 2023-01-19 16:17:03 +01:00
bergware
9fbb03fa17 PHP8 support 2023-01-19 15:56:05 +01:00
bergware
dca9df45b6 PHP8 support 2023-01-19 15:54:23 +01:00
bergware
527dc1d922 PHP8 support 2023-01-19 15:47:39 +01:00
bergware
6d46b5e696 PHP8 support 2023-01-19 11:40:05 +01:00
bergware
5c8721bd25 Dashboard: fix user write/read counters 2023-01-19 10:57:54 +01:00
bergware
5c271b5ac5 Dashboard: fix user write/read counters 2023-01-19 10:56:03 +01:00
bergware
500c849914 Dashboard: added icons 2023-01-19 10:39:41 +01:00
bergware
8b0041caa8 Minor code optimization 2023-01-19 09:35:19 +01:00
bergware
a2d6847e1a PHP8 support 2023-01-19 09:31:42 +01:00
bergware
7da69ea2b4 Update helptext.txt 2023-01-18 23:35:37 +01:00
bergware
1654d6f448 Update copyright to 2023 2023-01-18 23:12:59 +01:00
bergware
4489ae4aeb PHP8 support 2023-01-18 22:37:00 +01:00
bergware
17884cf47d PHP8 support 2023-01-18 22:31:16 +01:00
ljm42
8e0b91f9c5 Sync with My Servers plugin
* avoid extract
* resolve PHP 8 issues
2023-01-18 13:15:33 -07:00
tom mortensen
a448975187 Merge pull request #1236 from bergware/master
Miscellaneous fixes
2023-01-18 10:40:05 -08:00
bergware
93721ce1d5 Dashboard: style update 2023-01-18 19:03:46 +01:00
bergware
d687c72089 PHP8 support 2023-01-18 18:53:59 +01:00
bergware
d7120887be Miscellaneous fixes 2023-01-18 18:49:57 +01:00
Tom Mortensen
3f08b99c98 PHP8 support 2023-01-18 08:59:24 -08:00
tom mortensen
eeeef0bb0d Merge pull request #1235 from bergware/master
Miscellaneous Updates
2023-01-18 08:50:34 -08:00
bergware
73f13a0090 PHP8 support 2023-01-18 17:34:26 +01:00
bergware
100103d3cd Dashboard: style adjustment 2023-01-18 17:00:36 +01:00
bergware
cae0bbde87 Dashboard: add more icons 2023-01-18 16:38:45 +01:00
bergware
383318a19c Dashboard: add more icons 2023-01-18 16:31:11 +01:00
bergware
0a82bcb4e1 Tools: new function -> PHP Settings 2023-01-18 15:41:11 +01:00
bergware
58970ee91e PHP8 support 2023-01-18 14:17:07 +01:00
bergware
994ebfd770 PHP8 support 2023-01-18 13:52:55 +01:00
bergware
3137240ed2 PHP8 support 2023-01-18 13:45:37 +01:00
bergware
3e5a299d06 PHP8 support 2023-01-18 13:43:10 +01:00
bergware
86267b601e PHP8 support 2023-01-18 13:40:53 +01:00
bergware
4e59208735 PHP8 support 2023-01-18 13:18:12 +01:00
bergware
2a19f0ca41 PHP8 support 2023-01-18 13:09:57 +01:00
bergware
cf143a1eaf PHP8 support 2023-01-18 12:47:56 +01:00
bergware
b6e005e609 PHP8 support 2023-01-18 12:41:57 +01:00
bergware
1f7ae0b486 PHP8 support 2023-01-18 12:29:26 +01:00
bergware
4d7adabf30 PHP8 support 2023-01-18 12:28:00 +01:00
bergware
60bd91a6f6 PHP8 support 2023-01-18 12:25:38 +01:00
bergware
1d8f988027 PHP8 support 2023-01-18 12:20:01 +01:00
bergware
c01283d10c PHP8 support 2023-01-18 12:18:28 +01:00
bergware
58fd44bd5d PHP8 support 2023-01-18 12:14:22 +01:00
bergware
dec8373802 PHP8 support 2023-01-18 12:04:12 +01:00
bergware
853b35c15c PHP8 support 2023-01-18 11:46:29 +01:00
bergware
c268c095b6 PHP8 support 2023-01-18 11:40:36 +01:00
bergware
2a6b26e706 PHP8 support 2023-01-18 11:35:59 +01:00
bergware
4bd019233e PHP8 support 2023-01-18 11:30:20 +01:00
bergware
7d23e04a79 PHP8 support 2023-01-18 11:24:32 +01:00
bergware
962680583e PHP8 support 2023-01-18 11:20:21 +01:00
bergware
4bd304a3aa Tools: new function -> PHP Settings 2023-01-18 09:32:04 +01:00
bergware
8d55922f05 Tools: new function -> PHP Settings 2023-01-18 09:27:21 +01:00
bergware
38944bb338 Tools: new function -> PHP Settings 2023-01-18 09:01:06 +01:00
bergware
8bc4f62757 PHP8 support 2023-01-18 00:54:18 +01:00
bergware
ab65850211 Vars: remove phpinfo(), moved to PHP settings 2023-01-18 00:43:42 +01:00
bergware
910f3950a4 Update copyright 2023-01-18 00:42:19 +01:00
bergware
58eb528d6b Update copyright 2023-01-18 00:39:02 +01:00
bergware
d0a4d9c4c6 PHP8 support 2023-01-18 00:37:30 +01:00
bergware
9fa6d6d9a1 PHP8 support 2023-01-18 00:34:12 +01:00
bergware
d5ab168c0f PHP8 support 2023-01-18 00:30:35 +01:00
bergware
6afb008196 PHP8 support 2023-01-18 00:17:51 +01:00
bergware
47d3c4a541 Tools: new function -> PHP Settings 2023-01-17 23:12:48 +01:00
bergware
8467415434 Tools: new function -> PHP Settings 2023-01-17 23:06:44 +01:00
bergware
4587b8dc9b Tools: new function -> PHP Settings 2023-01-17 22:56:00 +01:00
bergware
193bf84eff Tools: new function -> PHP Settings 2023-01-17 22:23:44 +01:00
bergware
7651c1f62b Tools: new function -> PHP Settings 2023-01-17 22:11:42 +01:00
bergware
1ef7b916ee PHP8 support 2023-01-17 21:58:41 +01:00
bergware
351037c038 PHP8 support 2023-01-17 21:48:59 +01:00
bergware
8c506efffc Tools: new function -> PHP Settings 2023-01-17 21:45:47 +01:00
bergware
3bdce050aa Revert "PHP8 support"
This reverts commit ce5c42d01d.
2023-01-17 21:38:44 +01:00
bergware
70b2d92b26 Tools: new function -> PHP Settings
CSS update
2023-01-17 21:35:04 +01:00
bergware
cdebb4f2ad Tools: new function -> PHP Settings
Updated CSS code
2023-01-17 21:12:09 +01:00
bergware
6b218a0ed4 Tools: new function -> PHP Settings
Updated CSS code
2023-01-17 21:09:55 +01:00
bergware
e12825f358 PHP8 support 2023-01-17 20:18:32 +01:00
bergware
30ce139ceb Tools: new function -> PHP Settings 2023-01-17 20:14:13 +01:00
bergware
ce5c42d01d PHP8 support 2023-01-17 19:27:43 +01:00
bergware
dca73c9398 Tools: new function -> PHP Settings
- View PHP info
- Configure error reporting
- Open LOG to see errors in real-time
2023-01-17 18:54:45 +01:00
bergware
4aa10c0caa PHP8 support 2023-01-17 14:10:57 +01:00
bergware
f71f73d034 VMs: added lock/unlock for sortable items 2023-01-17 09:54:33 +01:00
tom mortensen
7dbf6597ea Merge pull request #1234 from ljm42/fix-php8-translations
fix: PHP8 bug in Translations.php
2023-01-16 16:13:12 -08:00
tom mortensen
d786dfa1dc Merge pull request #1233 from bergware/master
PHP8 support
2023-01-16 16:12:54 -08:00
bergware
5e4f022a8d Dashboard: example template -> add Unraid version condition 2023-01-15 12:22:52 +01:00
ljm42
85d3e76b8f fix: PHP8 bug in Translations.php 2023-01-13 17:31:42 -07:00
bergware
262cf2d947 Update fixDescriptions 2023-01-13 23:12:56 +01:00
tom mortensen
eedfd7d828 Merge pull request #1232 from SimonFair/Allow-NIC-to-be-added-if-removed-
Fix for missing NIC option
2023-01-13 12:47:13 -08:00
tom mortensen
99eec5bcd9 Merge pull request #1231 from bergware/master
PHP8 support - round 4
2023-01-13 12:45:49 -08:00
SimonFair
75fbfd7f01 Fix for missing NIC option 2023-01-12 18:06:45 +00:00
bergware
d7d760e757 PHP8 support round 4 2023-01-10 09:55:25 +01:00
bergware
7a88525652 Revert "Limit ZFS option to pool devices only"
This reverts commit e200431d27.
2023-01-10 09:37:29 +01:00
bergware
e200431d27 Limit ZFS option to pool devices only
ZFS not available (yet) for the array
2023-01-09 12:25:58 +01:00
tom mortensen
5609f8af8a Merge pull request #1229 from bergware/master
Main: hide browse icon when array is offline
2023-01-08 16:23:11 -08:00
bergware
17d9db9d65 Main: hide browse icon when array is offline 2023-01-09 01:15:32 +01:00
tom mortensen
207aafafec Merge pull request #1228 from bergware/master
Show browse icon only for first member in a pool
2023-01-08 16:05:44 -08:00
bergware
a045786383 Show browse icon only for first member in a pool 2023-01-09 00:57:14 +01:00
tom mortensen
35fed1e37b Merge pull request #1227 from bergware/master
GUI: fix menu z-index
2023-01-08 15:25:35 -08:00
bergware
e4cae5e058 GUI: fix menu z-index 2023-01-09 00:22:01 +01:00
tom mortensen
468b679280 Merge pull request #1226 from bergware/master
Dashboard: make items moveable between columns
2023-01-08 14:21:56 -08:00
bergware
acacaad1e6 Changed ID to CLASS for elements occurring more than once 2023-01-08 20:38:46 +01:00
bergware
c0d447d898 DeviceInfo: fix typo 2023-01-08 20:31:02 +01:00
bergware
2deef1fd9c DeviceInfo: fix regression error 2023-01-08 19:32:13 +01:00
bergware
fb1a76fe4a Changed ID to CLASS for elements occurring more than once 2023-01-08 19:13:53 +01:00
bergware
d3b9d9dd1e VMs: fix translation omission 2023-01-08 19:13:33 +01:00
bergware
e8642cae5a update meta viewport for mobile devices 2023-01-08 16:25:43 +01:00
bergware
50c1f0b00b Minor style correction 2023-01-08 14:54:44 +01:00
bergware
7bbed94ae0 Users: fix regression error 2023-01-08 14:11:43 +01:00
bergware
eca2ca6571 Users: add icon to title bar 2023-01-08 14:07:34 +01:00
bergware
bbd4282728 Changed ID to CLASS for elements occurring more than once 2023-01-08 12:58:59 +01:00
bergware
0e727235c7 Changed ID to CLASS for elements occurring more than once 2023-01-08 12:46:58 +01:00
bergware
5333fa5194 VMs: fix translation omission 2023-01-08 12:39:31 +01:00
bergware
66d382c86b Dashboard and Docker: introduce lock button for sortable items
By default sortable  items are locked, which allows mobile devices to scroll the page.
Upon request items can be made sortable
2023-01-08 01:05:29 +01:00
bergware
d6c12b1fd0 Changed ID to CLASS for elements occurring more than once 2023-01-07 21:59:42 +01:00
bergware
ef4f01070b WG: fix regression errors of last PHP8 support update 2023-01-07 21:47:10 +01:00
bergware
09ec1b06f6 Changed ID to CLASS for elements occurring more than once 2023-01-07 21:32:49 +01:00
bergware
2d76cb8c42 Make header in white and black themes scrollable 2023-01-07 21:07:16 +01:00
bergware
826e574aec Dashboard: make items moveable between columns 2023-01-07 20:55:42 +01:00
bergware
579a06bf47 Make header in white and black themes scrollable
When more items are present than screen space, the user can now scroll through them (previously these items were invisible)
2023-01-07 20:55:29 +01:00
bergware
d361550c0a Changed ID to CLASS for elements occurring more than once 2023-01-07 20:53:31 +01:00
bergware
d6d879660a Updated copyright 2023 2023-01-07 20:51:12 +01:00
bergware
9613cae09e Add jqueryUI touch punch for mobile devices 2023-01-07 01:43:13 +01:00
bergware
ed5101c47c PHP8 support - round 3 2023-01-07 00:57:30 +01:00
bergware
99a2658871 Dashboard: make items moveable between columns 2023-01-07 00:49:27 +01:00
bergware
42a94237e9 Main: move view action to the left side 2023-01-06 13:38:06 +01:00
bergware
ecc61f565a Dashboard: fix processor view control 2023-01-06 13:28:32 +01:00
bergware
7198d7f4f2 PHP8 support - round 3 2023-01-05 20:43:11 +01:00
bergware
f6a5671b80 Merge remote-tracking branch 'upstream/master' 2023-01-05 20:39:35 +01:00
Tom Mortensen
f13db4dda1 initial zfs pool support 2023-01-05 08:58:58 -08:00
Tom Mortensen
c00a52b6b1 wiregaurd page corrections for php8 2023-01-05 08:58:32 -08:00
Tom Mortensen
888afe99bd pool names must begin with a letter to be zfs compatible 2023-01-05 08:57:41 -08:00
Tom Mortensen
efc1d969b2 get rid of call to 'clearhistory' 2023-01-05 08:56:31 -08:00
bergware
0cab5bf3e2 Dashboard: make items moveable between columns 2023-01-05 13:35:39 +01:00
bergware
f1ace5a90d PHP8 support - round 3 2023-01-05 12:28:43 +01:00
bergware
f7cb0e3996 PHP8 support - round 3 2023-01-05 12:06:57 +01:00
bergware
69bc96ba36 Docker: PHP8 support 2023-01-05 11:06:39 +01:00
bergware
655d1a7f86 Revert "Fix Wireguard PHP8 issues"
This reverts commit da11da462d.
2023-01-05 10:00:12 +01:00
bergware
6f178efc31 css code cleanup 2023-01-05 00:16:25 +01:00
bergware
1a0b9ac21e Dashboard: header rearrangements 2023-01-05 00:01:30 +01:00
bergware
2255a6a452 Dashboard: VPN header rearrangement 2023-01-04 23:47:28 +01:00
bergware
98f5644bc9 Dashboard: rearrange memory info 2023-01-04 23:25:08 +01:00
bergware
cf8274b2bc Dashboard: rearrange memory info 2023-01-04 23:21:29 +01:00
bergware
3dadda5abb Dashboard: rearrange memory info 2023-01-04 22:49:29 +01:00
bergware
03fdcfc75c Dashboard: rearrange UPS info 2023-01-04 22:32:13 +01:00
bergware
1f07d9855d Dashboard: make items moveable between columns 2023-01-04 22:12:38 +01:00
bergware
b10707f04c Dashboard: make items moveable between columns 2023-01-04 22:04:51 +01:00
bergware
b31ea284ea Dashboard: make items moveable between columns 2023-01-04 21:55:00 +01:00
bergware
b84eee7301 Dashboard: make items moveable between columns 2023-01-04 21:48:57 +01:00
bergware
29154af55b Dashboard: add custom tile example file
This file is for reference only and not used by the GUI
2023-01-03 21:33:23 +01:00
bergware
f5c760a8d3 Dashboard: rearrange processor information 2023-01-03 21:21:48 +01:00
bergware
01fef8c527 Dashboard: make items moveable between columns 2023-01-03 19:20:44 +01:00
bergware
a8c55e2cde Dashboard: make items moveable between columns 2023-01-03 19:00:31 +01:00
bergware
13d593c317 Dashboard: make items moveable between columns 2023-01-03 18:39:21 +01:00
bergware
7137c84572 Dashboard: make items moveable between columns 2023-01-03 18:11:50 +01:00
bergware
3292a76806 Dashboard: API for adding custom tiles 2023-01-03 16:42:11 +01:00
bergware
aaf89c5a77 Revert "Dashboard: added custom addition of tiles"
This reverts commit ef6ed4ccdc.
2023-01-03 15:19:42 +01:00
bergware
ef6ed4ccdc Dashboard: added custom addition of tiles
This is an API for plugin authors to add their own tiles
Example of usage will be given separately
2023-01-03 14:28:12 +01:00
bergware
efa8449e80 Dashboard: make items moveable between columns 2023-01-03 13:11:30 +01:00
bergware
ab9a2684fe Keep dismissed banners hidden for a month 2023-01-03 12:25:26 +01:00
bergware
da11da462d Fix Wireguard PHP8 issues 2023-01-03 12:00:53 +01:00
bergware
e9bd58b3b7 Dashboard: make items moveable between columns
This PR also introduces a system to completely hide items and a content manager function to unhide them
2023-01-02 22:13:58 +01:00
iarp
9e22cbe9f3 Clarify help text, add DOCKER_READMORE to default.cfg 2023-01-01 14:40:40 -05:00
tom mortensen
f3523bf1fa Merge pull request #1225 from bergware/master
Miscellaneous fixes
2022-12-30 14:04:15 -08:00
tom mortensen
ec9704c701 Merge pull request #1223 from SimonFair/VM-PHP8-additional-fixes
Add support for rtl8139 network model.
2022-12-30 13:58:34 -08:00
bergware
d5bd7f92a9 VMs: fix lockup when no VMs are present 2022-12-30 21:49:11 +01:00
bergware
6c2c6f74b0 Move "view" icon on Main and Shares page to the left 2022-12-30 14:47:30 +01:00
bergware
bdc7f08833 PHP 8.1 support (round 2) 2022-12-30 14:00:42 +01:00
bergware
6ce9bc9de3 Docker: honor user setting of stop time-out 2022-12-30 13:20:07 +01:00
bergware
2967e30bba PHP 8.1 support 2022-12-30 12:43:12 +01:00
bergware
dc7768b17f Dashboard: fix regression error in "select case"
This error prevents the selection of another case
2022-12-29 14:11:19 +01:00
iarp
918068b08c Update helptext.txt
Incorrect Yes/No used in help text.
2022-12-27 18:49:59 -05:00
iarp
b5418e306c feat(docker): option to disable readmore-js on container table
This PR adds a user configurable option to disable readmore-js usage on the docker container table.
2022-12-27 18:41:40 -05:00
SimonFair
fc29b58dea Add support for rtl8139 network model. 2022-12-27 19:37:24 +00:00
tom mortensen
fca4753f24 Merge pull request #1222 from ljm42/fix-eth0-ip-required
Disable Provision/Renew/Upgrade buttons when no IP on eth0
2022-12-23 14:12:02 -08:00
ljm42
a00bb9f848 Disable Provision/Renew/Upgrade buttons when no IP on eth0 2022-12-21 14:29:06 -07:00
Tom Mortensen
f548bfd91c Merge branch 'master' of github.com:limetech/webgui 2022-12-21 10:49:09 -08:00
tom mortensen
508b9f6787 Merge pull request #1221 from SimonFair/VM-PHP8-additional-fixes
Additional VM Manager PHP fixes
2022-12-21 10:48:48 -08:00
tom mortensen
cbbc40b890 Merge pull request #1220 from limetech/fix/php8_fixes_and_sync
Fix/php8 fixes and sync
2022-12-21 10:48:19 -08:00
tom mortensen
d0c16ff45c Merge pull request #1219 from SimonFair/MemoryBacking-processing
Update Memory Backup processing for Virtiofs.
2022-12-21 10:47:50 -08:00
Tom Mortensen
4cabcae043 fix: cannot include PHP short codes within Markdown-style URL definitions 2022-12-21 10:46:13 -08:00
SimonFair
03061e26f4 Update VMMachines.page 2022-12-20 12:41:32 +00:00
SimonFair
7ed6864efb Additional VM Manager PHP fixes
<?#$color = strpos($msg, "rror:")!==false ? 'red-text':'green-text'?> Still need to find a fix for this, but remarked out to get it working for now.
2022-12-19 17:22:14 +00:00
Eric Schultz
72ed67487a sync changes from My Servers plugin 2022-12-19 10:14:57 -07:00
Eric Schultz
ef5997906c additional php8 fixes 2022-12-19 10:14:18 -07:00
SimonFair
10b0a7b02b Merge remote-tracking branch 'upstream/master' into MemoryBacking-processing 2022-12-18 12:12:01 +00:00
SimonFair
d23e731ec6 Update Memory Backup processing forVirtiofs. 2022-12-18 12:03:35 +00:00
tom mortensen
7b3d9294a6 Merge pull request #1218 from limetech/fix/php8_warnings
fix a few php8 warnings
2022-12-14 21:47:22 -08:00
Eric Schultz
a06e7ab885 fix a few php8 warnings 2022-12-14 15:20:56 -07:00
tom mortensen
92a4158f2a Merge pull request #1217 from SimonFair/Virtual-console-enable-copy-paste
Enable copy paste option for virtual consoles
2022-12-12 10:03:25 -08:00
tom mortensen
a5329592b5 Merge pull request #1211 from SimonFair/VM-Manager-PHP-8-fixes
Fix for bus text.
2022-12-12 10:00:55 -08:00
SimonFair
b662cea439 Enable cope paste option for virtual consoles
If you enable copy paste you need to install additional software on the client in addition to the QEMU agent if that has been installed. https://www.spice-space.org/download.html is the location for spice-vdagent for both window and linux. Note copy paste function will not work with web spice viewer you need to use virt-viewer.
2022-12-11 11:18:16 +00:00
dlandon
64cb13e599 Merge remote-tracking branch 'upstream/master' 2022-12-08 17:23:37 -06:00
tom mortensen
ae6a2ccc47 Merge pull request #1216 from ich777/patch-2
Update CreateDocker.php
2022-12-07 09:31:06 -08:00
2cd4b01f7c Update CreateDocker.php
- changed `Docker Hub URL` to `Registry URL` because of GHCR and other new container registries becoming more and more popular.
2022-12-06 07:37:56 +01:00
tom mortensen
6e6f262bb4 Merge pull request #1213 from bergware/master
PHP 8.1 support (round 1)
2022-12-05 09:39:55 -08:00
Robin Kluth
2ac42577f7 [plugin] Include the actual command, being executed 2022-12-04 18:58:30 +01:00
bergware
353be46d06 PHP 8.1 support (round 1) 2022-12-04 15:48:17 +01:00
bergware
fef7ae7cb2 Merge remote-tracking branch 'upstream/master' 2022-12-04 15:38:24 +01:00
bergware
5f9af816a2 PHP 8.1 support (round 1) 2022-12-04 15:16:16 +01:00
tom mortensen
9f4373ace5 Merge pull request #1212 from bergware/master
PHP 8.1 support (round 1)
2022-12-04 06:02:14 -08:00
bergware
ca34b9d327 PHP 8.1 support (round 1) 2022-12-04 13:00:12 +01:00
bergware
97716f718f PHP 8.1 support (round 1) 2022-12-04 12:40:53 +01:00
bergware
bbe9f8ffb8 Merge remote-tracking branch 'upstream/master' 2022-12-03 21:13:26 +01:00
SimonFair
55258e7570 Fix for bus text. 2022-12-03 15:40:42 +00:00
tom mortensen
4b01e4cff7 Merge pull request #1210 from SimonFair/VM-Manager-PHP-8-fixes
Initial Fix PHP 8
2022-12-03 07:17:50 -08:00
SimonFair
34b7f64cfb Initial Fix
Create __construct() function.
Fix typo for macs should be $macs
Fix logfile size
Remove Bus, working on fix.
2022-12-03 14:45:47 +00:00
Tom Mortensen
97a1f5e4f0 Update Markdown to v2.0.0 and other misc. changes to support PHP v8 2022-12-02 12:14:14 -08:00
tom mortensen
362e9fd657 Merge pull request #1208 from SimonFair/Spice-fix-and-update-
Spice Bug fix for users with non standard GUI ports defined.
2022-11-28 09:54:41 -08:00
tom mortensen
221dbd387a Merge pull request #1207 from SimonFair/vdisk-serials
Add Serial option to vdisk
2022-11-28 09:53:16 -08:00
SimonFair
8b7f6b3b89 Fix help text. 2022-11-27 15:49:16 +00:00
SimonFair
7349bd6314 Bug fix for users with non standard GUI ports defined.
Change title to say VM name on host: x.x.x.x
2022-11-25 19:34:39 +00:00
SimonFair
63ad115195 Remove get_disk_stats_old function. 2022-11-25 18:25:00 +00:00
SimonFair
2f2d3931e2 Set serial to vdisk+index on create. 2022-11-25 15:32:16 +00:00
SimonFair
06df20c29a Add Serial option to vdisk 2022-11-25 07:15:38 +00:00
bergware
42bb3ea28a Merge remote-tracking branch 'upstream/master' 2022-11-21 10:07:27 +01:00
Tom Mortensen
677ff2b024 DockerSettings: ipvlan should come before macvlan in selection list 2022-11-20 13:07:34 -08:00
bergware
a30a4c287d Revert "Docker: fix MACVLAN /IPVLAN selection"
This reverts commit f90f5398cb.
2022-11-20 18:55:04 +01:00
bergware
f90f5398cb Docker: fix MACVLAN /IPVLAN selection 2022-11-20 18:39:03 +01:00
tom mortensen
d59a33d049 Merge pull request #1204 from ich777/patch-1
revert change
2022-11-19 15:51:26 -08:00
dlandon
9b2e9eba60 Revert "Fix default problem and cannot select macvlan."
This reverts commit fb152ce9fd.
2022-11-19 17:46:00 -06:00
dlandon
fb152ce9fd Fix default problem and cannot select macvlan. 2022-11-19 15:02:25 -06:00
5d0ca70418 revert change
This change will not only affect new installations, this will also affect existing installations but only if one changes something in the Docker settings and if the line DOCKER_NETWORK_TYPE isn't found in the docker.cfg.
It would be better to change the docker.cfg file which is shipped with Unraid in the zip file (append the line DOCKER_NETWORK_TYPE="1") but this is something that @limetech has to change.
2022-11-19 09:20:58 +01:00
tom mortensen
37ca4fb23d Merge pull request #1203 from bergware/master
disk_load: initialize array values upon first start
2022-11-18 09:11:47 -08:00
bergware
67057acbc5 disk_load: initialize array values upon first start 2022-11-18 16:59:14 +01:00
bergware
873673ac62 Merge remote-tracking branch 'upstream/master' 2022-11-18 16:56:33 +01:00
bergware
45ffae59df disk_load: initialize array values upon first start 2022-11-18 16:56:02 +01:00
tom mortensen
d5c04bc619 Merge pull request #1193 from ljm42/feat-ssl-messaging
feature: improved messaging for SSL
2022-11-17 13:40:26 -08:00
ljm42
24862767b8 feature: improved messaging for SSL 2022-11-17 14:32:55 -07:00
tom mortensen
eeb8708277 Merge pull request #1202 from SimonFair/VMManger-update-to-use-libvirt_domain_interface_addresses()
Change to use API
2022-11-17 11:33:26 -08:00
SimonFair
f17bf4b791 Change to use API
Change to use libvirt_domain_interface_addresses which has been available for a long time but was not documented in the API manual. Using this function stops tainted warnings being written to the log.

Domain id=4 is tainted: custom-ga-command will no longer be seen in the log.
2022-11-16 18:16:19 +00:00
tom mortensen
44a926fe34 Merge pull request #1201 from bergware/master
Miscellaneous updates
2022-11-15 11:47:57 -08:00
tom mortensen
b3e63f5505 Merge pull request #1200 from SimonFair/Rename-VM-fix-and-add-Clone-VM-option-
Fix for VM Rename.
2022-11-15 11:38:31 -08:00
bergware
cfc4680213 Diagnostics minor code optimization 2022-11-15 19:26:40 +01:00
bergware
239a64edde Set IPVLAN as default for new installations 2022-11-15 19:26:20 +01:00
tom mortensen
c23c0f00e8 Merge pull request #1199 from bergware/master
Miscellaneous fixes
2022-11-14 09:52:48 -08:00
SimonFair
a9a213ab7a Fix for VM Rename, 2022-11-13 20:48:24 +00:00
bergware
57b50330e8 Revert "Allow multiple rows in NFS rule"
This reverts commit 4e25bc8cb1.
2022-11-13 21:14:18 +01:00
bergware
cfdab68a01 Fix shares information in Diagnostics 2022-11-13 13:09:58 +01:00
bergware
f0db94f545 Parity History: add day of the week to date 2022-11-13 12:28:14 +01:00
bergware
57ed6a4902 Fix shares information in Diagnostics 2022-11-13 11:38:50 +01:00
bergware
1dab549cad Fix shares information in Diagnostics 2022-11-13 11:25:41 +01:00
bergware
1c4c4bbde5 Fix: do not allow creation of hidden share names 2022-11-13 10:41:13 +01:00
bergware
1cd06da408 Fix: do not allow creation of hidden share names 2022-11-13 10:38:42 +01:00
bergware
4e25bc8cb1 Allow multiple rows in NFS rule 2022-11-13 10:10:25 +01:00
bergware
17029e70a5 Fix shares information in Diagnostics 2022-11-13 09:57:20 +01:00
bergware
e885af3dfd Fix shares information in Diagnostics 2022-11-13 09:45:39 +01:00
bergware
f7041422d7 Fix shares information in Diagnostics 2022-11-13 09:32:26 +01:00
bergware
6cdac47aad Fix shares information in Diagnostics 2022-11-13 09:25:37 +01:00
bergware
c7588a6e13 Fix shares information in Diagnostics 2022-11-13 09:17:49 +01:00
bergware
3c143900fe Fix shares information in Diagnostics 2022-11-13 09:03:43 +01:00
bergware
e1225cb9c9 Fix shares information in Diagnostics 2022-11-13 08:58:11 +01:00
bergware
318b3057c8 Fix shares information in Diagnostics 2022-11-13 08:39:28 +01:00
bergware
cfd8e81835 Fix shares information in Diagnostics 2022-11-13 01:31:02 +01:00
bergware
54d094111b Revert "NFS security rule: change input to textarea, which allows more input"
This reverts commit d6b67b44aa.
2022-11-12 23:42:36 +01:00
bergware
164dbf4e03 Fix shares information in Diagnostics 2022-11-12 23:01:06 +01:00
bergware
91e871e1f8 Merge remote-tracking branch 'upstream/master' 2022-11-12 18:00:50 +01:00
bergware
d6b67b44aa NFS security rule: change input to textarea, which allows more input 2022-11-12 17:06:18 +01:00
tom mortensen
35af0b4f62 Merge pull request #1198 from SimonFair/Allow-PCI-Ethernet-Boot-Order
Allow Network PCI devices to have boot order.
2022-11-12 07:53:36 -08:00
tom mortensen
03f63b2c9a Merge pull request #1197 from bergware/master
Fix: "please wait" message after removing orphan image
2022-11-12 07:51:41 -08:00
bergware
aafe17fcc6 Fix list of running nhcan processes 2022-11-12 15:42:24 +01:00
bergware
78cd9e8733 Merge remote-tracking branch 'upstream/master' 2022-11-12 14:15:01 +01:00
bergware
2bfcb4fdec Minor code optimization 2022-11-12 12:24:48 +01:00
SimonFair
984b64da51 Allow Network PCI devices to have boot order. 2022-11-12 11:20:48 +00:00
bergware
4a48e0c012 Fix: only add "confirm-leave" when form has it specified 2022-11-12 12:17:31 +01:00
bergware
31eedd7dbe Fix: plugin download "done" when finished 2022-11-12 10:19:44 +01:00
bergware
62dda9c06a Fix: "please wait" message after removing orphan image 2022-11-12 09:50:21 +01:00
tom mortensen
56a6d08cde Merge pull request #1196 from bergware/master
Fix base64 encoding for UTF-8 strings
2022-11-10 15:05:17 -08:00
bergware
4310c347de Merge remote-tracking branch 'upstream/master' 2022-11-10 23:45:31 +01:00
bergware
608f9c0a6b Fix base64 encoding for UTF-8 strings 2022-11-10 23:02:11 +01:00
bergware
53b5d2b9db Undo the LUKS change 2022-11-10 22:10:21 +01:00
bergware
024a13c4cf Fix base64 encoding for UTF-8 strings 2022-11-10 21:57:37 +01:00
Tom Mortensen
e01a277bf6 remove 'x' bit from windows11.png file 2022-11-10 10:46:14 -08:00
tom mortensen
1004cff77b Merge pull request #1195 from bergware/master
Fixes issue that sometimes information window opens empty
2022-11-08 13:54:57 -08:00
tom mortensen
3312e3723c Merge pull request #1194 from SimonFair/Remove-boot-orders-if-usb-boot-selected-
Add Nic boot order
2022-11-08 13:54:28 -08:00
bergware
84ac2e5a7f Merge remote-tracking branch 'upstream/master' 2022-11-08 22:17:50 +01:00
bergware
7207cb07ec Replace nchan communication for post request
Informational functions which call "openChanges" are now processed using post requests, this solves the issue that sometimes an empty window is displayed.
2022-11-08 22:15:15 +01:00
SimonFair
f2f43c6d61 Add Nic boot order 2022-11-08 20:45:44 +00:00
ljm42
b47a43a5cb feature: improved messaging for SSL 2022-11-07 15:58:42 -07:00
tom mortensen
a81cc19d72 Merge pull request #1192 from SimonFair/Remove-boot-orders-if-usb-boot-selected-
Set correct values when edit for USBBoot and correct Share Selection.
2022-11-06 11:32:22 -08:00
SimonFair
a51508ea17 Change Share selection to map to values and not manual. 2022-11-05 12:48:25 +00:00
Tom Mortensen
1b66da4edd Make plugin file .plg extension check for local plugins too. 2022-11-04 14:06:48 -07:00
SimonFair
2e11b30d98 Set correct values when edit for USBBoot
Still need to add PCI type check.
2022-11-04 17:15:56 +00:00
Tom Mortensen
cbd4cf017a Add wording to UPC and Registration page that indicates that while 1GB minimum
flash size is required, min 4GB is recommended.
2022-11-03 09:58:49 -07:00
tom mortensen
390cf7a133 Merge pull request #1191 from dlandon/master
Fix default on initial install; preserve error on first plugin wget; show pool not defined when share pool is not a defined pool.
2022-11-03 09:56:20 -07:00
dlandon
a6c2bc201a Check that share pool is a defined pool. 2022-11-03 09:20:14 -05:00
dlandon
bb019e1c79 Don't overwrite the error from the first try. 2022-11-03 08:32:02 -05:00
dlandon
3f84e6a6f3 Fix default on initial install. 2022-11-03 07:07:53 -05:00
tom mortensen
d0958f79c8 Merge pull request #1190 from SimonFair/Remove-boot-orders-if-usb-boot-selected-
Add Boot Order field clear if USB Boot selected.
2022-11-02 07:23:42 -07:00
tom mortensen
eeac82adca Merge pull request #1189 from dlandon/master
Redo my failed attempt at defaulting to non-correcting parity check.
2022-11-02 06:58:59 -07:00
SimonFair
9c2809bcb2 Disable input if set to USB Boot Yes 2022-11-02 12:35:18 +00:00
SimonFair
cfe2d8f6a6 Add Boot Order field clear if USB Boot selected. 2022-11-02 08:22:35 +00:00
dlandon
b9ada5f6dc Redo my failed attempt at defaulting to non-correcting parity check. 2022-11-01 20:37:24 -05:00
tom mortensen
c950e9fe06 Merge pull request #1188 from zackspear/master
refactor(upc): v1.8.0 start trial
2022-10-31 16:14:48 -07:00
tom mortensen
9d4006c164 Merge pull request #1187 from dlandon/master
Change download scheme to try only one retry with cdn URL.
2022-10-31 16:14:05 -07:00
dlandon
5f155ecbe7 Change download scheme to try with only one retry with cdn URL. 2022-10-31 15:12:34 -05:00
dlandon
12bdd5c0af Revert "Additional help to clarify docker network setup."
This reverts commit 29b0ceb327.
2022-10-31 15:04:40 -05:00
dlandon
29b0ceb327 Additional help to clarify docker network setup. 2022-10-31 15:03:44 -05:00
Zack Spear
7a2b1e40b4 refactor(upc): v1.8.0 start trial 2022-10-31 09:40:47 -10:00
tom mortensen
2316e554dc Merge pull request #1185 from SimonFair/Additional-boot-options-
Add boot order for USB and USB Boot option
2022-10-31 10:52:44 -07:00
tom mortensen
bb5ee27cc5 Merge pull request #1184 from dlandon/master
Change to be sure legacy 'write' setting in dynamix.cfg  is respected.
2022-10-31 10:51:20 -07:00
tom mortensen
db69f94310 Merge pull request #1186 from Squidly271/patch-46
Docker: Fix display aberration on orphan images
2022-10-31 10:43:11 -07:00
tom mortensen
536c940fcf Merge pull request #1181 from SimonFair/Fix-Vm-GUI-HyperV-option
Update HyperV Option changes.
2022-10-31 10:40:15 -07:00
Squidly271
97a6259041 Docker: Fix display aberration on orphan images 2022-10-30 16:45:13 -04:00
SimonFair
c1775e571a Add boot order for USB and USBBoption
Add boot order field to USB devices
Add OS boot setting for USB Boot.
2022-10-30 15:43:11 +00:00
SimonFair
dc1fc2e760 Add support to dashboard for start with console 2022-10-29 15:04:31 +01:00
dlandon
20e36c590c Change to be sure legacy 'write' setting in dynamix.cfg is respected. 2022-10-29 06:43:23 -05:00
SimonFair
594f711c74 Fix conflict. 2022-10-29 11:49:26 +01:00
SimonFair
e75a0790c4 Merge remote-tracking branch 'upstream/master' into Fix-Vm-GUI-HyperV-option 2022-10-29 11:48:54 +01:00
SimonFair
826dcd0a89 Revert "Resolve Conflict"
This reverts commit 05d19e3a26.
2022-10-29 11:45:51 +01:00
SimonFair
05d19e3a26 Resolve Conflict 2022-10-29 11:42:35 +01:00
SimonFair
24e9149a03 Add start option with console 2022-10-29 11:37:24 +01:00
tom mortensen
f397a0317d Merge pull request #1183 from dlandon/master
Adjust the wget parameters to keep it from indefinitely hanging.
2022-10-28 14:00:06 -07:00
dlandon
68daff656b Adjust the wget parameters to keep it from indefinitely hanging; set IPv4 as the preferred protocol. 2022-10-28 14:33:33 -05:00
tom mortensen
d416c0b012 Merge pull request #1180 from SimonFair/VM-Template-Fixes
Fix changing from passthru to custom CPU.
2022-10-28 09:37:22 -07:00
tom mortensen
32cd06078c Merge pull request #1182 from dlandon/master
Add Help to Docker Custom Network settings.
2022-10-28 09:35:43 -07:00
dlandon
bccd4ee9f8 Add help to Custom Network settings. 2022-10-28 09:02:44 -05:00
SimonFair
3c668e5b7d Code tidy 2022-10-28 14:24:31 +01:00
SimonFair
6dace82c6c Update HyperV Option changes. 2022-10-28 14:07:09 +01:00
dlandon
118b71b7c8 Remove unnecessary post_hook() call. 2022-10-28 06:34:00 -05:00
SimonFair
9132a26063 Fix changing from passthru to custom CPU. 2022-10-28 11:04:29 +01:00
tom mortensen
4fe93fbefa Merge pull request #1179 from dlandon/master
Change messages to indicate the disk parameters are not available, plugin changes for 'cdn' URL, add more post_hook calls to plugin, and verify manual file entered is a .plg file.
2022-10-27 16:06:54 -07:00
tom mortensen
f31dfba64f Merge pull request #1178 from SimonFair/Template-Update-Hotplug-Fix
Template update hotplug fix and Guest Agent Test
2022-10-27 15:57:18 -07:00
dlandon
82b39ae655 Manual plugin install - ensure plugin name ends in .plg. 2022-10-27 15:26:37 -05:00
dlandon
80eb761973 Retry download when cdn fails; add post_hook to all done(1); 2022-10-27 07:55:48 -05:00
dlandon
72307b2599 Change messages to indicate the disk parameters are not available when spun down, rather that sounding like there is a failure to read them. 2022-10-26 16:21:10 -05:00
SimonFair
f7d3b31048 Code tidy. 2022-10-26 20:55:39 +01:00
SimonFair
ed25310da9 Test for guest agent
Test for guest agent to suppress error message in libvirt log.
Show text for guest not running or guest agent is not installed.
2022-10-26 20:14:40 +01:00
SimonFair
0b4bf38522 Fix Hotplug within Templates.
Change hotplug to remove #remove from usb vendor/product.
2022-10-26 20:12:44 +01:00
tom mortensen
91ddc523fd Merge pull request #1177 from dlandon/master
Fix post hook failing when plugin download fails; default scheduled parity check to non correcting.
2022-10-26 10:12:35 -07:00
dlandon
15f197e4d3 Replace tab with spaces. 2022-10-25 22:42:05 -05:00
dlandon
020d648d57 Add pre_hook. 2022-10-25 22:37:26 -05:00
dlandon
2954c57b7a Default scheduled parity check to non correcting. 2022-10-25 17:21:50 -05:00
dlandon
222bc51375 Add post hook when download fails. 2022-10-25 15:31:04 -05:00
dlandon
d766948eac Fix post hook failing when plugin download fails. 2022-10-25 14:26:11 -05:00
tom mortensen
c92bea271d Merge pull request #1176 from dlandon/master
Update DashStats.page
2022-10-25 10:51:23 -07:00
dlandon
d113e8cbbf Update DashStats.page 2022-10-24 20:00:20 -05:00
tom mortensen
257480793a Merge pull request #1174 from ljm42/fix-wireguard
WireGuard: fix typo setting up routes
2022-10-20 14:56:45 -07:00
ljm42
e7fdd35bbc WireGuard: fix typo setting up routes 2022-10-19 10:49:14 -07:00
tom mortensen
c57a9f0667 Merge pull request #1173 from SimonFair/Shares-Selection
Change fields to disable
2022-10-17 16:41:43 -07:00
SimonFair
118b04b98e Change fields to disable 2022-10-17 23:02:22 +01:00
tom mortensen
c0afc28022 Merge pull request #1172 from SimonFair/CD-Hotplug-Bug-Fix-and-Boot-order-for-NVME-PCI-Passthru
Clarify help text.
2022-10-17 09:37:54 -07:00
SimonFair
8d85c81bee Fix text 2022-10-17 12:49:14 +01:00
SimonFair
2fa73d4d26 Clarify help text. 2022-10-16 16:49:30 +01:00
tom mortensen
137c734d04 Merge pull request #1171 from SimonFair/Shares-Selection
Add Unraid Share Mapping.
2022-10-16 08:35:26 -07:00
tom mortensen
763cac735e Merge pull request #1170 from ljm42/fix-typo
Fix typo
2022-10-16 08:34:34 -07:00
tom mortensen
27bdffe047 Merge pull request #1169 from zackspear/master
fix(upc): v1.7.6 plg install status check
2022-10-16 08:34:16 -07:00
tom mortensen
a5326c08f4 Merge pull request #1168 from SimonFair/CD-Hotplug-Bug-Fix-and-Boot-order-for-NVME-PCI-Passthru
CD Hotplug bug fix and boot order for nvme pci passthru
2022-10-16 08:11:52 -07:00
SimonFair
6ff9e38de1 Add Unraid Share Mapping. 2022-10-14 19:56:17 +01:00
ljm42
c42f11482c Fix typo
See https://www.wireguard.com/trademark-policy/
2022-10-13 22:23:09 -07:00
Zack Spear
2d3c0077a4 fix(upc): v1.7.6 plg install status check 2022-10-13 16:14:52 -07:00
SimonFair
1149f94385 Template updates 2022-10-12 18:35:36 +01:00
SimonFair
4fd4386cf0 Add boot order for NVME PCI devices type 0108
Add boot order for NVME PCI
2022-10-11 17:23:47 +01:00
SimonFair
9a3dd7aab9 CD Hotplug fixes
Root path set correctly to media path
VMs with space in name.
2022-10-11 17:22:45 +01:00
tom mortensen
c2a499c782 Merge pull request #1167 from zackspear/master
fix(upc): my servers plg url
2022-10-06 10:33:24 -07:00
Zack Spear
47cf9cb8a9 fix(upc): my servers plg url 2022-10-04 17:46:13 -07:00
tom mortensen
b723b713ad Merge pull request #1166 from bergware/master
SWAL: intercept "esc" button to stop nchan upon window closing
2022-10-02 08:05:06 -07:00
bergware
2339b5c7eb nchan: delayed command execution
This prevents an empty popup window in certain browsers and devices
2022-10-01 01:29:07 +02:00
bergware
6e69c88cad SWAL: intercept "esc" button to stop nchan upon window closing 2022-09-30 23:40:38 +02:00
Tom Mortensen
f758a3680b Merge branch 'master' of github.com:limetech/webgui 2022-09-29 12:56:30 -07:00
tom mortensen
d196c027aa Merge pull request #1165 from bergware/master
WireGuard: add explicit interface name in routing
2022-09-29 12:55:56 -07:00
bergware
03b4d67cb9 WireGuard: add explicit interface name in routing
Users are advised to regenerate the WG configs.
2022-09-29 20:36:59 +02:00
Tom Mortensen
6318519ba6 better handling of windows-style config files 2022-09-27 12:24:47 -07:00
tom mortensen
286ea13767 Merge pull request #1148 from SimonFair/SpiceHTMLClient
Spice html client in addition to VNC
2022-09-27 12:22:24 -07:00
tom mortensen
aafbe637c5 Merge pull request #1163 from SimonFair/VirtioFS-Support
Update VM Share GUI Options
2022-09-27 12:22:03 -07:00
tom mortensen
7570610299 Merge pull request #1164 from bergware/master
Fixed: wrong feedback display on VM page
2022-09-27 12:21:46 -07:00
bergware
b7092da98f Code cleanup 2022-09-27 02:31:52 +02:00
bergware
354a8c6010 Ask user to provide diagnostics before downgrading the OS 2022-09-27 01:55:10 +02:00
bergware
d31b8fd6cb Dashboard: store graph data in file instead of cookie
This prevents the creation of too large cookies.
2022-09-27 00:49:41 +02:00
Tom Mortensen
79db839cd7 Do not strip \r chars from domain.cfg 2022-09-26 10:31:46 -07:00
SimonFair
10df2460a8 Update for Windows
Remove 9P option for Windows.
Update XML if virtiofs and Windows in addition to Linux.
2022-09-25 17:22:48 +01:00
bergware
0109471548 Added UPS message 2022-09-25 11:44:28 +02:00
bergware
9404ef789a Fixed: wrong feedback display on VM page 2022-09-25 11:38:08 +02:00
SimonFair
ce58b56c36 Update GUI Options
Include 9P and Virtiofs
Memory backing Needs to be reviewed.
2022-09-24 21:56:49 +01:00
tom mortensen
b6dadf35af Merge pull request #1162 from ich777/master
added 3rd party system diagnostics
2022-09-23 07:13:27 -07:00
bdd84ba7eb added 3rd party system diagnostics
- added diagnostics for third party plugin packages
- added diagnostics for /dev/dri devices
- added diagnostics for /dev/dvb devices
- added diagnostics for nvidia devices
2022-09-23 10:50:27 +02:00
tom mortensen
07ac74af45 Merge pull request #1161 from bergware/master
Docker: fixed javascript error when no containers exist
2022-09-19 14:27:34 -07:00
bergware
50b48df7b5 Docker: fixed javascript error when no containers exist 2022-09-19 23:23:24 +02:00
Tom Mortensen
4b1e418a1b improved 'cache busting' on woff font file urls 2022-09-19 14:11:03 -07:00
tom mortensen
017488035a Merge pull request #1160 from SimonFair/USB-StartupPolicy-and-missing-devices-
Add Missing USB support
2022-09-19 11:13:40 -07:00
tom mortensen
e4e42f9518 Merge pull request #1159 from bergware/master
UPS display enhancements and other fixes
2022-09-19 10:49:40 -07:00
bergware
8df310a2d4 Updated jQueryUI to version 1.13.2 2022-09-19 18:53:14 +02:00
SimonFair
c7f0e27847 Update Templates
Add additional help text to custom form
Update ELEC templates
2022-09-19 17:01:03 +01:00
SimonFair
a2265ef9dc Add startupPolicy to Custom.form 2022-09-19 16:39:07 +01:00
bergware
93a9701e00 UPS display enhancements 2022-09-18 12:01:22 +02:00
bergware
3759aff4d7 UPS display enhancements 2022-09-18 11:58:58 +02:00
bergware
125af2981b UPS display enhancements 2022-09-18 11:22:04 +02:00
SimonFair
bde221a534 Add Missing USB support
Add Missing USB devices on list so can be removed from VM.
Add startupPolicy fields to USB list for future updates.
2022-09-18 07:39:47 +01:00
bergware
7d2c9aa891 UPS display enhancements 2022-09-17 17:37:53 +02:00
bergware
b9e89cb7ed Fixed: text color in docker popup window sometimes wrong 2022-09-17 13:20:22 +02:00
bergware
4fdabda0fa Fixed: show read errors during Read Check 2022-09-17 13:06:25 +02:00
bergware
3b07215d1f UPS display enhancements 2022-09-17 11:53:46 +02:00
bergware
5d8f1ac2b6 UPS display enhancements 2022-09-17 11:30:07 +02:00
bergware
2a4c7dd240 UPS display enhancements 2022-09-17 11:22:45 +02:00
bergware
8b5d6775ed UPS display enhancements 2022-09-17 11:17:22 +02:00
bergware
e523c695ee UPS display enhancements 2022-09-17 11:07:02 +02:00
bergware
837a47e26b UPS display enhancements
Code optimizations
2022-09-17 11:03:17 +02:00
bergware
46a7e1c2f5 Updated jQuery to version 3.6.1 2022-09-17 10:19:13 +02:00
bergware
ca671826ea UPS display enhancements 2022-09-17 03:00:00 +02:00
bergware
be09a8e702 UPS display enhancements 2022-09-17 02:49:09 +02:00
bergware
42135c0f56 UPS display enhancements 2022-09-17 02:19:01 +02:00
bergware
937cf78122 UPS display enhancements
Added UPS model field
2022-09-17 02:14:01 +02:00
bergware
3d1e742ec8 UPS display enhancements 2022-09-17 00:55:18 +02:00
bergware
a5832ad170 UPS display enhancements 2022-09-16 23:41:41 +02:00
bergware
f37467ad92 UPS display enhancements
Minor code optimizations
2022-09-16 20:01:06 +02:00
tom mortensen
c8a1fde9f1 Merge pull request #1158 from bergware/master
UPS display enhancements
2022-09-16 09:51:00 -07:00
bergware
760f7b9395 UPS display enhancements 2022-09-16 18:15:36 +02:00
bergware
cd321c116f UPS display enhancements 2022-09-16 11:25:41 +02:00
bergware
3e9583dd6b UPS display enhancements
- Add icon for each category
- Add translation in UPS section on dashboard
- Add Output voltage / frequency value
- Add coloring depending on settings
- Normalize units
- Make updates near real-time
2022-09-16 10:17:53 +02:00
Tom Mortensen
ca94ad75a7 directly reference /etc/timezone file 2022-09-14 11:15:31 -07:00
tom mortensen
c7a2ac1bfb Merge pull request #1157 from SimonFair/Allow-update-via-template-for-boot-order
Enable Update of Boot Order in GUI Template.
2022-09-12 05:28:13 -07:00
SimonFair
09454c2c04 Fix boot order if 2+ disks added at create 2022-09-10 19:15:07 +01:00
SimonFair
cd3bdde293 Fix no cdrom boot order and update ELEC templates to set boot order = 1 2022-09-10 16:39:20 +01:00
SimonFair
f710765003 Enable Update of Boot Order in GUI Template. 2022-09-10 13:42:19 +01:00
tom mortensen
fdbd532ce0 Merge pull request #1155 from SimonFair/SAS-Selftest-Fix
Fix SAS Selftest
2022-09-09 09:49:17 -07:00
tom mortensen
282f6d9f49 Merge pull request #1156 from Squidly271/patch-45
Fix plugin multi updates
2022-09-09 09:48:38 -07:00
Squidly271
ac22ba7a2e Fix plugin multi updates
Script is only used for CA
2022-09-07 19:23:33 -04:00
SimonFair
a5027d3ff4 Add Spindown message and use -n for identity if scsi drive. 2022-09-07 22:00:40 +01:00
tom mortensen
e317c28f47 Merge pull request #1154 from bergware/master
Suppress info icon in banner message when no info is available
2022-09-06 08:55:51 -07:00
tom mortensen
aa39e4337f Merge pull request #1153 from ljm42/fix-notify-discord
fix: Discord notification agent url
2022-09-06 08:53:45 -07:00
tom mortensen
9b548dd6fc Merge pull request #1152 from dcflachs/dockerman_shell_patch
Dockerman add ability to specify shell with container label.
2022-09-06 08:51:06 -07:00
tom mortensen
aabd450748 Merge pull request #1151 from SimonFair/Add-Boot-order-to-GUI
Add boot order to GUI and CD hot plug function
2022-09-06 08:50:16 -07:00
Tom Mortensen
12ea2ec6b3 Merge CertUpload into ProvisionCert.php and direct error messages to stderr. 2022-08-28 07:30:35 -07:00
SimonFair
948cf2f54b Fix SAS Selftest
Errors

static const char * self_test_result[] = {
        "Completed                ",
        "Aborted (by user command)",
        "Aborted (device reset ?) ",
        "Unknown error, incomplete",
        "Completed, segment failed",
        "Failed in first segment  ",
        "Failed in second segment ",
        "Failed in segment",            /* special handling for result 7 */
        "Reserved(8)              ",
        "Reserved(9)              ",
        "Reserved(10)             ",
        "Reserved(11)             ",
        "Reserved(12)             ",
        "Reserved(13)             ",
        "Reserved(14)             ",
        "Self test in progress ..."
}
2022-08-25 19:42:48 +01:00
SimonFair
3fc757f9a5 Change Icon 2022-08-25 17:47:11 +01:00
bergware
160443c8d7 Suppress info icon in banner message when no info is available 2022-08-25 00:08:05 +02:00
ljm42
245a04e3e6 fix: Discord notification agent url
Discord will not allow links with bare hostname, links must have both hostname and tld or no link at all
2022-08-23 16:01:49 -07:00
SimonFair
b3fe8659fe VM Manager updates
Add option to eject and insert CD ISOs on VM Machines page
Add boot order on VM Machines page
2022-08-23 18:00:58 +01:00
dcflachs
5cfd51add8 Dockerman add ability to specify shell with container label. 2022-08-22 23:21:51 -04:00
SimonFair
d150e3ea7f Add display only initially. 2022-08-20 16:14:21 +01:00
tom mortensen
ee544d259d Merge pull request #1150 from bergware/master
Make script executable
2022-08-20 07:16:49 -07:00
bergware
81937803d0 Prevent overflow in container size for low resolutions 2022-08-20 11:27:06 +02:00
SimonFair
1ec4d035ab Fix template selections and add help text. 2022-08-20 10:16:18 +01:00
bergware
063cf01717 Make script executable 2022-08-20 11:07:43 +02:00
tom mortensen
d8aa10d24a Merge pull request #1149 from bergware/master
Add SSD Trim plugin in stock Unraid
2022-08-18 08:42:20 -07:00
SimonFair
a84a25d2c7 Update LibreELEC.form.php 2022-08-16 19:09:35 +01:00
SimonFair
172f78513f Update ELEC Templates 2022-08-16 18:22:52 +01:00
bergware
018b42a0a1 Make script executable 2022-08-16 09:03:04 +02:00
bergware
376bd050ff Add SSD Trim plugin in stock Unraid 2022-08-16 08:55:14 +02:00
tom mortensen
f09e898e48 Merge pull request #1147 from bergware/master
Plugin system and docker update
2022-08-15 13:35:53 -07:00
bergware
35d9d5cedb Plugins: keep header buttons in same position 2022-08-15 18:53:11 +02:00
SimonFair
75da483e81 Update spice.html 2022-08-14 08:04:17 +01:00
SimonFair
bd1827e5dc Remove password label. 2022-08-14 07:48:59 +01:00
SimonFair
339e5280a3 Code tidy 2022-08-14 07:41:40 +01:00
SimonFair
ddc82af2ba Add webform for password instead of prompt. 2022-08-14 07:38:25 +01:00
SimonFair
f029db2da3 Remove test code and fix menu if vm not running and manual port set. 2022-08-13 18:22:04 +01:00
SimonFair
717ee6c647 Add autoport and ports Add password prompt
Revert change to not update manual ports as now in GUI.
2022-08-13 17:02:38 +01:00
bergware
d3dc04ce8b Added legacy comments 2022-08-13 14:38:05 +02:00
bergware
c89f21031e Select case: style update 2022-08-13 14:24:33 +02:00
bergware
256cee86a5 Remove debug statement 2022-08-13 14:03:30 +02:00
bergware
29ef92e983 openDocker change button default setting 2022-08-13 11:05:53 +02:00
bergware
b5f7503926 Add feedback to diagnostics 2022-08-13 10:48:44 +02:00
bergware
61c362bcc2 Simplify start command 2022-08-13 10:33:52 +02:00
bergware
fca75c7296 Simplify start command 2022-08-13 10:28:36 +02:00
bergware
8e5b70e68b openDocker correct button default setting 2022-08-13 09:07:08 +02:00
bergware
83d73c6375 Remove delay dependency at server side 2022-08-12 19:53:29 +02:00
SimonFair
b883da15fa Change to text and field names
Use Virtual Console as text
Add ports view only on Template
Use VMRC for field names and new functions.
2022-08-12 15:00:10 +01:00
bergware
f8cf4967e6 System info - style update 2022-08-11 23:56:45 +02:00
bergware
1e5a29dea8 Empty buffer after ALERT 2022-08-11 23:36:37 +02:00
bergware
6f10b0d292 plugin & language empty buffer after error message 2022-08-11 23:25:31 +02:00
bergware
3817b4346b Revert "plugin & language empty buffer after error message"
This reverts commit 95a5861227.
2022-08-11 23:24:19 +02:00
bergware
95a5861227 plugin & language empty buffer after error message 2022-08-11 23:15:12 +02:00
bergware
887cb79d69 Fix regression errors in plugin deletion 2022-08-11 21:02:22 +02:00
bergware
e2b3859f8e Fix regression errors in plugin deletion 2022-08-11 20:22:17 +02:00
bergware
380ba0c710 Added new parameter "button" to openChanges 2022-08-11 13:49:03 +02:00
bergware
c13058e8c6 Added new parameter "button" to openChanges
- defaults to hide CLOSE button
2022-08-11 13:36:32 +02:00
bergware
3029e9dff2 Plugin system and docker update
Minor code update
2022-08-11 13:24:01 +02:00
bergware
5a1c305574 Plugin system and docker update
- Remove delay between swal windows
2022-08-11 11:29:40 +02:00
bergware
a5a43df530 Plugin system and docker update
- Keep swal window open as needed
- Code optimizations
2022-08-11 11:08:27 +02:00
bergware
5c0383850c Added new parameter "button" to openPlugin and openDocker 2022-08-11 09:50:59 +02:00
bergware
e9c0d13066 Added new parameter "button" to openPlugin and openDocker 2022-08-11 09:36:53 +02:00
bergware
337f9d23e7 Added new parameter "button" to openPlugin and openDocker
The "button" parameter allows to show (default) or hide the CLOSE button while the window is opened and process is running.

Hiding the CLOSE button forces the user to wait until processing is completed and closing the window.
2022-08-10 21:13:06 +02:00
bergware
38fde4c59a Fixed typo in javascript -causing "Add Container" not to work 2022-08-10 10:45:46 +02:00
bergware
b51838f3c6 Make script executable 2022-08-09 16:37:36 +02:00
bergware
8308ae5842 Plugin system and docker update
- Use buffering in nchan communication
- Start any background command delayed
- Added openDokcer routine
- Code optimization
2022-08-09 16:36:56 +02:00
Tom Mortensen
b0c8aa85f4 suppress php warning if filebackup.ini does not exist 2022-08-06 10:03:00 -07:00
tom mortensen
3c4bcfe5cc Merge pull request #1145 from zackspear/master
chore(upc): v1.6.0
2022-08-05 11:13:19 -07:00
SimonFair
7f3584061a Add autoport processing. 2022-08-05 08:36:04 +01:00
Zack Spear
33114f201a chore(upc): sync php partials w/ plg versions 2022-08-04 15:20:31 -07:00
Zack Spear
a4dfba1b01 chore(upc): v1.6.0 flashBackup sign out warning
api report param
plg incomplete install detection
2022-08-04 15:14:16 -07:00
SimonFair
dfb068bc3e GUI Updates. 2022-08-04 22:36:49 +01:00
SimonFair
7e350c692b Update GUI Pages and processors 2022-08-04 20:53:50 +01:00
SimonFair
5d7d77ad4f Update to GUI 2022-08-04 18:11:36 +01:00
tom mortensen
814d8d4ce5 Merge pull request #1143 from bergware/master
Create API folder
2022-08-03 09:35:55 -07:00
bergware
3b6f90101a Merge remote-tracking branch 'upstream/master' 2022-08-01 09:14:00 +02:00
tom mortensen
af6140dccc Merge pull request #1144 from SimonFair/Add-NVME-capabilities
Add nvme capabilities
2022-07-31 10:06:00 -07:00
SimonFair
697f84d2ff VM Manager GUI Changes, 2022-07-31 16:05:20 +01:00
SimonFair
874f7a74de Add Spice HTML Client 2022-07-31 15:36:34 +01:00
SimonFair
c2711478e6 Update to Disk Capabilities pages for NVME drives 2022-07-30 18:00:05 +01:00
SimonFair
83c8fb36e8 Update SmartInfo.php 2022-07-30 15:53:17 +01:00
SimonFair
860087b9e1 Initial Update. 2022-07-30 15:32:46 +01:00
bergware
59bfb96fc6 Create API folder
This folder contains scripts and other files related to API functionality. To keep a distinct separation between regular GUI resources and API resources, which can be used by entities outside the GUI domain.
2022-07-29 09:43:10 +02:00
Tom Mortensen
c666d69679 Fix issue installing registration keys 2022-07-28 13:10:29 -07:00
tom mortensen
434d0c9bc5 Merge pull request #1142 from zackspear/master
fix(upc): v1.4.2 apiVersion check regression
2022-07-27 13:51:47 -07:00
Zack Spear
17ee54c902 fix(upc): v1.4.2 apiVersion check regression 2022-07-27 16:47:02 -04:00
tom mortensen
64e9b354ec Merge pull request #1141 from bergware/master
Highlight case selection when custom image is selected
2022-07-27 08:40:49 -07:00
bergware
63e43e5586 Highlight case selection when custom image is selected 2022-07-27 12:27:29 +02:00
tom mortensen
a56c95a2bd Merge pull request #1140 from bergware/master
Fix regression error in plugin system
2022-07-26 08:42:18 -07:00
tom mortensen
e2ce9995b6 Merge pull request #1139 from limetech/fix/vnc_port_settings
Fix: preserve vnc port settings
2022-07-26 08:41:42 -07:00
bergware
fa927f7b51 Fix regression error in plugin system 2022-07-26 09:06:47 +02:00
Tom Mortensen
6a615ad082 Management access: HTTP port setting always enabled 2022-07-25 19:00:16 -07:00
tom mortensen
1a407f2378 Merge pull request #1138 from bergware/master
Plugin system update
2022-07-25 08:54:27 -07:00
bergware
0b25732ae7 Plugin system update 2022-07-25 09:42:12 +02:00
bergware
0bd1620f36 Plugin system update 2022-07-25 09:31:44 +02:00
bergware
49ae9c5a61 Revert "Plugin system update"
This reverts commit d20ad4ff8c.
2022-07-25 09:19:33 +02:00
bergware
d20ad4ff8c Plugin system update 2022-07-25 09:13:33 +02:00
bergware
b45b3a41f0 Plugin system update 2022-07-24 23:53:14 +02:00
tom mortensen
d1e6c01ac7 Merge pull request #1137 from bergware/master
Plugin system update
2022-07-20 07:14:16 -07:00
bergware
5e60359ac6 Plugin system update 2022-07-20 12:19:49 +02:00
bergware
2a695a9f7d Plugin system update 2022-07-20 12:17:02 +02:00
bergware
f5af509591 Plugin system update 2022-07-20 12:00:55 +02:00
bergware
9c0efa0ae4 Plugin system update 2022-07-20 11:57:55 +02:00
bergware
21ec27d52d Make script executable 2022-07-20 11:57:28 +02:00
tom mortensen
96351335bc Merge pull request #1136 from bergware/master
Plugin system update
2022-07-19 13:56:29 -07:00
bergware
36448a78c4 Plugin system update 2022-07-19 22:17:04 +02:00
tom mortensen
a80c270cd8 Merge pull request #1135 from bergware/master
Fix regression error
2022-07-19 07:46:12 -07:00
Tom Mortensen
5abe5712a5 Changes to 'plugin' script:
- get rid of 'feof()' call in watching wget progress
- report error for 0-length wget'ed files
- check md5/sha256 of files already on flash
2022-07-19 07:45:18 -07:00
bergware
1862c5a59d Fix regression error 2022-07-19 11:07:52 +02:00
bergware
8f0c6436ed Fix regression error 2022-07-19 10:58:01 +02:00
tom mortensen
e0f01de617 Merge pull request #1134 from bergware/master
Plugin system update
2022-07-16 08:45:57 -07:00
bergware
30bb035bc3 Plugin system update 2022-07-16 13:13:38 +02:00
bergware
ea7caa97ed Plugin system update 2022-07-16 10:29:47 +02:00
bergware
8ae63aedb0 Plugin system update 2022-07-15 21:28:02 +02:00
bergware
5b641d107b Plugin system update 2022-07-15 21:23:21 +02:00
tom mortensen
a230d199d5 Merge pull request #1133 from ljm42/fix-token-timeout
fix: only show T2FA token timeout message when needed
2022-07-12 20:11:11 -07:00
tom mortensen
0c3a0ddb18 Merge pull request #1132 from bergware/master
Plugin system update
2022-07-12 20:11:00 -07:00
ljm42
f1f8d44850 fix: only show T2FA token timeout message when needed 2022-07-12 10:37:02 -07:00
bergware
bf849f3d78 Plugin system update 2022-07-12 12:47:47 +02:00
bergware
bb521bf3af Plugin system update 2022-07-12 11:20:09 +02:00
bergware
6b433fda01 Plugin system update
Change timing
2022-07-12 11:06:01 +02:00
bergware
2d4dacf0d1 Plugin system update
Minor updates
2022-07-12 09:28:16 +02:00
bergware
1a0e8de368 Revert "Plugin system update"
This reverts commit 8f8c75dc67.
2022-07-11 23:11:44 +02:00
bergware
8f8c75dc67 Plugin system update
Extend delay for slower systems when receiving nchan messages
2022-07-11 22:14:30 +02:00
tom mortensen
7ba0d4bbd6 Merge pull request #1130 from bergware/master
Plugin system update
2022-07-11 09:23:19 -07:00
bergware
ac8956de6d Plugin system update 2022-07-11 14:12:39 +02:00
bergware
6a0d801190 Plugin system update 2022-07-11 11:30:40 +02:00
bergware
0339394150 Plugin system update 2022-07-11 09:55:29 +02:00
bergware
07cca58bed Plugin system update 2022-07-10 10:37:10 +02:00
bergware
851070e61e Revert "Plugin system update"
This reverts commit f90f1f6036.
2022-07-10 10:27:50 +02:00
bergware
f90f1f6036 Plugin system update 2022-07-10 10:26:48 +02:00
bergware
279e0b8139 Plugin system update 2022-07-10 10:03:11 +02:00
bergware
680ce155bc Plugin system update 2022-07-09 20:29:25 +02:00
bergware
16bda3d582 Plugin system update 2022-07-09 14:15:44 +02:00
bergware
aea77abfbe Plugin system update 2022-07-09 14:14:37 +02:00
bergware
581db3d086 Plugin system update 2022-07-09 14:11:37 +02:00
bergware
6127812336 Plugin system update 2022-07-09 13:49:04 +02:00
bergware
986fcce49a Plugin system update 2022-07-09 12:50:06 +02:00
bergware
713fab2534 Plugin system update 2022-07-09 12:48:13 +02:00
bergware
2e71598b0b Plugin system update 2022-07-09 12:41:42 +02:00
bergware
18f96fd0d4 Plugin system update 2022-07-09 12:29:13 +02:00
bergware
8a547d30f6 Plugin system update 2022-07-09 11:36:40 +02:00
bergware
85465c14df Plugin system update 2022-07-09 11:33:37 +02:00
bergware
3213cebe52 Plugin system update 2022-07-09 11:14:33 +02:00
bergware
681bcff670 Plugin system update 2022-07-09 11:09:14 +02:00
bergware
2f813af61b Plugin system update 2022-07-09 00:17:59 +02:00
bergware
bbf48ee012 Plugin system update 2022-07-09 00:05:02 +02:00
bergware
f71e0e16d0 Plugin system update 2022-07-08 23:59:13 +02:00
bergware
c677dbdc89 Plugin system update 2022-07-08 23:54:47 +02:00
bergware
e6de6372ac Plugin system update 2022-07-08 23:31:48 +02:00
bergware
c181de6fe1 Plugin system update 2022-07-08 23:30:56 +02:00
bergware
75b53038db Plugin system update 2022-07-08 23:12:54 +02:00
bergware
d281b02c0e Plugin system update 2022-07-08 23:07:53 +02:00
bergware
9385c45d2c Plugin system update 2022-07-08 23:02:53 +02:00
bergware
f925e63313 Revert "Plugin system update"
This reverts commit 1f8c84f075.
2022-07-08 23:01:14 +02:00
bergware
1f8c84f075 Plugin system update
Change CLOSE button to DONE button to mimic old behavior
2022-07-08 21:43:32 +02:00
Tom Mortensen
43721b59d1 Merge branch 'master' of github.com:limetech/webgui 2022-07-08 10:14:30 -07:00
tom mortensen
522e674dc9 Merge pull request #1127 from nemchik/fix/ssh-key-regex
Update ssh key regex
2022-07-08 09:44:31 -07:00
tom mortensen
ceb12b41a3 Merge pull request #1128 from bergware/master
Style updates
2022-07-08 09:43:36 -07:00
tom mortensen
75e71440c8 Merge pull request #1129 from ljm42/fix-cert-details
add details for self-signed certs, part 2
2022-07-08 09:43:13 -07:00
Tom Mortensen
c56dd89d25 Merge branch 'master' of github.com:limetech/webgui 2022-07-08 09:13:47 -07:00
Tom Mortensen
bb52215c54 update SSL stapling support help text 2022-07-08 09:13:18 -07:00
bergware
fe2a3771d5 Style updates 2022-07-08 09:35:39 +02:00
ljm42
d3b58520ed fix: missing translation 2022-07-07 16:57:15 -07:00
ljm42
f3aaae9ff3 fix: support ipv6 urls in local access list 2022-07-07 16:54:35 -07:00
ljm42
c7f57925af fix: suppress default port in url 2022-07-07 16:29:36 -07:00
ljm42
1fb58a03bd fix: only add link when it is valid 2022-07-07 16:25:55 -07:00
bergware
83464830a7 Style updates 2022-07-07 22:40:01 +02:00
bergware
85395516bb Style updates 2022-07-07 22:37:25 +02:00
bergware
740b09ad49 Style updates 2022-07-07 22:03:47 +02:00
Eric Nemchik
090fa3f992 Update ssh key regex
Add support for ed25519/sk-ed25519
Remove support for ecdsa (insecure)
Use proper regex to check for valid key types
2022-07-07 18:06:19 +00:00
tom mortensen
afcacdbe08 Merge pull request #1126 from bergware/master
Update multiplugin
2022-07-07 07:29:05 -07:00
bergware
7ae3bcc7da Plugin system update 2022-07-07 14:29:55 +02:00
bergware
462e558600 Plugin system update 2022-07-07 14:25:36 +02:00
bergware
451b4ee2fe Plugin system update 2022-07-07 14:21:51 +02:00
bergware
3bc84df183 Plugin system update 2022-07-07 14:17:49 +02:00
bergware
3b5238cd0d Plugin system update 2022-07-07 14:02:34 +02:00
bergware
35a5991dd4 Plugin system update
Run post-hook scripts unconditionally
2022-07-07 13:46:29 +02:00
bergware
ff3ab31096 Update multiplugin
Allow execution of both PLG and XML files
2022-07-07 11:03:56 +02:00
tom mortensen
e62589933e Merge pull request #1125 from bergware/master
Remove session creation in scripts
2022-07-06 12:48:21 -07:00
bergware
594533f8a2 Remove session creation in scripts 2022-07-06 08:50:22 +02:00
tom mortensen
1dc59e5fd9 Merge pull request #1124 from bergware/master
System update
2022-07-05 12:25:21 -07:00
bergware
6c376d171b System update 2022-07-05 17:16:45 +02:00
bergware
132c312ccd System update 2022-07-05 17:14:39 +02:00
bergware
4da9a39de9 Make script executable 2022-07-05 17:09:04 +02:00
bergware
94039e26be System update 2022-07-05 17:08:27 +02:00
bergware
416a246d3a System update 2022-07-05 15:15:39 +02:00
bergware
b3958a88c3 System update 2022-07-05 12:55:42 +02:00
bergware
f95ac556cd System update 2022-07-05 12:14:33 +02:00
bergware
b1e6b67adc System update 2022-07-05 12:09:36 +02:00
bergware
064ad2b441 System update 2022-07-05 11:50:25 +02:00
bergware
7f76bb3f96 Make script executable 2022-07-05 11:49:26 +02:00
bergware
bd08a31ebc System update 2022-07-05 11:49:03 +02:00
bergware
ca0b37c932 System update
newperms uses background processing
2022-07-05 10:44:18 +02:00
bergware
1e0f78ab44 System update 2022-07-04 15:43:15 +02:00
bergware
d2ddfe39fe System update 2022-07-04 15:36:24 +02:00
bergware
8cd26e04bb System update 2022-07-04 15:33:25 +02:00
bergware
522fd64ce5 Make script executable 2022-07-04 15:25:52 +02:00
bergware
c61e0c6540 System update
Make SelectCase using nchan
2022-07-04 15:25:04 +02:00
bergware
4d89b0447b Parity check: fix regression error
pause/resume on schedule was broken
2022-07-03 21:38:48 +02:00
bergware
a2da2db35a System update 2022-07-03 11:20:27 +02:00
bergware
84fc12b95b System update 2022-07-03 11:16:58 +02:00
bergware
4b17e41458 System update 2022-07-03 11:06:51 +02:00
bergware
7018ec2345 System update 2022-07-03 11:03:11 +02:00
bergware
8a8e4235dc System update 2022-07-03 11:00:26 +02:00
bergware
dc32ee09c1 System update 2022-07-03 10:54:18 +02:00
bergware
8bb03677a2 System update 2022-07-03 10:41:45 +02:00
bergware
b0c7a395e9 System update 2022-07-03 10:21:18 +02:00
bergware
ecf7e0e8b5 System update 2022-07-03 10:10:32 +02:00
bergware
a15d11cf4c System update 2022-07-03 10:08:45 +02:00
bergware
e6a8e94c3b System update 2022-07-03 09:25:29 +02:00
bergware
e0f1eeb9ae System update 2022-07-03 09:23:15 +02:00
bergware
93a506bf40 System update 2022-07-03 09:08:29 +02:00
bergware
c3b9273d56 System update 2022-07-03 09:04:20 +02:00
bergware
f89c157d61 System update 2022-07-03 03:49:02 +02:00
bergware
102983eace System update 2022-07-03 03:34:14 +02:00
bergware
1dbd32df18 System update 2022-07-03 03:04:52 +02:00
bergware
242d103803 System update 2022-07-03 03:01:54 +02:00
bergware
a49651fc36 Revert "System update"
This reverts commit 9bd01224ce.
2022-07-03 03:00:16 +02:00
bergware
9bd01224ce System update 2022-07-03 02:58:19 +02:00
bergware
048b2e6b7a System update 2022-07-03 02:54:30 +02:00
bergware
b6375a284a System update 2022-07-03 02:53:27 +02:00
bergware
ec1d90ecec System update 2022-07-03 02:52:16 +02:00
bergware
565d867b26 Make scripts executable 2022-07-03 02:40:53 +02:00
bergware
7c29b3af68 System update
- Info window
- Feedback window
2022-07-03 02:40:11 +02:00
tom mortensen
a2f516cfb2 Merge pull request #1122 from ljm42/feat-cert-details
add details for self-signed certs
2022-07-02 15:16:24 -07:00
tom mortensen
99bcb374cc Merge pull request #1123 from bergware/master
Plugin system update
2022-07-02 12:13:25 -07:00
bergware
5884eea442 Make script executable 2022-07-02 15:04:23 +02:00
bergware
18aac92b97 Use Nchan for parity history view 2022-07-02 15:03:15 +02:00
bergware
d0468da23a Plugin system update 2022-07-02 15:02:23 +02:00
bergware
17417dd8b7 Plugin system update
Styling updates
2022-07-02 13:42:23 +02:00
ljm42
f6f1afeef1 list Local Access URLs for this server 2022-07-01 15:11:58 -07:00
ljm42
f5d61743d3 add details for self-signed certs 2022-06-29 19:39:29 -07:00
ljm42
ec77272d98 add details for self-signed certs 2022-06-29 19:19:29 -07:00
tom mortensen
7de798accb Merge pull request #1121 from bergware/master
Plugin system update
2022-06-29 10:50:58 -07:00
bergware
088202d727 Plugin system update 2022-06-29 09:37:52 +02:00
bergware
0af8cfcc1d Plugin system update 2022-06-29 09:32:24 +02:00
bergware
995dcaaa6f Plugin system update
Fixed: bad XML check
2022-06-29 09:27:54 +02:00
tom mortensen
aa6c2357b5 Merge pull request #1120 from bergware/master
Plugin system update
2022-06-28 06:58:56 -07:00
bergware
cea57a7c49 Fix VM log can not open when VM name has # in it 2022-06-28 13:03:09 +02:00
bergware
491e252c53 Plugin system update 2022-06-28 10:41:01 +02:00
bergware
f760e13d44 Merge remote-tracking branch 'upstream/master' 2022-06-28 10:37:14 +02:00
bergware
1eab0994cc Plugin system update 2022-06-28 10:36:39 +02:00
tom mortensen
15265c4711 Merge pull request #1119 from ljm42/feat-wg-log
feat: add basic logging when wg tunnels start/stop
2022-06-27 17:08:12 -07:00
ljm42
27d3dcf36f Merge branch 'master' into feat-wg-log 2022-06-27 16:59:38 -07:00
tom mortensen
1320bc3488 Merge pull request #1117 from arifer612/feat/docker-webui
Use docker label as primary source for WebUI
2022-06-27 16:12:39 -07:00
tom mortensen
86a5559760 Merge pull request #1118 from Squidly271/patch-43
Update Credits.page
2022-06-27 16:07:49 -07:00
tom mortensen
f4c944ec6c Merge pull request #1116 from bergware/master
Plugin system update
2022-06-27 16:07:24 -07:00
tom mortensen
de1c3ab5fe Merge pull request #1115 from zackspear/master
feat(upc): v1.3.0
2022-06-27 16:06:38 -07:00
ljm42
b04c4a9760 feat: add basic logging when wg tunnels start/stop 2022-06-27 14:16:09 -07:00
bergware
768e677651 Plugin system update 2022-06-27 12:59:30 +02:00
bergware
4569ed4e3c Plugin system update 2022-06-27 09:59:33 +02:00
bergware
ab276d9b3a Plugin system update 2022-06-26 23:55:17 +02:00
bergware
33cb013d16 Plugin system update 2022-06-26 23:33:50 +02:00
bergware
30eb136d5d Plugin system update 2022-06-26 23:07:08 +02:00
bergware
968eedb03a Plugin system update 2022-06-26 14:57:46 +02:00
bergware
eaaaf8bd26 Plugin system update 2022-06-26 14:37:26 +02:00
bergware
2606d5d871 Plugin system update
Added update all plugins with details
2022-06-26 12:38:17 +02:00
bergware
09c0c54866 Plugin system update
Added multi remove ability on Plugins page
2022-06-26 12:04:11 +02:00
bergware
0ff9958e4f Plugin system update 2022-06-26 09:25:31 +02:00
Squidly271
68fd83a42b Update Credits.page 2022-06-25 14:42:27 -04:00
bergware
a5151575fe Plugin system update 2022-06-25 09:02:47 +02:00
bergware
0a28095006 Plugin system update 2022-06-25 00:24:52 +02:00
bergware
530565d83a Revert "Plugin system update"
This reverts commit 749908cd1a.
2022-06-25 00:22:09 +02:00
bergware
749908cd1a Plugin system update 2022-06-24 23:06:38 +02:00
bergware
1cfcd2cc7e Plugin system update 2022-06-24 22:48:27 +02:00
bergware
f29a14cf63 Update Download.php 2022-06-24 20:05:39 +02:00
bergware
d9f09afef6 Plugin system update 2022-06-24 19:46:00 +02:00
bergware
c9c7ffdb43 Update Download.php 2022-06-24 19:45:19 +02:00
bergware
0c4d13a4bd Plugin system update 2022-06-24 18:39:01 +02:00
bergware
44fbf23b72 Plugin system update 2022-06-24 18:35:24 +02:00
bergware
24c97c4023 Plugin system update 2022-06-24 18:34:03 +02:00
bergware
ab0037d0d9 Plugin system update 2022-06-24 18:27:48 +02:00
bergware
04babbe63f Plugin system update 2022-06-24 18:23:15 +02:00
bergware
77d3667a5a Plugin system update 2022-06-24 17:36:03 +02:00
bergware
9972549fa5 Revert "Plugin system update"
This reverts commit 3fa9a360c9.
2022-06-24 17:16:24 +02:00
bergware
3fa9a360c9 Plugin system update 2022-06-24 14:52:27 +02:00
Arif Er
b88df02414 fixup! feat(docker): use docker label as primary source for WebUI 2022-06-24 16:00:51 +08:00
bergware
fc430992e0 Plugin system update 2022-06-24 09:57:47 +02:00
bergware
338378db78 Plugin system update 2022-06-24 09:12:15 +02:00
bergware
455491414e Plugin system update
smarter plugin validation, only download file when needed
2022-06-24 08:38:21 +02:00
Arif Er
5c81ad9d82 feat(docker): use docker label as primary source for WebUI
This commit makes the 'net.unraid.docker.webui' docker label the primary source
when parsing the web UI address. If the docker label is missing, the template
value will be used instead.
2022-06-24 13:35:47 +08:00
bergware
00df05319c Make scripts executable 2022-06-23 08:17:34 +02:00
bergware
0a3b9f0989 Plugin system update
- Detach frontend and backend operation
- Use nchan as communication channel
- Allow window to be closed while backend continues
- Use SWAL as window manager
2022-06-23 08:13:54 +02:00
Zack Spear
e788734ec0 feat(upc): v1.3.0 2022-06-22 12:37:24 -07:00
Eric Schultz
79b8afadd3 Fix: preserve vnc port settings 2022-05-05 00:42:56 -05:00
1309 changed files with 129494 additions and 24221 deletions

24
.gitignore vendored
View File

@@ -49,5 +49,27 @@ Temporary Items
# Sublime text SFTP configuration file
sftp-config.json
# VS Code SFTP configuration file
.vscode/sftp.json
# =========================
# Exclude these dirs commonly found in /usr/local
games/
info/
lib64/
man/
share/
# Auto-generated when emhttpd/webGUI start
languages/en_US/helptext.dot
emhttp/languages/en_US/helptext.dot
# Auto-generated when web copmonents are built
emhttp/plugins/dynamix.my.servers/unraid-components/index.html
# development scripts
.dev-scripts/
emhttp/plugins/node_modules/
emhttp/plugins/.prettierignore
emhttp/plugins/.prettierrc
emhttp/plugins/package-lock.json
emhttp/plugins/package.json

10
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,10 @@
{
"recommendations": [
"natizyskunk.sftp",
"davidanson.vscode-markdownlint",
"bmewburn.vscode-intelephense-client",
"foxundermoon.shell-format",
"timonwong.shellcheck",
"esbenp.prettier-vscode"
]
}

83
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,83 @@
{
"files.associations": {
"*.page": "php"
},
"prettier.tabWidth": 4,
"editor.tabSize": 4,
"editor.indentSize": "tabSize",
"intelephense.stubs": [
"apache",
"bcmath",
"bz2",
"calendar",
"com_dotnet",
"Core",
"ctype",
"curl",
"date",
"dba",
"dom",
"enchant",
"exif",
"FFI",
"fileinfo",
"filter",
"fpm",
"ftp",
"gd",
"gettext",
"gmp",
"hash",
"iconv",
"imap",
"intl",
"json",
"ldap",
"libxml",
"mbstring",
"meta",
"mysqli",
"oci8",
"odbc",
"openssl",
"pcntl",
"pcre",
"PDO",
"pdo_ibm",
"pdo_mysql",
"pdo_pgsql",
"pdo_sqlite",
"pgsql",
"Phar",
"posix",
"pspell",
"random",
"readline",
"Reflection",
"session",
"shmop",
"SimpleXML",
"snmp",
"soap",
"sockets",
"sodium",
"SPL",
"sqlite3",
"standard",
"superglobals",
"sysvmsg",
"sysvsem",
"sysvshm",
"tidy",
"tokenizer",
"xml",
"xmlreader",
"xmlrpc",
"xmlwriter",
"xsl",
"Zend OPcache",
"zip",
"zlib",
"libvirt-php"
]
}

36
.vscode/sftp-template.json vendored Normal file
View File

@@ -0,0 +1,36 @@
{
"_comment": "rename this file to .vscode/sftp.json and replace name/host/privateKeyPath for your system",
"name": "Tower",
"host": "Tower.local",
"protocol": "sftp",
"port": 22,
"username": "root",
"privateKeyPath": "C:/Users/username/.ssh/tower",
"remotePath": "/usr/local",
"uploadOnSave": true,
"useTempFile": false,
"openSsh": false,
"ignore": [
"// comment: ignore dot files/dirs in root of repo",
".vscode",
".git",
".DS_Store",
"// comment: ignore symlinks in repo",
"sbin/emcmd",
"sbin/plugin",
"sbin/language",
"sbin/newperms",
"sbin/inet",
"sbin/samba",
"sbin/diagnostics",
"emhttp/boot",
"emhttp/state",
"emhttp/mnt",
"emhttp/log",
"emhttp/plugins/dynamix/images/case-model.png",
"emhttp/webGui",
"// comment: ignore files distributed by Unraid Connect",
"emhttp/plugins/dynamix.my.servers",
"emhttp/plugins/dynamix/include/UpdateDNS.php"
]
}

21
README.md Normal file
View File

@@ -0,0 +1,21 @@
# Unraid webgui repo
## Structure
The emhttp, etc, sbin, and src dirs in this repo are extracted to the /usr/local/ directory when an Unraid release is built.
## Contributions
Please be aware that there is a fairly high barrier to entry when working on the Unraid webgui. It has grown organically over the years and you will need to do quite a bit of reverse engineering to understand it.
If you choose to proceed, clone this repo locally, test edits by copying the changes to your server, then submit a PR to <https://github.com/unraid/webgui> when fully tested.
Be sure to describe (in the Unraid forum, a GitHub issue, or the GitHub PR) the problem/feature you are working on and explain how the proposed change solves it.
We recommend using VS Code with the following plugins:
* Install [natizyskunk.sftp](https://marketplace.visualstudio.com/items?itemName=Natizyskunk.sftp) and use .vscode/sftp-template.json as a template for creating your personalized sftp.json file to have VS Code upload files to your server when they are saved. Your personalized sftp.json file is blocked by .gitignore so it should never be included in your PR.
* Install [bmewburn.vscode-intelephense-client](https://marketplace.visualstudio.com/items?itemName=bmewburn.vscode-intelephense-client) and when reasonable, implement its recommendations for PHP code.
* Install [DavidAnson.vscode-markdownlint](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint) and when reasonable, implement its recommendations for markdown code.
* Install [foxundermoon.shell-format](https://marketplace.visualstudio.com/items?itemName=foxundermoon.shell-format) and [timonwong.shellcheck](https://marketplace.visualstudio.com/items?itemName=timonwong.shellcheck) and when reasonable, implement their recommendations when making changes to bash scripts.
* Install [esbenp.prettier-vscode](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) and when reasonable, use it for formatting files.

View File

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -256,7 +256,7 @@ Unraid OS uses these default options when creating a multiple-device pool:
`-dconvert=raid1 -mconvert=raid1`
For more complete documentation, please refer to the btrfs-balance [Manpage](https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs-balance)
For more complete documentation, please refer to the btrfs-balance [Manpage](https://man7.org/linux/man-pages/man8/btrfs-balance.8.html)
*Note: raid5 and raid6 are generally still considered **experimental** by the Linux community*
:end
@@ -489,7 +489,7 @@ If no suffix, a count of 1024-byte blocks is assumed.
:share_edit_global1_help:
A *Share*, also called a *User Share*, is simply the name of a top-level directory that exists on one or more of your
storage devices (array and cache). Each share can be exported for network access. When browsing a share, we return the
storage volumes (array disks and pools). Each share can be exported for network access. When browsing a share, we return the
composite view of all files and subdirectories for which that top-level directory exists on each storage device.
*Read settings from* is used to preset the settings of the new share with the settings of an existing share.
@@ -607,9 +607,7 @@ disable these services while mover is running.
:share_edit_copy_on_write_help:
Set to **No** to cause the *btrfs* NOCOW (No Copy-on-Write) attribute to be set on the share directory
when created on a device formatted with *btrfs* file system. Once set, newly created files and
subdirectories on the device will inherit the NOCOW attribute. We recommend this setting for shares
used to store vdisk images, including the Docker loopback image file. This setting has no effect
on non-btrfs file systems.
subdirectories on the device will inherit the NOCOW attribute. This setting has no effect on non-btrfs file systems.
Set to **Auto** for normal operation, meaning COW **will** be in effect on devices formatted with *btrfs*.
:end
@@ -622,6 +620,32 @@ Share does *not* contain any data and may be deleted if not needed any longer.
Share can *not* be deleted as long as it contains data. Be aware that some data can be hidden. See also [SMB Settings](/Settings/SMB) -> Hide "dot" files.
:end
:share_edit_exclusive_access_help:
When set to "Yes" indicates a symlink directly to a pool has been set up for the share in the /mnt/user tree.
Refer to [Global Share Settings](Settings/ShareSettings) -> Permit exclusive shares.
:end
:share_edit_primary_storage_help:
**Primary storage** is where *new files and folders* are created. If
Primary storage is below the minimum free space setting then new files
and folders will be created in **Secondary storage**, if configured.
**Important:** For *Exclusive access* shares, the Min free space
settings are ignored.
:end
:share_edit_secondary_storage_help:
**Secondary storage** is where new files and directories are created if no
room on Primary storage. When both Primary and Secondary storage are
configured the 'mover' will transfer files between them.
:end
:share_edit_mover_action_help:
This defines the direction of file transfer between Primary and
Secondary storage when both are configured.
:end
:smb_security_help:
*Read settings from* is used to preset the SMB security settings of the current selected share with the settings of an existing share.
@@ -640,6 +664,8 @@ will *hide* the share from *browsing* but is still accessible if you know the sh
:smb_time_machine_volume_help:
This limits the reported volume size, preventing Time Machine from using the entire real disk space
for backup. For example, setting this value to "1024" would limit the reported disk space to 1GB.
Note that Ventura 13.6 and later require a value to be present. No entry will prevent Time Machine
from working correctly.
:end
:smb_case_sensitive_names_help:
@@ -917,6 +943,18 @@ A value of zero will disable the warning threshold (including notifications).
A value of zero will disable the critical threshold (including notifications).
:end
:ssd_default_warning_temperature_help:
*Warning SSD temperature* sets the default warning threshold for all SSD devices temperature. Exceeding this threshold will result in a warning notification.
A value of zero will disable the warning threshold (including notifications).
:end
:ssd_default_critical_temperature_help:
*Critical disk temperature* sets the default critical threshold for all SSD devices temperature. Exceeding this threshold will result in an alert notification.
A value of zero will disable the critical threshold (including notifications).
:end
:disk_default_smart_notification_help:
SMART notifications are generated on either an increasing RAW value of the attribute, or a decreasing NORMALIZED value which reaches a predefined threshold set by the manufacturer.
@@ -959,10 +997,21 @@ Before you can start the Docker service for the first time, please specify an im
Once started, Docker will always automatically start after the array has been started.
:end
:docker_readmore_help:
Some systems with a lot of docker containers may experience lag using the main Docker page.
Setting this to "No" may help speed up general page usage by disabling the use of readmore-js.
Instead of chevrons indicating more data for Port and Volume mapping, all data is displayed.
:end
:docker_timeout_help:
The time in seconds to allow a container to gracefully stop before forcing it to stop
:end
:docker_pid_limit_help:
Set a PID Limit to limit the number of PIDs that a docker can use. The default is 2048. Set to zero for unlimited PIDs (not recommended).
:end
:docker_vdisk_type_help:
Select where to keep the Docker persistent state.
@@ -989,6 +1038,15 @@ You must specify a folder for Docker. The system will automatically create this
It is recommended to create this folder under a share which resides on the Cache pool (setting: cache=Only). For best performance SSD devices are preferred.
:end
:docker_storage_driver_help:
overlay2 (default): Will use overlay2 as the storage driver for Docker, regardless of the underlying filesystem.
native: The native storage driver for your underlying filesystem will be used (XFS: overlay2 | ZFS: zfs | BTRFS: btrfs).
ATTENTION: Changing the storage type from an existing Docker installation is not possible, you have to delete your Docker directory first, change the storage type and then reinstall your containers.
It is recommended to take a screenshot from your Docker containers before changing the storage type. After deleting and changing the storage type, reinstall the containers by clicking Add Container on the Docker page and select one by one from the drop down to reinstall them with your previous settings).
:end
:docker_appdata_location_help:
You can specify a folder to automatically generate and store subfolders containing configuration files for each Docker app (via the /config mapped volume).
@@ -1017,14 +1075,23 @@ Specifies the number of LOG files when LOG rotation is done.
If set to **Yes**, when creating/editing containers the interface will be present with some extra fields related to template authoring.
:end
:docker_custom_network_type_help:
The **ipvlan** type is best when connection to the physical network is not needed.
Please read <u><a style="color:blue" href='https://docs.docker.com/network/ipvlan/', target='_blank'>this</a></u> on implementing an ipvlan network.<br>
The **macvlan** type of network allows direct connection to the physical network.
Please read <u><a style="color:blue" href='https://docs.docker.com/network/macvlan/', target='_blank'>this</a></u> on implementing a macvlan network.<br>
**Note:** Docker uses its own dhcp service, which is the **DHCP Pool** setting.
When you use multiple Unraid servers, then each server must have a different Docker **DHCP Pool** range configured.
:end
:docker_custom_network_access_help:
Allows direct communication between the host and containers using a custom (macvlan) network.<br>
By default this is prohibited.
Allows direct communication between the host and containers using a custom **macvlan** network. By default this is disabled.
:end
:docker_user_defined_network_help:
User created networks are networks created by the user outside of the GUI.<br>
By default user created networks are removed from Docker. This is done to prevent potential conflicts with the automatic generation of custom networks.
User created networks are networks created by the user outside of the GUI. By default user created networks are removed from Docker. This is done to prevent potential conflicts with the automatic generation of custom networks.
Change this setting to preserve user defined networks, but it is the responsibility of the user to ensure these entries work correctly and are conflict free.
:end
@@ -1061,6 +1128,10 @@ This is the active Docker version.
This is the location of the Docker image.
:end
:docker_storage_driver_active_help:
This is the storage driver for Docker.
:end
:docker_appdata_location_active_help:
This is the storage location for Docker containers.
:end
@@ -1149,10 +1220,17 @@ SSL certificate. Use this URL to access your server:
Note that use of a self-signed SSL certificate will generate a browser
warning.
Select **Strict** to enable *exclusive* use of an Unraid.net SSL
Select **Strict** to enable *exclusive* use of a myunraid.net SSL
certificate for https access (see **Provision** below). Note that a DNS
server must be reachable.
**Redirects:** When accessing `http://<server-ip-address>` or `http://<server-name>.<localTLD>`, the
behavior will change depending on the value of the Use SSL/TLS setting:
* If Use SSL/TLS is set to **Strict**, you will be redirected to `https://<lan-ip>.<hash>.myunraid.net`
* If Use SSL/TLS is set to **Yes**, you will be redirected to `https://<server-ip-address> or https://<server-name>.<localTLD>`
* If Use SSL/TLS is set to **No**, then the http url will load directly.
Important: **Strict** may not be selectable if your router or upstream DNS server has
[DNS rebinding protection](https://en.wikipedia.org/wiki/DNS_rebinding) enabled. DNS rebinding
protection prevents DNS from resolving a private IP network range. DNS rebinding protection is meant as
@@ -1200,11 +1278,24 @@ Enter the HTTPS port, default port is 443.
Enter your local Top Level Domain. May be blank.
:end
:mgmt_local_access_urls_help:
The Local Access URLs shown above are based on your current settings.
To adjust URLs or redirects, see the help text for "Use SSL/TLS".
:end
:mgmt_wg_access_urls_help:
These URLs will only work when connected via the appropriate WireGuard tunnel as configured on ***Settings > VPN Manager***
:end
:mgmt_tailscale_access_urls_help:
These URLs will only work when connected to the appropriate Tailscale Tailnet.
:end
:mgmt_certificate_expiration_help:
**Provision** may be used to install a *free* Unraid.net SSL Certificate from
**Provision** may be used to install a *free* myunraid.net SSL Certificate from
[Let's Encrypt](https://letsencrypt.org/).
The Unraid.net SSL certificate can be used in two ways. First,
The myunraid.net SSL certificate can be used in two ways. First,
having the certificate present enables your server to respond to an
alternate URL of the form:
@@ -1218,24 +1309,20 @@ set to `*.<hash>.myunraid.net` thus validating the https connection.
You may enable this URL exclusively on your LAN by setting **Use
SSL/TLS** to **Strict**.
The second use for an Unraid.net certificate is to enable secure
remote access available through the My Servers plugin feature. Note
The second use for a myunraid.net certificate is to enable secure
remote access available through the Unraid Connect plugin feature. Note
that it is possible to use secure remote access in conjunction with
insecure local access.
After an Unraid.net SSL Certificate has been installed, two
background services are activated while the server is signed in to unraid.net:
- *updatedns* - This starts 30 seconds after server reboot has completed and contacts the Lime Technology
DNS service to register the servers local IP address. Thereafter it wakes up every 10 minutes in case
the local IP address has changed.
After a myunraid.net SSL Certificate has been installed, a
background service is activated:
- *renewcert* - This starts 60 seconds after server reboot has completed and contacts the Lime Technology
certificate renewal service to determine if your Unraid.net SSL certificate needs to be renewed.
certificate renewal service to determine if your myunraid.net SSL certificate needs to be renewed.
Thereafter it wakes up every 24 hours. If within 30 days of expiration, a new certificate is automatically
provisioned and downloaded to your server.
**Delete** may be used to delete the Unraid.net certificate file.
**Delete** may be used to delete the myunraid.net certificate file.
**nginx certificate handling details**
@@ -1243,16 +1330,17 @@ nginx makes use of two certificate files stored on the USB flash boot device:<br
- a self-signed certificate: `config/ssl/certs/<server-name>_unraid_bundle.pem`
- an Unraid.net certificate: `config/ssl/certs/certificate_bundle.pem`
- a myunraid.net certificate: `config/ssl/certs/certificate_bundle.pem`
The self-signed SSL certificate file is automatically created when nginx
starts; and re-created if the server hostname or local TLD is changed.
**nginx stapling support**
Whether nginx enables OCSP Staping is determined by which certificate is in use:<br>
`config/ssl/certs/certificate_bundle.pem` => Yes<br>
`config/ssl/certs/<server-name>_unraid_bundle.pem` => No
OCSP Stapling is automatically enabled if the certificate contains an OCSP responder URL.
Hence, for self-signed certificates stapling is not enabled; for CA-signed certificates
stabling is enabled.
:end
:ftp_server_help:
@@ -1391,6 +1479,19 @@ Uncheck all disks in order to not exclude any disks
disks which represent a subset of the Included/Excluded disks defined here.
:end
:shares_exclusive_shares_help:
If set to Yes, share directories under /mnt/user are actually symlinks to the share directory on a storage volume
provided the following conditions are met:
* The Primary storage for a share is set to a pool.
* The Secondary storage for a share is set to **none**.
* The share exists on a single volume.
* The share is **not** exported over NFS.
The advantage of *exclusive* shares is that transfers bypass the FUSE layer which may significantly
increase I/O performance.
:end
:shares_tunable_hard_links_help:
If set to Yes then support the link() operation.
@@ -1413,7 +1514,7 @@ This will increase write performance but might possibly decrease read performanc
Let the server act as a central syslog server and collect syslog messages from other systems.
The server can listen on UDP, TCP or both with a selectable port number.
Syslog information is stored per IP address. That is every system gets its own syslog file.
Syslog information is stored either per IP address or per hostname. That is every system gets its own syslog file.
:end
:syslog_local_folder_help:
@@ -1421,6 +1522,15 @@ Select the share folder where the syslogs will be stored.
It is recommended that you use a share located on the cache drive to prevent array disk spinups.
:end
:syslog_remote_system_identifier_help:
Select the identifier for the remote system (used in the logfile name).
* "IP Address" uses the IP address (IPv4 or IPv6) of the sending system.
* "Hostname (from syslog message)" uses the hostname included in each syslog message.
* "Hostname (from DNS reverse lookup)" performs a DNS reverse lookup for the sending IP and uses the result.
:end
:syslog_local_rotation_help:
By default LOG rotation is disabled and will create a single LOG file of unlimited size.
@@ -1447,6 +1557,13 @@ Change this setting to YES when troubleshooting is required and it is not possib
A mirror of the syslog file is stored in the **logs** folder of the flash device.
:end
:syslog_shutdown_flash_help:
This setting is YES by default and enables the system to copy the syslog file to the USB device on shutdown or reboot.
After rebooting, the syslog from this run will be visible on Tools > Syslog > syslog-previous;
it will also be included in diagnostics as logs/syslog-previous.txt
:end
:confirm_reboot_help:
Choose if rebooting or powering down the server needs a confirmation checkbox.
:end
@@ -1461,6 +1578,12 @@ The display settings below determine how items are displayed on screen. Use thes
You can experiment with these settings as desired, they only affect visual properties.
:end
:display_width_help:
**Boxed** is the legacy setting which constrains the content width to maximum 1920 pixels
**Unlimited** allows content to use all available width, which maybe useful on wide screens
:end
:display_font_size_help:
Changes the font size in the GUI. This is a per device setting.
:end
@@ -1511,10 +1634,18 @@ Selects the temperature unit for the disk temperature thresholds. Changing the u
Make sure any newly entered values represent the selected temperature unit.
:end
:display_favorites_enabled_help:
Enables favorite support. If set to no, will stop heart icon showing for additions. If existing favorites are saved, favorites tab and pre-saved options will still continue to show and function until all are deleted.
:end
:vms_enable_help:
Stopping the VM Manager will first attempt to shutdown all running VMs. After 60 seconds, any remaining VM instances will be terminated.
:end
:vms_disable_help:
Stop VMs from Autostarting\Starting when VM Manager starts or open is run from the gui to start, error message will be seen.
:end
:vms_libvirt_volume_help:
This is the libvirt volume.
:end
@@ -1573,6 +1704,23 @@ When shutting down the server, this defines how long to wait in seconds for *gra
NOTE: It's recommended to shut down guest VMs from within the VM.
:end
:vms_console_help:
For setting the console options to show on context menus. Web will show only inbuild web clients(VNC and SPICE),
Virtual Manager Remote Viewer will only show the Remote Viewer option. Both will show both Web and Remote Viewer.
:end
:vms_rdpopt_help:
Adds option to menu to start RDP. RDP file is downloaded. You need to set browser to open when ready.
:end
:vms_usage_help:
Show metrics for CPU both guest and host percentage, memory, disk io and network io.
:end
:vms_usage_timer_help:
Setting in seconds for metrics refresh time.
:end
:vms_acs_override_help:
*PCIe ACS override* allows various hardware components to expose themselves as isolated devices.
Typically it is sufficient to isolate *Downstream* ports.
@@ -1785,6 +1933,18 @@ Select the gateway from the dropdown list or enter a valid IPv4/IPv6 address as
The metric value is optional, it defaults to 1. Use it to select the preferred gateway when more than one entry of the same route exists.
:end
:eth_network_extra_include_help:
Enter one or more interface names or IP addresses which will be included in the list of listening interfaces for local system services.
This is particularly useful when you have created custom interfaces (e.g. tailscale VPN tunnel) which are used to access local system services.
:end
:eth_network_extra_exclude_help:
Enter one or more interface names or IP addresses which will be excluded from the list of listening interfaces for local system services.
This can be used to exclude dedicated local interfaces (e.g. p-t-p connections) or exclude dynamic interfaces (WireGuard tunnels) from using local system services.
:end
:apc_ups_daemon_help:
Set to 'Yes' to enable apcupsd and start the daemon, set to 'No' to disable apcupsd and stop the daemon.
:end
@@ -1827,6 +1987,10 @@ Enter the *device* which corresponds to your situation, only applicable when *UP
+ **modbus** - /dev/tty**
:end
:apc_ups_override_ups_capacity_help:
If your device doesn't natively report Nominal Power (`NOMPOWER`) from `apcupsd`, but does report the Load Percentage (`LOADPCT`), you can manually define the UPS capacity rating in Watts (W) (this is the 'real power' value in Watts (W), not the 'apparent power' in Volt Amps (VA), and should be detailed on your UPS manual or product listing) and the plugin will dynamically calculate a virtual Nominal Power estimate (`≈`) by comparing the Override UPS Capacity (W) and the current Load Percentage. It is only an estimate, as it doesn't factor in things like the UPS' efficiency.
:end
:apc_battery_level_help:
If during a power failure, the remaining battery percentage (as reported by the UPS) is below or equal to *Battery level*, apcupsd will initiate a system shutdown.
:end
@@ -1920,12 +2084,22 @@ Write mover messages to the syslog file.
:notifications_display_help:
In *Detailed* view all notifications will be displayed on screen as soon as they arrive.<br>
Notifications can be acknowledged individually or all in once.
Notifications can be acknowledged individually or all at once.
In *Summarized* view notifications will be counted only and the number of unread notifications is shown in the menu header per category.<br>
Click on the counters to either acknowledge or view the unread notifications.
:end
:notifications_display_position_help:
Choose the position of where notifications appear on screen in *Detailed* view. Multiple notifications are stacked, bottom-to-top or
top-to-bottom depending on the selected placement.
:end
:notifications_auto_close_help:
Number of seconds before notifications are automatically closed in *Detailed* view.<br>
A value of 0 disables automatic closure.
:end
:notifications_date_format_help:
Select the desired date format which is used in the notifications archive. Recommended is YYYY-MM-DD, which makes the date/time column sortable in a sensible way.
:end
@@ -1934,10 +2108,6 @@ Select the desired date format which is used in the notifications archive. Recom
Select the desired time format which is used in the notifications archive. Recommended is 24 hours, which makes the date/time column sortable in a sensible way.
:end
:notifications_display_position_help:
Choose the position of where notifications appear on screen. Multiple notifications are stacked, bottom-to-top or top-to-bottom depending on the selected placement.
:end
:notifications_store_flash_help:
By default notifications are stored on RAM disk, which will get lost upon system reboot.
Notifications may be stored permanently on the flash drive under folder '/boot/config/plugins/dynamix' instead.
@@ -2133,6 +2303,136 @@ Generally speaking, it is recommended to leave this setting to its default value
IMPORTANT NOTE: If adjusting port mappings, do not modify the settings for the Container port as only the Host port can be adjusted.
:end
:docker_container_network_help:
This allows your container to utilize the network configuration of another container. Select the appropriate container from the list.<br/>This setup can be particularly beneficial if you wish to route your container's traffic through a VPN.
:end
:docker_tailscale_help:
Enable Tailscale to add this container as a machine on your Tailnet.
:end
:docker_tailscale_hostname_help:
Provide the hostname for this container. It does not need to match the container name, but it must be unique on your Tailnet. Note that an HTTPS certificate will be generated for this hostname, which means it will be placed in a public ledger, so use a name that you don't mind being public.
For more information see <a href="https://tailscale.com/kb/1153/enabling-https" target="_blank">enabling https</a>.
:end
:docker_tailscale_be_exitnode_help:
Enable this if other machines on your Tailnet should route their Internet traffic through this container, this is most useful for containers that connect to commercial VPN services.
Be sure to authorize this Exit Node in your <a href="https://login.tailscale.com/admin/machines" target="_blank">Tailscale Machines Admin Panel</a>.
For more details, see the Tailscale documentation on <a href="https://tailscale.com/kb/1103/exit-nodes" target="_blank">Exit Nodes</a>.
:end
:docker_tailscale_exitnode_ip_help:
Optionally route this container's outgoing Internet traffic through an Exit Node on your Tailnet. Choose the Exit Node or input its Tailscale IP address.
For more details, see <a href="https://tailscale.com/kb/1103/exit-nodes" target="_blank">Exit Nodes</a>.
:end
:docker_tailscale_lanaccess_help:
Only applies when this container is using an Exit Node. Enable this to allow the container to access the local network.
<b>WARNING:</b>&nbsp;Even with this feature enabled, systems on your LAN may not be able to access the container unless they have Tailscale installed.
:end
:docker_tailscale_userspace_networking_help:
When enabled, this container will operate in a restricted environment. Tailscale DNS will not work, and the container will not be able to initiate connections to other Tailscale machines. However, other machines on your Tailnet will still be able to communicate with this container.
When disabled, this container will have full access to your Tailnet. Tailscale DNS will work, and the container can fully communicate with other machines on the Tailnet.
However, systems on your LAN may not be able to access the container unless they have Tailscale installed.
:end
:docker_tailscale_ssh_help:
Tailscale SSH is similar to the Docker "Console" option in the Unraid webgui, except you connect with an SSH client and authenticate via Tailscale.
For more details, see the <a href="https://tailscale.com/kb/1193/tailscale-ssh" target="_blank">Tailscale SSH</a> documentation..
:end
:docker_tailscale_serve_mode_help:
Enabling <b>Serve</b> will automatically reverse proxy the primary web service from this container and make it available on your Tailnet using https with a valid certificate!
Note that when accessing the <b>Tailscale WebUI</b> url, no additional authentication layer is added beyond restricting it to your Tailnet - the container is still responsible for managing usernames/passwords that are allowed to access it. Depending on your configuration, direct access to the container may still be possible as well.
For more details, see the <a href="https://tailscale.com/kb/1312/serve" target="_blank">Tailscale Serve</a> documentation.
If the documentation recommends additional settings for a more complex use case, enable "Tailscale Show Advanced Settings". Support for these advanced settings is not available beyond confirming the commands are passed to Tailscale correctly.
<b>Funnel</b> is similar to <b>Serve</b>, except that the web service is made available on the open Internet. Use with care as the service will likely be attacked. As with <b>Serve</b>, the container itself is responsible for handling any authentication.
We recommend reading the <a href="https://tailscale.com/kb/1223/funnel" target="_blank">Tailscale Funnel</a> documentation. before enabling this feature.
<b>Note:</b>&nbsp;Enabling <b>Serve</b> or <b>Funnel</b> publishes the Tailscale hostname to a public ledger.
For more details, see the Tailscale Documentation: <a href="https://tailscale.com/kb/1153/enabling-https" target="_blank">Enabling HTTPS</a>.
:end
:docker_tailscale_serve_port_help:
This field should specify the port for the primary web service this container offers. Note: it should specify the port in the container, not a port that was remapped on the host.
The system attempted to determine the correct port automatically. If it used the wrong value then there is likely an issue with the "Web UI" field for this container, visible by switching from "Basic View" to "Advanced View" in the upper right corner of this page.
In most cases this port is all you will need to specify in order to Serve the website in this container, although additional options are available below for more complex containers.
This value is passed to the `<serve_port>` portion of this command which starts serve or funnel:<br>
`tailscale [serve|funnel] --bg --<protocol><protocol_port><path> http://localhost:`**`<serve_port>`**`<local_path>`<br>
For more details see the <a href="https://tailscale.com/kb/1242/tailscale-serve" target="_blank">Tailscale Serve Command Line</a> documentation.
:end
:docker_tailscale_show_advanced_help:
Here there be dragons!
:end
:docker_tailscale_serve_local_path_help:
When not specified, this value defaults to an empty string. It is passed to the `<local_path>` portion of this command which starts serve or funnel:<br>
`tailscale [serve|funnel] --bg --<protocol><protocol_port><path> http://localhost:<serve_port>`**`<local_path>`**<br>
For more details see the <a href="https://tailscale.com/kb/1242/tailscale-serve" target="_blank">Tailscale Serve Command Line</a> documentation.
:end
:docker_tailscale_serve_protocol_help:
When not specified, this value defaults to "https". It is passed to the `<protocol>` portion of this command which starts serve or funnel:<br>
`tailscale [serve|funnel] --bg --`**`<protocol>`**`=<protocol_port><path> http://localhost:<serve_port><local_path>`<br>
For more details see the <a href="https://tailscale.com/kb/1242/tailscale-serve" target="_blank">Tailscale Serve Command Line</a> documentation.
:end
:docker_tailscale_serve_protocol_port_help:
When not specified, this value defaults to "=443". It is passed to the `<protocol_port>` portion of this command which starts serve or funnel:<br>
`tailscale [serve|funnel] --bg --<protocol>`**`<protocol_port>`**`<path> http://localhost:<serve_port><local_path>`<br>
For more details see the <a href="https://tailscale.com/kb/1242/tailscale-serve" target="_blank">Tailscale Serve Command Line</a> documentation.
:end
:docker_tailscale_serve_path_help:
When not specified, this value defaults to an empty string. It is passed to the `<path>` portion of this command which starts serve or funnel:<br>
`tailscale [serve|funnel] --bg --<protocol><protocol_port>`**`<path>`** `http://localhost:<serve_port><local_path>`<br>
For more details see the <a href="https://tailscale.com/kb/1242/tailscale-serve" target="_blank">Tailscale Serve Command Line</a> documentation.
:end
:docker_tailscale_serve_webui_help:
If <b>Serve</b> is enabled this will be an https url with a proper domain name that is accessible over your Tailnet, no port needed!
If <b>Funnel</b> is enabled the same url will be available on the Internet.
If they are disabled then the url will be generated from the container's main "Web UI" field, but modified to use the Tailscale IP. If the wrong port is specified here then switch from "Basic View" to "Advanced View" and review the "Web UI" field for this container.
:end
:docker_tailscale_advertise_routes_help:
If desired, specify any routes that should be passed to the **`--advertise-routes=`** parameter when running **`tailscale up`**.
For more details see the <a href="https://tailscale.com/kb/1019/subnets#connect-to-tailscale-as-a-subnet-router" target="_blank">Subnet routers</a> documentation.
:end
:docker_tailscale_daemon_extra_params_help:
Specify any extra parameters to pass when starting **`tailscaled`**.
For more details see the <a href="https://tailscale.com/kb/1278/tailscaled" target="_blank">tailscaled</a> documentation.
:end
:docker_tailscale_extra_param_help:
Specify any extra parameters to pass when running **`tailscale up`**.
For more details see the <a href="https://tailscale.com/kb/1080/cli#up" target="_blank">Tailscale CLI</a> documentation.
:end
:docker_tailscale_statedir_help:
If state directory detection fails on startup, you can specify a persistent directory in the container to override automatic detection.
:end
:docker_tailscale_troubleshooting_packages_help:
Enable this to install `ping`, `nslookup`, and `curl` into the container to help troubleshoot networking issues. Once the issues are resolved we recommend disabling this to reduce the size of the container.
:end
:docker_privileged_help:
For containers that require the use of host-device access directly or need full exposure to host capabilities, this option will need to be selected.
For more information, see this link: <a href="https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities" target="_blank">https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities</a>
@@ -2200,11 +2500,11 @@ Provide a comma separated list of urls that are allowed to access the unraid-api
:end
:myservers_remote_t2fa_help:
When Transparent 2FA for Remote Access is enabled, you will access your server by clicking the "Remote Access" link on the <a href="https://forums.unraid.net/my-servers/" target="_blank" rel="noopener noreferrer">My Servers dashboard</a>. The system will transparently request a 2FA token from your server and embed it in the server's login form. Your server will deny any Remote Access login attempt that does not include a valid token. Each token can be used only once, and is only valid for five minutes.
When Transparent 2FA for Remote Access is enabled, you will access your server by clicking the "Remote Access" link on the <a href="https://connect.myunraid.net/" target="_blank" rel="noopener noreferrer">Go to Connect</a>. The system will transparently request a 2FA token from your server and embed it in the server's login form. Your server will deny any Remote Access login attempt that does not include a valid token. Each token can be used only once, and is only valid for five minutes.
:end
:myservers_local_t2fa_help:
When Transparent 2FA for Local Access is enabled, you will access your server by clicking the "Local Access" link on the <a href="https://forums.unraid.net/my-servers/" target="_blank" rel="noopener noreferrer">My Servers dashboard</a>. The system will transparently request a 2FA token from your server and embed it in the server's login form. Your server will deny any Local Access login attempt that does not include a valid token. Each token can be used only once, and is only valid for five minutes.
When Transparent 2FA for Local Access is enabled, you will access your server by clicking the "Local Access" link on the <a href="https://connect.myunraid.net/" target="_blank" rel="noopener noreferrer">Go to Connect</a>. The system will transparently request a 2FA token from your server and embed it in the server's login form. Your server will deny any Local Access login attempt that does not include a valid token. Each token can be used only once, and is only valid for five minutes.
This is fairly extreme for Local Access, and in most cases is not needed. It requires a solid Internet connection. If you need to access the webGUI while the Internet is down, SSH to the server and run 'use_ssl no', this will give you access via http://<?=$nginx['NGINX_LANIP']?><?=$nginx['NGINX_PORT'] !== '80' ? ':'.$nginx['NGINX_PORT'] : '' ?>
:end
@@ -2228,8 +2528,8 @@ The *tunnel network pool* must be a unique network not already existing on the s
:end
:wg_local_tunnel_network_pool_X_help:
WireGuard tunnels need an internal IP address. Assign a network pool using the default IPv4 network <?=$netpool['wgX']?>/24 or
the default IPv6 network <?=$netpool6['wgX']?>/64 or assign your own network pool from which automatic assignment can be done for both this server and any peers.
WireGuard tunnels need an internal IP address. Assign a network pool using the default IPv4 network,
the default IPv6 network, or assign your own network pool from which automatic assignment can be done for both this server and any peers.
The *tunnel network pool* must be a unique network not already existing on the server or any of the peers.
:end
@@ -2243,7 +2543,7 @@ This field is auto filled-in when a local tunnel network pool is created. It is
:end
:wg_local_endpoint_help:
This field is automatically filled in with the public management domain name *www.&lt;hash&gt;.myunraid.net* or the public address of the server.<br>
This field is automatically filled in with the public management domain name *&lt;wan-ip&gt;.&lt;hash&gt;.myunraid.net* or the public address of the server.<br>
This allows VPN tunnels to be established from external peers to the server.<br>
Configure the correct port forwarding on your router (default port is <?=$netport['wg0']?> but this may be changed) to allow any incoming connections to reach the server.
@@ -2254,9 +2554,9 @@ Note to Cloudflare users: the Cloudflare proxy is designed for http traffic, it
:end
:wg_local_endpoint_X_help:
This field is automatically filled in with the public management domain name *www.&lt;hash&gt;.myunraid.net* or the public address of the server.<br>
This field is automatically filled in with the public management domain name *&lt;wan-ip&gt;.&lt;hash&gt;.myunraid.net* or the public address of the server.<br>
This allows VPN tunnels to be established from external peers to the server.<br>
Configure the correct port forwarding on your router (default port is <?=$netport['wgX']?> but this may be changed) to allow any incoming connections to reach the server.
Configure the correct port forwarding on your router to allow any incoming connections to reach the server.
Users with a registered domain name can use this field to specify how their server is known on the Internet. E.g. www.myserver.mydomain.<br>
Again make sure your router is properly set up.
@@ -2266,7 +2566,7 @@ Note to Cloudflare users: the Cloudflare proxy is designed for http traffic, it
:wg_local_server_uses_nat_help:
When NAT is enabled, the server uses its own LAN address when forwarding traffic from the tunnel to other devices in the LAN network.
Use this setting when no router modifications are desired, but this approach doesn't work with Docker containers using custom IP addressess.
Use this setting when no router modifications are desired, but this approach doesn't work with Docker containers using custom IP addresses.
When NAT is disabled, the server uses the WireGuard tunnel address when forwarding traffic.
In this case it is required that the default gateway (router) has a static route configured to refer tunnel address back to the server.
@@ -2333,3 +2633,77 @@ A keepalive timer will hold the connection open, for most situations a timer val
Note that for mobile devices this will use more data and drain your battery faster.
:end
:sysdrivers_intro_help:
This page displays all the drivers available on this system. Filter the list according to whether the driver is Inuse or not, or search for a specific driver if desired.
Any 3rd party driver installed by a plugin will have a support symbol next to it, click this to get support for the plugin.
Click the edit button to add/modify/delete any modprobe.d config file in the config/modprobe.d directory on the flash drive.
:end
:console_keyboard_help:
Select your default keymap for the local console (not the web Terminal).
:end
:console_screen_help:
**Default:** 'Default' will set the blank timeout to 15 minutes and powersave to 60 minutes.
**Disabled:** 'Disabled' will disable the blank and powersave timeout.
**All other values:** Will set the blank timout to the selected value and disable the powersave timeout.
:end
:console_bash_help:
If set to 'Yes' the bash history will persist reboots, set to 'No' to disable.
**ATTENTION:** The bash history will be written to the USB Boot device so this will introduce higher wear and tear!
**Note:** Disabling and Enabling will remove the entire bash history.
:end
:WOL_intro_help:
This page allows the setup to start/resume and stop VMs, Containters(Docker and LXC) using WOL magic packets
It does not setup wake up of the Unraid server.
The process will look for the defined mac address defined within the service(VM or container) with the exception of dockers. Dockers do not have a mac address until they are running so you will need to define a user mac address to allow you to start them
If the service is paused a WOL Packet will resume.
For each service you can set: enable, disable or enable and shutdown
When the enable and shutdown is set if the service is running when the next WOL packet is recieved a shutdown will be performed.
:end
:WOL_enable_help:
If set to yes Unraidwold daemon is set to run.
:end
:WOL_run_docker_help:
If set to yes when wake on lan packets are received checks are carrried out for dockers otherwise dockers will be ignored.
:end
:WOL_run_VM_help:
If set to yes when wake on lan packets are received checks are carrried out for virtual machines otherwise virtual machines will be ignored.
:end
:WOL_run_LXC_help:
If set to yes when wake on lan packets are received checks are carrried out for LXC otherwise LXC will be ignored. The LXC plugin needs to be installed for LXC to be processed.
:end
:WOL_run_shutdown_help:
If set to yes when wake on lan packets are received checks are carrried out and if enabled for service and that service is running the entity will be shutdown. System has to be set to Enabled and Shutdwon for it to be action.
:end
:WOL_interface_help:
Specify the interface to the daemon to bind to. Some interfaces may not be able to recieve etherframe packets. Recommend to bind to a physical interface.
:end
:WOL_promiscuous_mode_help:
Enable to set the NIC not to filer packets.
:end
:WOL_log_file_help:
Default is to log to syslog but if you want a different log location set the file name.
:end

View File

View File

@@ -78,7 +78,7 @@ function addLog(logLine) {
}
function addCloseButton() {
var done = location.search.split('&').pop().split('=')[1];
addLog("<p class='centered'><button class='logLine' type='button' onclick='" + (top.Shadowbox ? "top.Shadowbox" : "window") + ".close()'>"+decodeURI(done)+"</button></p>");
addLog("<p class='centered'><button class='logLine' type='button' onclick='" + (parent.Shadowbox ? "parent.Shadowbox" : "window") + ".close()'>"+decodeURI(done)+"</button></p>");
}
</script>
</head>

View File

@@ -1,6 +1,7 @@
<?php
$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
require_once "$docroot/webGui/include/Helpers.php";
require_once "$docroot/webGui/include/Wrappers.php";
// add translations
extract(parse_plugin_cfg('dynamix',true));
@@ -27,6 +28,9 @@ if ($_SERVER['REQUEST_URI'] == '/logout') {
$error = _('Successfully logged out');
}
// If issue with license key redirect to Tools/Registration, otherwise go to start page
$start_page = (!empty(_var($var,'regCheck'))) ? 'Tools/Registration' : _var($var,'START_PAGE','Main');
$result = exec( "/usr/bin/passwd --status root");
if (($result === false) || (substr($result, 0, 6) !== "root P"))
include "$docroot/webGui/include/.set-password.php";

View File

View File

@@ -3,8 +3,8 @@ Title="UPS Details"
Tag="battery-3"
---
<?PHP
/* Copyright 2005-2020, Lime Technology
* Copyright 2012-2020, Bergware International.
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
* Copyright 2015, Dan Landon.
*
* This program is free software; you can redistribute it and/or
@@ -14,16 +14,19 @@ Tag="battery-3"
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
require_once "$docroot/webGui/include/Wrappers.php";
?>
<script>
function getUPSstatus() {
$.get('/plugins/dynamix.apcupsd/include/UPSstatus.php',{all:'true'},function(data) {
if (data) {
data = data.split(/\n/);
$('#ups_summary').html(data[0]);
$('#ups_status').html(data[1]);
}
setTimeout(getUPSstatus,15000);
var batteryLevel = "<?= _var($cfg,'BATTERYLEVEL',0) ?>";
var batteryRuntime = "<?= _var($cfg,'MINUTES',0) ?>";
$.post('/plugins/dynamix.apcupsd/include/UPSstatus.php',{level:batteryLevel,runtime:batteryRuntime},function(data) {
data = data.split('\n');
$('#ups_summary').html(data[0]);
$('#ups_status').html(data[1]);
setTimeout(getUPSstatus,3000);
});
}
$(getUPSstatus);

View File

@@ -5,9 +5,9 @@ Icon="icon-ups"
Tag="battery-3"
---
<?PHP
/* Copyright 2005-2020, Lime Technology
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
* Copyright 2015, Dan Landon.
* Copyright 2012-2020, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
@@ -22,11 +22,6 @@ Tag="battery-3"
$sName = "dynamix.apcupsd";
$cfg = parse_plugin_cfg($sName);
?>
<style>
table.ups thead tr th{width:16.6%;padding-left:10px;}
table.ups tbody tr td{padding-left:10px;font-weight:bold;}
</style>
<script>
function toggleCustomCable(form) {
var readonly = form.UPSCABLE.value != 'custom';
@@ -45,14 +40,14 @@ $(function() {
});
</script>
<table class="tablesorter shift ups" <?if (!file_exists("/var/run/apcupsd.pid")):?>style="display:none"<?endif;?>>
<thead><tr><th>_(UPS Status)_</th><th>_(Battery Charge)_</th><th>_(Runtime Left)_</th><th>_(Nominal Power)_</th><th>_(UPS Load)_</th><th>_(UPS Load)_ %</th></tr></thead>
<tbody id="ups_summary"><tr><td colspan="6">&nbsp;</td></tr></tbody>
<thead><tr><th><i class='ups fa fa-shield'></i>_(UPS Model)_</th><th><i class='ups fa fa-plug'></i>_(UPS Status)_</th><th><i class='ups fa fa-battery'></i>_(Battery Charge)_</th><th><i class='ups fa fa-clock-o'></i>_(Runtime Left)_</th><th><i class='ups fa fa-bolt'></i>_(Nominal Power)_</th><th><i class='ups fa fa-bars'></i>_(UPS Load)_</th><th><i class='ups fa fa-ellipsis-h'></i>_(Output Voltage)_</th></tr></thead>
<tbody id="ups_summary"><tr class="ups"><td colspan="7">&nbsp;</td></tr></tbody>
</table>
<span style="float:right;margin-right:10px"><a href="http://apcupsd.org/manual/manual.html" target="_blank" title="_(APC UPS Daemon user manual)_"><i class="fa fa-file-text-o"></i> <u>_(Online Manual)_</u></a></span>
<form markdown="1" name="apcupsd_settings" method="POST" action="/update.php" target="progressFrame">
<input type="hidden" name="#file" value="<?=$sName?>/<?=$sName?>.cfg">
<input type="hidden" name="#include" value="/plugins/<?=$sName?>/include/update.apcupsd.php">
<span style="float:right;margin-right:10px"><a href="http://apcupsd.org/manual/manual.html" target="_blank" title="_(APC UPS Daemon user manual)_"><i class="fa fa-file-text-o"></i> <u>_(Online Manual)_</u></a></span>
_(Start APC UPS daemon)_:
: <select name="SERVICE">
@@ -96,6 +91,11 @@ _(Device)_:
:apc_ups_device_help:
_(Override UPS Capacity (Watts))_:
: <input type="number" name="OVERRIDE_UPS_CAPACITY" maxlength="5" class="narrow" value="<?=htmlspecialchars($cfg['OVERRIDE_UPS_CAPACITY']);?>">
:apc_ups_override_ups_capacity_help:
_(Battery level to initiate shutdown)_ (%):
: <input type="text" name="BATTERYLEVEL" class="narrow" maxlength="3" value="<?=htmlspecialchars($cfg['BATTERYLEVEL']);?>">

View File

@@ -0,0 +1,6 @@
#
# Send system notify message from apcupsd
#
read MESSAGE
[[ "$MESSAGE" == *restored* || "$MESSAGE" == *returned* ]] && LEVEL=normal || LEVEL=alert
/usr/local/emhttp/webGui/scripts/notify -l "/Settings/UPSsettings" -e "Unraid Server Alert" -s "UPS Alert" -d "$MESSAGE" -i $LEVEL

View File

@@ -3,6 +3,7 @@ UPSCABLE="usb"
CUSTOMUPSCABLE=""
UPSTYPE="usb"
DEVICE=""
OVERRIDE_UPS_CAPACITY=""
BATTERYLEVEL="10"
MINUTES="10"
TIMEOUT="0"

View File

@@ -6,7 +6,10 @@ cfg=/boot/config/plugins/dynamix.apcupsd/dynamix.apcupsd.cfg
[[ -f /var/run/apcupsd.pid || ! -f $cfg ]] && exit
# Read settings
source $cfg
. $cfg
# run & log functions
. /etc/rc.d/rc.runlog
# Apply settings
sed -i -e '/^NISIP/c\\NISIP 0.0.0.0' $conf
@@ -27,4 +30,4 @@ else
fi
# Start daemon
[[ $SERVICE == enable ]] && /etc/rc.d/rc.apcupsd start |& logger
[[ $SERVICE == enable ]] && /etc/rc.d/rc.apcupsd start |& log

View File

@@ -0,0 +1,109 @@
<?PHP
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
* Copyright 2015, Dan Landon.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
?>
<?
$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
// add translations
$_SERVER['REQUEST_URI'] = 'settings';
require_once "$docroot/webGui/include/Translations.php";
require_once "$docroot/webGui/include/Helpers.php";
$cfg = parse_plugin_cfg('dynamix.apcupsd');
$overrideUpsCapacity = (int) htmlspecialchars($cfg['OVERRIDE_UPS_CAPACITY'] ?: 0);
$state = [
'ONLINE' => _('Online'),
'SLAVE' => '('._('slave').')',
'TRIM' => '('._('trim').')',
'BOOST' => '('._('boost').')',
'COMMLOST' => _('Lost communication'),
'ONBATT' => _('On battery'),
'NOBATT' => _('No battery detected'),
'LOWBATT' => _('Low on battery'),
'OVERLOAD' => _('UPS overloaded'),
'SHUTTING DOWN' => _('System goes down')
];
$red = "class='red-text'";
$green = "class='green-text'";
$orange = "class='orange-text'";
$defaultCell = "<td>-</td>";
$status = array_fill(0,7,$defaultCell);
$result = [];
$level = $_POST['level'] ?: 10;
$runtime = $_POST['runtime'] ?: 5;
if (file_exists("/var/run/apcupsd.pid")) {
exec("/sbin/apcaccess 2>/dev/null", $rows);
for ($i=0; $i<count($rows); $i++) {
[$key,$val] = array_map('trim',array_pad(explode(':',$rows[$i],2),2,''));
switch ($key) {
case 'MODEL':
$status[0] = "<td $green>$val</td>";
break;
case 'STATUS':
$text = strtr($val, $state);
$status[1] = $val ? (strpos($val,'ONLINE')!==false ? "<td $green>$text</td>" : "<td $red>$text</td>") : "<td $orange>"._('Refreshing')."...</td>";
break;
case 'BCHARGE':
$charge = round(strtok($val,' '));
$status[2] = $charge>$level ? "<td $green>$charge %</td>" : "<td $red>$charge %</td>";
break;
case 'TIMELEFT':
$time = round(strtok($val,' '));
$unit = _('minutes');
$status[3] = $time>$runtime ? "<td $green>$time $unit</td>" : "<td $red>$time $unit</td>";
break;
case 'NOMPOWER':
$power = strtok($val,' ');
$status[4] = $power>0 ? "<td $green>$power W</td>" : "<td $red>$power W</td>";
break;
case 'LOADPCT':
$load = strtok($val,' ');
$status[5] = round($load)." %";
break;
case 'OUTPUTV':
$output = round(strtok($val,' '));
$status[6] = "$output V";
break;
case 'NOMINV':
$volt = strtok($val,' ');
$minv = floor($volt / 1.1); // +/- 10% tolerance
$maxv = ceil($volt * 1.1);
break;
case 'LINEFREQ':
$freq = round(strtok($val,' '));
break;
}
if ($i%2==0) $result[] = "<tr>";
$result[]= "<td><strong>$key</strong></td><td>$val</td>";
if ($i%2==1) $result[] = "</tr>";
}
if (count($rows)%2==1) $result[] = "<td></td><td></td></tr>";
// If the override is defined, override the power value, using the same implementation as above.
// This is a better implementation, as it allows the existing Unraid code to work with the override.
if ($overrideUpsCapacity > 0) {
$power = $overrideUpsCapacity;
$status[4] = $power>0 ? "<td $green>$power W</td>" : "<td $red>$power W</td>";
}
if ($power && isset($load)) $status[5] = ($load<90 ? "<td $green>" : "<td $red>").round($power*$load/100)." W (".$status[5].")</td>";
elseif (isset($load)) $status[5] = ($load<90 ? "<td $green>" : "<td $red>").$status[5]."</td>";
$status[6] = isset($output) ? ((!$volt || ($minv<$output && $output<$maxv) ? "<td $green>" : "<td $red>").$status[6].(isset($freq) ? " ~ $freq Hz" : "")."</td>") : $status[6];
}
if (empty($rows)) $result[] = "<tr><td colspan='4' style='text-align:center'>"._('No information available')."</td></tr>";
echo "<tr class='ups'>",implode($status),"</tr>\n",implode($result);
?>

View File

@@ -1,6 +1,6 @@
<?PHP
/* Copyright 2005-2018, Lime Technology
* Copyright 2012-2020, Bergware International.
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
* Copyright 2015, Dan Landon.
*
* This program is free software; you can redistribute it and/or

View File

@@ -0,0 +1,4 @@
table.ups thead tr th{width:16.6%;padding-left:10px}
table.ups tbody tr td{padding-left:10px;font-weight:bold}
tr.ups{height:3rem;line-height:3rem}
i.ups{margin-right:8px}

View File

@@ -3,9 +3,9 @@ Cond="(pgrep('dockerd')!==false)"
Markdown="false"
---
<?PHP
/* Copyright 2005-2020, Lime Technology
* Copyright 2014-2020, Guilherme Jardim, Eric Schultz, Jon Panozzo.
* Copyright 2012-2020, Bergware International.
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
* Copyright 2014-2021, Guilherme Jardim, Eric Schultz, Jon Panozzo.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,

View File

@@ -1,10 +1,12 @@
Menu="Tasks:60"
Type="xmenu"
Code="e90b"
Lock="true"
Cond="exec(\"grep -o '^DOCKER_ENABLED=.yes' /boot/config/docker.cfg 2>/dev/null\")"
---
<?PHP
/* Copyright 2005-2021, Lime Technology
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
* Copyright 2014-2021, Guilherme Jardim, Eric Schultz, Jon Panozzo.
*
* This program is free software; you can redistribute it and/or

View File

@@ -6,9 +6,9 @@ Markdown="false"
Nchan="docker_load:stop"
---
<?PHP
/* Copyright 2005-2021, Lime Technology
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
* Copyright 2014-2021, Guilherme Jardim, Eric Schultz, Jon Panozzo.
* Copyright 2012-2021, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
@@ -19,33 +19,19 @@ Nchan="docker_load:stop"
*/
?>
<?
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
$width = in_array($theme,['white','black']) ? -58: -44;
$top = in_array($theme,['white','black']) ? 40 : 20;
$busy = "<i class='fa fa-spin fa-circle-o-notch'></i> "._('Please wait')."... "._('starting up containers');
$cpus = cpu_list();
// adjust the text color in log window
$fgcolor = in_array($theme,['white','azure']) ? '#1c1c1c' : '#f2f2f2';
exec("sed -ri 's/^\.logLine\{color:#......;/.logLine{color:$fgcolor;/' $docroot/plugins/dynamix.docker.manager/log.htm >/dev/null &");
?>
<link type="text/css" rel="stylesheet" href="<?autov('/webGui/styles/jquery.ui.css')?>">
<link type="text/css" rel="stylesheet" href="<?autov('/webGui/styles/jquery.switchbutton.css')?>">
<link type="text/css" rel="stylesheet" href="<?autov("/plugins/dynamix.docker.manager/styles/style-$theme.css")?>">
<style>
.basic{display:block}
.advanced{display:none;white-space:nowrap}
.dockerhandle{cursor:grab;}
.log{cursor:zoom-in}
.exec{cursor:pointer}
table#docker_containers{text-align:left}
th.five{width:5%}
th.nine{width:9%}
th.load{width:140px}
input.wait{width:24px;margin:0 4px;padding:0 5px;border:none;box-shadow:none;background-color:transparent}
table tbody td{line-height:normal}
</style>
<table id="docker_containers" class="tablesorter shift">
<thead><tr><th><a href="#" style="cursor:hand;margin-left:12px;display:inline-block;width:32px" onclick="resetSorting()" title="_(Reset sorting)_"><i class="fa fa-th-list"></i></a>_(Application)_</th><th>_(Version)_</th><th>_(Network)_</th><th>_(Port Mappings)_ <small>(_(App to Host)_)</small></th><th>_(Volume Mappings)_ <small>(_(App to Host)_)</small></th><th class="load advanced">_(CPU & Memory load)_</th><th class="nine">_(Autostart)_</th><th class="five">_(Uptime)_</th><th></th></tr></thead>
<thead><tr><th><a id="resetsort" class="nohand" onclick="resetSorting()" title="_(Reset sorting)_"><i class="fa fa-th-list"></i></a>_(Application)_</th><th>_(Version)_</th><th>_(Network)_</th><th>_(Container IP)_</th><th>_(Container Port)_</th><th>_(LAN IP:Port)_</th><th>_(Volume Mappings)_ <small>(_(App to Host)_)</small></th><th class="load advanced">_(CPU & Memory load)_</th><th class="nine">_(Autostart)_</th><th class="five">_(Uptime)_</th></tr></thead>
<tbody id="docker_list"><tr><td colspan='9'></td></tr></tbody>
</table>
<input type="button" onclick="addContainer()" value="_(Add Container)_" style="display:none">
@@ -55,61 +41,83 @@ table tbody td{line-height:normal}
<input type="button" onclick="resumeAll()" value="_(Resume All)_" style="display:none">
<input type="button" onclick="checkAll()" value="_(Check for Updates)_" id="checkAll" style="display:none">
<input type="button" onclick="updateAll()" value="_(Update All)_" id="updateAll" style="display:none">
<input type="button" onclick="sizes()" value="_(Container Size)_" style="display:none">
<input type="button" onclick="contSizes()" value="_(Container Size)_" style="display:none">
<div id="iframe-popup" style="display:none;-webkit-overflow-scrolling:touch;"></div>
<script src="<?autov('/webGui/javascript/jquery.switchbutton.js')?>"></script>
<script src="<?autov('/plugins/dynamix.docker.manager/javascript/docker.js')?>"></script>
<script>
var docker = [];
<?if (!$tabbed):?>
$('#title').append("<span id='busy' class='red-text strong' style='display:none;margin-left:40px'><?=$busy?></span>");
$('.title').append("<span id='busy' class='red-text strong' style='display:none;margin-left:40px'><?=$busy?></span>");
<?else:?>
$('.tabs').append("<span id='busy' class='red-text strong' style='display:none;position:relative;top:<?=$top?>px;left:40px;font-size:1.4rem;letter-spacing:2px'><?=$busy?></span>");
<?endif;?>
<?if ($display['resize']):?>
<?if (_var($display,'resize')):?>
function resize() {
var width = [];
$('#docker_list').height(Math.max(window.innerHeight-340,330));
$('#docker_containers thead,#docker_containers tbody').removeClass('fixed');
$('#docker_containers tbody tr:first-child td').each(function(){width.push($(this).width());});
$('#docker_containers thead tr th').each(function(i){$(this).width(width[i]);});
$('#docker_containers tbody tr td').each(function(i){$(this).width(width[i]);});
$('#docker_containers thead tr th').each(function(){$(this).width($(this).width());});
$('#docker_containers tbody tr td').each(function(){$(this).width($(this).width());});
$('#docker_containers thead,#docker_containers tbody').addClass('fixed');
}
<?endif;?>
function resetSorting() {
if ($.cookie('lockbutton')==null) return;
$('input[type=button]').prop('disabled',true);
$.post('/plugins/dynamix.docker.manager/include/UserPrefs.php',{reset:true},function(){loadlist();});
}
function listview() {
var more = $.cookie('docker_listview_mode')=='advanced';
<?if(($dockercfg['DOCKER_READMORE']??'yes') === 'yes'):?>
$('.docker_readmore').readmore({maxHeight:32,moreLink:"<a href='#' style='text-align:center'><i class='fa fa-chevron-down'></i></a>",lessLink:"<a href='#' style='text-align:center'><i class='fa fa-chevron-up'></i></a>"});
<?endif;?>
$('input.autostart').each(function(){
var wait = $('#'+$(this).prop('id').replace('auto','wait'));
var auto = $(this).prop('checked');
if (auto && more) wait.show(); else wait.hide();
});
}
var sortableHelper = function(e,i){
i.children().each(function(){
$(this).width($(this).width());
});
return i;
};
function loadlist(init) {
timers.docker = setTimeout(function(){$('div.spinner.fixed').show('slow');},500);
$.get('/plugins/dynamix.docker.manager/include/DockerContainers.php',function(d) {
clearTimeout(timers.docker);
var data = d.split(/\0/);
$('#docker_list').html(data[0]).sortable({helper:sortableHelper,handle:'.dockerhandle',items:'tr.sortable',cursor:'move',axis:'y',containment:'parent',cancel:'span.docker_readmore,input',delay:100,opacity:0.5,zIndex:9999,
function LockButton() {
if ($.cookie('lockbutton')==null) {
$.cookie('lockbutton','lockbutton');
$('#resetsort').removeClass('nohand').addClass('hand');
$('i.mover').show();
$('#docker_list .sortable').css({'cursor':'move'});
<?if ($themes1):?>
$('div.nav-item.LockButton').find('a').prop('title',"_(Lock sortable items)_");
$('div.nav-item.LockButton').find('b').removeClass('icon-u-lock green-text').addClass('icon-u-lock-open red-text');
<?endif;?>
$('div.nav-item.LockButton').find('span').text("_(Lock sortable items)_");
$('#docker_list').sortable({helper:'clone',items:'.sortable',cursor:'grab',axis:'y',containment:'parent',cancel:'span.docker_readmore,input',delay:100,opacity:0.5,zIndex:9999,forcePlaceholderSize:true,
update:function(e,ui){
var row = $('#docker_list').find('tr:first');
var names = ''; var index = '';
row.parent().children().find('td.ct-name').each(function(){names+=$(this).find('.appname').text()+';';index+=$(this).parent().parent().children().index($(this).parent())+';';});
$.post('/plugins/dynamix.docker.manager/include/UserPrefs.php',{names:names,index:index});
}});
} else {
$.removeCookie('lockbutton');
$('#resetsort').removeClass('hand').addClass('nohand');
$('i.mover').hide();
$('#docker_list .sortable').css({'cursor':'default'});
<?if ($themes1):?>
$('div.nav-item.LockButton').find('a').prop('title',"_(Unlock sortable items)_");
$('div.nav-item.LockButton').find('b').removeClass('icon-u-lock-open red-text').addClass('icon-u-lock green-text');
<?endif;?>
$('div.nav-item.LockButton').find('span').text("_(Unlock sortable items)_");
$('#docker_list').sortable('destroy');
}
}
function loadlist(init) {
timers.docker = setTimeout(function(){$('div.spinner.fixed').show('slow');},500);
docker = [];
$.get('/plugins/dynamix.docker.manager/include/DockerContainers.php',function(d) {
clearTimeout(timers.docker);
var data = d.split(/\0/);
$('#docker_list').html(data[0]);
$('head').append('<script>'+data[1]+'<\/script>');
<?if ($display['resize']):?>
<?if (_var($display,'resize')):?>
resize();
if (init) $(window).bind('resize',function(){resize();});
<?endif;?>
@@ -128,7 +136,6 @@ function loadlist(init) {
$.post('/plugins/dynamix.docker.manager/include/UpdateConfig.php',{action:'wait',container:$(this).attr('container'),wait:$(this).val()});
});
if ($.cookie('docker_listview_mode')=='advanced') {$('.advanced').show(); $('.basic').hide();}
context.init({preventDoubleContext:false,left:true,above:false});
$('input[type=button]').prop('disabled',false).show('slow');
var update = false, rebuild = false;
for (var i=0,ct; ct=docker[i]; i++) {
@@ -142,8 +149,10 @@ function loadlist(init) {
if (rebuild) rebuildAll();
});
}
function sizes() {
openBox("/plugins/dynamix.docker.manager/include/ContainerSize.php","_(Container Size)_",600,600);
function contSizes() {
// show spinner over window
$('div.spinner.fixed').css({'z-index':'100000'}).show();
openPlugin('container_size', "_(Container Size)_");
}
var dockerload = new NchanSubscriber('/sub/dockerload',{subscriber:'websocket'});
dockerload.on('message', function(msg){
@@ -151,7 +160,7 @@ dockerload.on('message', function(msg){
for (var i=0,row; row=data[i]; i++) {
var id = row.split(';');
var w1 = Math.round(Math.min(id[1].slice(0,-1)/<?=count($cpus)*count(preg_split('/[,-]/',$cpus[0]))?>,100)*100)/100+'%';
$('.cpu-'+id[0]).text(w1.replace('.','<?=$display['number'][0]?>'));
$('.cpu-'+id[0]).text(w1.replace('.','<?=_var($display,'number','.,')[0]?>'));
$('.mem-'+id[0]).text(id[2]);
$('#cpu-'+id[0]).css('width',w1);
}
@@ -165,7 +174,13 @@ $(function() {
$.cookie('docker_listview_mode',$('.advancedview').is(':checked')?'advanced':'basic',{expires:3650});
listview();
});
$.removeCookie('lockbutton');
loadlist(true);
dockerload.start();
});
window.onunload = function(){
dockerload.stop();
}
</script>

View File

@@ -4,9 +4,9 @@ Icon="icon-docker"
Tag="icon-docker"
---
<?PHP
/* Copyright 2005-2021, Lime Technology
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
* Copyright 2014-2021, Guilherme Jardim, Eric Schultz, Jon Panozzo.
* Copyright 2012-2021, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
@@ -21,7 +21,10 @@ Tag="icon-docker"
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
$DockerClient = new DockerClient();
$DockerStopped = pgrep('dockerd')===false;
exec("/etc/rc.d/rc.docker status >/dev/null",$dummy,$DockerStopped);
exec("ls --indicator-style=none /sys/class/net|awk '/^br[0-9]+$/'",$nics);
$bridge = count($nics)>0;
function strposX($s, $c, $n=1) {
$p = 0;
@@ -46,10 +49,11 @@ foreach ($other as $network) {
}
}
$include = $include6 = $address = $address6 = $gateway = $gateway6 = $unset = $protocol = [];
$wide = false;
foreach ($custom as $network) {
if (in_array($network,$slaves)) continue;
$ip4 = exec("ip -4 addr show $network|awk '/inet /{print $2;exit}'");
$ip6 = exec("ip -6 addr show $network scope global|awk '/inet6 /{print $2;exit}'");
$ip4 = exec("ip -br -4 addr show $network scope global|awk '{print $3}'");
$ip6 = exec("ip -br -6 addr show $network scope global|awk '{print $3}'");
$gw4 = $ip4 ? exec("ip -4 route show dev $network default|awk '{print $3;exit}'") : '';
$gw6 = $ip6 ? exec("ip -6 route show dev $network default|awk '{print $3;exit}'") : '';
$route4 = $ip4 ? exec("ip -4 route show dev $network $ip4|awk '{print $1;exit}'") : '';
@@ -57,9 +61,9 @@ foreach ($custom as $network) {
[$eth,$vlan] = my_explode('.',$network);
$eth = str_replace(['bond','br'],'eth',$eth);
if (!$vlan) {
$protocol[$network] = $$eth['PROTOCOL:0'] ?? 'ipv4';
$protocol[$network] = _var($$eth,'PROTOCOL:0','ipv4');
} else {
foreach ($$eth as $key => $value) if (strpos($key,'VLANID')!==false && $value==$vlan) {$protocol[$network] = $$eth[str_replace('VLANID','PROTOCOL',$key)] ?? 'ipv4'; break;}
foreach ($$eth as $key => $value) if (strpos($key,'VLANID')!==false && $value==$vlan) {$protocol[$network] = _var($$eth,str_replace('VLANID','PROTOCOL',$key),'ipv4'); break;}
}
if ($ip4 && $route4) {
$include[$network] = $route4;
@@ -99,34 +103,12 @@ function base_net($route) {
return substr(explode('/',$route)[0],0,-2);
}
$bgcolor = strstr('white,azure',$display['theme']) ? '#f2f2f2' : '#1c1c1c';
//Check if docker.cfg not exists
$no_dockercfg = !is_file('/boot/config/docker.cfg');
?>
<link type="text/css" rel="stylesheet" href="<?autov('/webGui/styles/jquery.filetree.css')?>">
<link type="text/css" rel="stylesheet" href="<?autov('/webGui/styles/jquery.switchbutton.css')?>">
<style>
.errortext{color:#EF3D47;display:none;margin-left:20px}
.fileTree{background:<?=$bgcolor?>;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
.basic{display:inline-block}
.advanced{display:none}
select.mask{min-width:0;margin:0 10px 0 4px}
select.net{min-width:0;margin:0 4px 0 2px}
select option.hide{display:none}
input.ip4{width:100px;margin:0 4px 0 1px}
input.ip6{width:140px;margin:0 4px}
input.gw4{width:100px;margin:0 4px 0 1px}
input.gw6{width:160px;margin:0 4px}
input.pool6{width:40px;margin:0 4px 0 1px}
span.net{margin-left:4px;margin-right:2px}
span.ip4{display:inline-block;width:260px}
span.ip6{display:inline-block;width:310px}
span.gw4{display:inline-block;width:200px}
span.gw6{display:inline-block;width:270px}
span.nonexist{margin-left:20px}
<?if (strstr('white,azure',$display['theme'])):?>
span.disabled{color:#B0B0B0}
<?else:?>
span.disabled{color:#404040}
<?endif;?>
</style>
<span class="status vhshift"><input type="checkbox" class="advancedview"></span>
<form markdown="1" id="settingsForm" name="settingsForm" method="POST" action="/update.php" target="progressFrame" onsubmit="return prepareDocker(this)">
@@ -136,47 +118,63 @@ span.disabled{color:#404040}
<input type="hidden" name="#arg[1]" value="cmdStatus=Apply">
<input type="hidden" name="#cleanup" value="true">
<input type="hidden" name="DOCKER_CUSTOM_NETWORKS" value="<?=implode(' ',$unset)?> ">
<input type="hidden" name="DOCKER_IMAGE_FILE" value="<?=$dockercfg['DOCKER_IMAGE_FILE']?>">
<input type="hidden" name="DOCKER_IMAGE_FILE" value="<?=_var($dockercfg,'DOCKER_IMAGE_FILE')?>">
_(Enable Docker)_:
: <select id="DOCKER_ENABLED" name="DOCKER_ENABLED">
<?=mk_option($dockercfg['DOCKER_ENABLED'], 'no', _('No'))?>
<?=mk_option($dockercfg['DOCKER_ENABLED'], 'yes', _('Yes'))?>
<?=mk_option(_var($dockercfg,'DOCKER_ENABLED'), 'no', _('No'))?>
<?=mk_option(_var($dockercfg,'DOCKER_ENABLED'), 'yes', _('Yes'))?>
</select>
<?if ($var['fsState'] != "Started"):?>
<span id="arraystopped"><i class="fa fa-warning icon warning"></i> <?=($dockercfg['DOCKER_ENABLED']=='yes') ? '_(Docker will be available after Array is Started)_' : '_(Apply to activate Docker after Array is Started)_'?></span>
<?elseif (!is_dir(dirname($dockercfg['DOCKER_IMAGE_FILE'])) || !is_dir($dockercfg['DOCKER_APP_CONFIG_PATH'])):?>
<?if (_var($var,'fsState')!="Started"):?>
<span id="arraystopped"><i class="fa fa-warning icon warning"></i> <?=(_var($dockercfg,'DOCKER_ENABLED')=='yes') ? '_(Docker will be available after Array is Started)_' : '_(Apply to activate Docker after Array is Started)_'?></span>
<?elseif (!is_dir(dirname(_var($dockercfg,'DOCKER_IMAGE_FILE'))) || !is_dir(_var($dockercfg,'DOCKER_APP_CONFIG_PATH'))):?>
<span class="basic"><i class="fa fa-warning icon warning"></i> _(One or more paths do not exist)_ (<a href="#" onclick="$('.advancedview').switchButton('option','checked',true); return false">_(view)_</a>)</span>
<?endif;?>
:docker_enable_help:
_(Docker Stop Timeout)_:
: <input class='narrow' id="DOCKER_TIMEOUT" type="number" name="DOCKER_TIMEOUT" min='1' value="<?=$dockercfg['DOCKER_TIMEOUT']?>">_(seconds)_
_(Enable container table readmore-js)_:
: <select id="DOCKER_READMORE" name="DOCKER_READMORE">
<?=mk_option(_var($dockercfg,'DOCKER_READMORE'), 'yes', _('Yes'))?>
<?=mk_option(_var($dockercfg,'DOCKER_READMORE'), 'no', _('No'))?>
</select>
:docker_readmore_help:
_(Docker Stop Timeout)_ (_(seconds)_):
: <input class='narrow' id="DOCKER_TIMEOUT" type="number" name="DOCKER_TIMEOUT" min='1' value="<?=_var($dockercfg,'DOCKER_TIMEOUT')?>">
:docker_timeout_help:
_(Docker PID Limit)_:
: <input class='narrow' id="DOCKER_PID_LIMIT" type="number" name="DOCKER_PID_LIMIT" min='1' value="<?=_var($dockercfg,'DOCKER_PID_LIMIT')?>" placeholder="2048">
:docker_pid_limit_help:
<?if ($DockerStopped):?>
_(Docker data-root)_:
: <select id="DOCKER_IMAGE_TYPE" name="DOCKER_IMAGE_TYPE" onchange="updateLocation(this.value)">
<?=mk_option($dockercfg['DOCKER_IMAGE_TYPE'], '', _('btrfs vDisk'))?>
<?=mk_option($dockercfg['DOCKER_IMAGE_TYPE'], 'xfs', _('xfs vDisk'))?>
<?=mk_option($dockercfg['DOCKER_IMAGE_TYPE'], 'folder', _('directory'))?>
<?=mk_option(_var($dockercfg,'DOCKER_IMAGE_TYPE'), '', _('btrfs vDisk'))?>
<?=mk_option(_var($dockercfg,'DOCKER_IMAGE_TYPE'), 'xfs', _('xfs vDisk'))?>
<?=mk_option(_var($dockercfg,'DOCKER_IMAGE_TYPE'), 'folder', _('directory'))?>
</select>
:docker_vdisk_type_help:
<div markdown="1" id="vdisk_file" style="display:none">
_(Docker vDisk size)_:
: <input id="DOCKER_IMAGE_SIZE" type="number" name="DOCKER_IMAGE_SIZE" value="<?=$dockercfg['DOCKER_IMAGE_SIZE']?>" class="narrow" required>GB<span id="SIZE_ERROR" class="errortext"></span>
: <input id="DOCKER_IMAGE_SIZE" type="number" name="DOCKER_IMAGE_SIZE" value="<?=_var($dockercfg,'DOCKER_IMAGE_SIZE')?>" class="narrow" required>GB<span id="SIZE_ERROR" class="errortext"></span>
:docker_vdisk_size_help:
_(Docker vDisk location)_:
: <input type="text" id="DOCKER_IMAGE_FILE1" name="DOCKER_IMAGE_FILE1" autocomplete="off" spellcheck="false" value="<?=$dockercfg['DOCKER_IMAGE_FILE']?>" placeholder="_(e.g.)_ /mnt/user/system/docker.img" data-pickcloseonfile="true" data-pickfilter="img" data-pickroot="/mnt" data-pickfolders="true" disabled required pattern="^[^\\]*(docker-xfs\.img|docker\.img)$">
: <input type="text" id="DOCKER_IMAGE_FILE1" name="DOCKER_IMAGE_FILE1" autocomplete="off" spellcheck="false" value="<?=_var($dockercfg,'DOCKER_IMAGE_FILE')?>" placeholder="_(e.g.)_ /mnt/user/system/docker.img" data-pickcloseonfile="true" data-pickfilter="img" data-pickroot="/mnt" data-pickfolders="true" disabled required pattern="^[^\\]*(docker-xfs\.img|docker\.img)$">
<span class="deleteLabel"><label><input type="checkbox" class="deleteCheckbox"> _(Delete vDisk file)_</label></span>
<?if ($var['fsState'] != "Started"):?><span><i class="fa fa-warning icon warning"></i> _(Modify with caution: unable to validate path until Array is Started)_</span>
<?elseif (!is_dir(dirname($dockercfg['DOCKER_IMAGE_FILE']))):?><span class="nonexist"><i class="fa fa-warning icon warning"></i> _(Path does not exist)_</span>
<?elseif (!is_dir(dirname(_var($dockercfg,'DOCKER_IMAGE_FILE')))):?><span class="nonexist"><i class="fa fa-warning icon warning"></i> _(Path does not exist)_</span>
<?endif;?><span id="IMAGE_ERROR1" class="errortext"></span>
:docker_vdisk_location_help:
@@ -184,20 +182,37 @@ _(Docker vDisk location)_:
</div>
<div markdown="1" id="vdisk_dir" style="display:none">
_(Docker directory)_:
: <input type="text" id="DOCKER_IMAGE_FILE2" name="DOCKER_IMAGE_FILE2" autocomplete="off" spellcheck="false" value="<?=$dockercfg['DOCKER_IMAGE_FILE']?>" placeholder="_(e.g.)_ /mnt/user/system/docker" data-pickcloseonfile="true" data-pickfilter="HIDE_FILES_FILTER" data-pickroot="/mnt" data-pickfolders="true" disabled required pattern="^[^\\]*/$">
: <input type="text" id="DOCKER_IMAGE_FILE2" name="DOCKER_IMAGE_FILE2" autocomplete="off" spellcheck="false" value="<?=_var($dockercfg,'DOCKER_IMAGE_FILE')?>" placeholder="_(e.g.)_ /mnt/user/system/docker" data-pickcloseonfile="true" data-pickfilter="HIDE_FILES_FILTER" data-pickroot="/mnt" data-pickfolders="true" disabled required pattern="^[^\\]*/$">
<span class="deleteLabel"><label><input type="checkbox" class="deleteCheckbox"> _(Delete directory)_</label></span>
<?if ($var['fsState'] != "Started"):?><span><i class="fa fa-warning icon warning"></i> _(Modify with caution: unable to validate path until Array is Started)_</span>
<?elseif (!is_dir(dirname($dockercfg['DOCKER_IMAGE_FILE']))):?><span class="nonexist"><i class="fa fa-warning icon warning"></i> _(Path does not exist)_</span>
<?elseif (!is_dir(dirname(_var($dockercfg,'DOCKER_IMAGE_FILE')))):?><span class="nonexist"><i class="fa fa-warning icon warning"></i> _(Path does not exist)_</span>
<?endif;?><span id="IMAGE_ERROR2" class="errortext"></span>
:docker_vdisk_directory_help:
</div>
<div markdown="1" id="backingfs_type" style="display:none">
_(Docker storage driver)_:
: <select id="DOCKER_BACKINGFS" name="DOCKER_BACKINGFS" onchange="updateBackingFS(this.value)">
<?=mk_option(_var($dockercfg,'DOCKER_BACKINGFS'), 'overlay2', _('overlay2'))?>
<?=mk_option(_var($dockercfg,'DOCKER_BACKINGFS'), 'native', _('native'))?>
</select>
<?if ($var['fsState'] != "Started"):?>
<span id="WARNING_BACKINGFS" style="display:none;"><i class="fa fa-warning icon warning"></i>_(Only modify if this is a new installation since this can lead to unwanted behaviour!)_</span>
<?elseif (is_dir(_var($dockercfg,'DOCKER_IMAGE_FILE'))):?>
<span id="WARNING_BACKINGFS" style="display:none;"><i class="fa fa-warning icon warning"></i>_(Switching the Storage Driver requires to delete and rebuild the Docker directory manually!)_</span>
<?endif;?>
:docker_storage_driver_help:
</div>
_(Default appdata storage location)_:
: <input type="text" id="DOCKER_APP_CONFIG_PATH" name="DOCKER_APP_CONFIG_PATH" autocomplete="off" spellcheck="false" value="<?=$dockercfg['DOCKER_APP_CONFIG_PATH']?>" placeholder="_(e.g.)_ /mnt/user/appdata/" data-pickfilter="HIDE_FILES_FILTER" data-pickroot="<?=is_dir('/mnt/user')?'/mnt/user':'/mnt'?>" data-pickfolders="true" pattern="^[^\\]*/$">
: <input type="text" id="DOCKER_APP_CONFIG_PATH" name="DOCKER_APP_CONFIG_PATH" autocomplete="off" spellcheck="false" value="<?=_var($dockercfg,'DOCKER_APP_CONFIG_PATH')?>" placeholder="_(e.g.)_ /mnt/user/appdata/" data-pickfilter="HIDE_FILES_FILTER" data-pickroot="/mnt" data-pickfolders="true" pattern="^[^\\]*/$">
<?if ($var['fsState'] != "Started"):?>
<span><i class="fa fa-warning icon warning"></i> _(Modify with caution: unable to validate path until Array is Started)_</span>
<?elseif (!is_dir($dockercfg['DOCKER_APP_CONFIG_PATH'])):?>
<?elseif (!is_dir(_var($dockercfg,'DOCKER_APP_CONFIG_PATH'))):?>
<span class="nonexist"><i class="fa fa-warning icon warning"></i> _(Path does not exist)_</span>
<?endif;?>
@@ -206,8 +221,8 @@ _(Default appdata storage location)_:
<div markdown="1" class="advanced">
_(Docker LOG rotation)_:
: <select name="DOCKER_LOG_ROTATION" onchange="showLogOptions(this.value)">
<?=mk_option($dockercfg['DOCKER_LOG_ROTATION'], 'no', _('Disabled'))?>
<?=mk_option($dockercfg['DOCKER_LOG_ROTATION'], 'yes', _('Enabled'))?>
<?=mk_option(_var($dockercfg,'DOCKER_LOG_ROTATION'), 'no', _('Disabled'))?>
<?=mk_option(_var($dockercfg,'DOCKER_LOG_ROTATION'), 'yes', _('Enabled'))?>
</select>
:docker_log_rotation_help:
@@ -215,21 +230,21 @@ _(Docker LOG rotation)_:
<div markdown="1" id="DOCKER_LOG_OPTIONS" style="display:none">
_(Docker LOG maximum file size)_:
: <select name="DOCKER_LOG_SIZE">
<?=mk_option($dockercfg['DOCKER_LOG_SIZE'], '10m', '10 '._('MB'))?>
<?=mk_option($dockercfg['DOCKER_LOG_SIZE'], '20m', '20 '._('MB'))?>
<?=mk_option($dockercfg['DOCKER_LOG_SIZE'], '50m', '50 '._('MB'))?>
<?=mk_option($dockercfg['DOCKER_LOG_SIZE'], '100m', '100 '._('MB'))?>
<?=mk_option($dockercfg['DOCKER_LOG_SIZE'], '500m', '500 '._('MB'))?>
<?=mk_option($dockercfg['DOCKER_LOG_SIZE'], '1g', '1000 '._('MB'))?>
<?=mk_option(_var($dockercfg,'DOCKER_LOG_SIZE'), '10m', '10 '._('MB'))?>
<?=mk_option(_var($dockercfg,'DOCKER_LOG_SIZE'), '20m', '20 '._('MB'))?>
<?=mk_option(_var($dockercfg,'DOCKER_LOG_SIZE'), '50m', '50 '._('MB'))?>
<?=mk_option(_var($dockercfg,'DOCKER_LOG_SIZE'), '100m', '100 '._('MB'))?>
<?=mk_option(_var($dockercfg,'DOCKER_LOG_SIZE'), '500m', '500 '._('MB'))?>
<?=mk_option(_var($dockercfg,'DOCKER_LOG_SIZE'), '1g', '1000 '._('MB'))?>
</select>
:docker_log_file_size_help:
_(Docker LOG number of files)_:
: <select name="DOCKER_LOG_FILES">
<?=mk_option($dockercfg['DOCKER_LOG_FILES'], '1', '1')?>
<?=mk_option($dockercfg['DOCKER_LOG_FILES'], '2', '2')?>
<?=mk_option($dockercfg['DOCKER_LOG_FILES'], '3', '3')?>
<?=mk_option(_var($dockercfg,'DOCKER_LOG_FILES'), '1', '1')?>
<?=mk_option(_var($dockercfg,'DOCKER_LOG_FILES'), '2', '2')?>
<?=mk_option(_var($dockercfg,'DOCKER_LOG_FILES'), '3', '3')?>
</select>
:docker_log_file_number_help:
@@ -237,30 +252,32 @@ _(Docker LOG number of files)_:
</div>
_(Template Authoring Mode)_:
: <select id="DOCKER_AUTHORING_MODE" name="DOCKER_AUTHORING_MODE">
<?=mk_option($dockercfg['DOCKER_AUTHORING_MODE'], 'no', _('No'))?>
<?=mk_option($dockercfg['DOCKER_AUTHORING_MODE'], 'yes', _('Yes'))?>
<?=mk_option(_var($dockercfg,'DOCKER_AUTHORING_MODE'), 'no', _('No'))?>
<?=mk_option(_var($dockercfg,'DOCKER_AUTHORING_MODE'), 'yes', _('Yes'))?>
</select>
:docker_authoring_mode_help:
_(Docker custom network type)_:
: <select name="DOCKER_NETWORK_TYPE">
<?=mk_option($dockercfg['DOCKER_NETWORK_TYPE'], '', _('macvlan'))?>
<?=mk_option($dockercfg['DOCKER_NETWORK_TYPE'], '1', _('ipvlan'))?>
</select>
<?=mk_option(_var($dockercfg,'DOCKER_NETWORK_TYPE'), '1', _('ipvlan'), $bridge?'':'disabled')?>
<?=mk_option(_var($dockercfg,'DOCKER_NETWORK_TYPE'), '', _('macvlan'), $bridge?'':'selected')?>
</select>&nbsp;_(Please read the Help carefully)_. _(Misconfiguration can cause problems)_.
:docker_custom_network_type_help:
_(Host access to custom networks)_:
: <select name="DOCKER_ALLOW_ACCESS">
<?=mk_option($dockercfg['DOCKER_ALLOW_ACCESS'], '', _('Disabled'))?>
<?=mk_option($dockercfg['DOCKER_ALLOW_ACCESS'], 'yes', _('Enabled'))?>
</select>
<?=mk_option(_var($dockercfg,'DOCKER_ALLOW_ACCESS'), '', _('Disabled'))?>
<?=mk_option(_var($dockercfg,'DOCKER_ALLOW_ACCESS'), 'yes', _('Enabled'))?>
</select>&nbsp;_(Make sure you understand what you are doing before enabling)_.
:docker_custom_network_access_help:
_(Preserve user defined networks)_:
: <select name="DOCKER_USER_NETWORKS">
<?=mk_option($dockercfg['DOCKER_USER_NETWORKS'], 'remove', _('No'))?>
<?=mk_option($dockercfg['DOCKER_USER_NETWORKS'], 'preserve', _('Yes'))?>
<?=mk_option(_var($dockercfg,'DOCKER_USER_NETWORKS'), 'remove', _('No'))?>
<?=mk_option(_var($dockercfg,'DOCKER_USER_NETWORKS'), 'preserve', _('Yes'))?>
</select>
:docker_user_defined_network_help:
@@ -272,13 +289,13 @@ $docker_auto = "DOCKER_AUTO_$net";
$docker_dhcp = "DOCKER_DHCP_$net";
?>
<input type="hidden" name="<?=$docker_auto?>" value="<?=$dockercfg[$docker_auto]?>">
<input type="hidden" name="<?=$docker_auto?>" value="<?=_var($dockercfg,$docker_auto)?>">
_(IPv4 custom network on interface)_ <?=$network?> (_(optional)_):
<?
$auto = $dockercfg[$docker_auto]!='no';
$auto = _var($dockercfg,$docker_auto)!='no';
$autoDisabled = $auto ? '':'disabled';
$dhcp = $dockercfg[$docker_dhcp] ?? false;
$dhcp = _var($dockercfg,$docker_dhcp);
$dhcpDisabled = ($auto && $dhcp) ? '':'disabled';
$net = base_min($route);
$max = base_max($route);
@@ -302,8 +319,8 @@ _(IPv4 custom network on interface)_ <?=$network?> (_(optional)_):
<?
for ($b=$box; $b<=3; $b++) {
switch ($b) {
case 1: $step = $size/65536%256; break;
case 2: $step = $size/256%256; break;
case 1: $step = floor($size/65536)%256; break;
case 2: $step = floor($size/256)%256; break;
case 3: $step = $size%256; break;
}
if ($step===0) $step = 256;
@@ -326,8 +343,8 @@ _(IPv4 custom network on interface)_ <?=$network?> (_(optional)_):
<?foreach ($unset as $network):?>
<?
$port = normalize($network);
[$subnet,$mask] = my_explode('/',$dockercfg["DOCKER_SUBNET_$port"] ?? '');
[$range,$size] = my_explode('/',$dockercfg["DOCKER_RANGE_$port"] ?? '');
[$subnet,$mask] = my_explode('/',_var($dockercfg,"DOCKER_SUBNET_$port"));
[$range,$size] = my_explode('/',_var($dockercfg,"DOCKER_RANGE_$port"));
$disabled = $subnet ? '':'disabled';
$dhcpDisabled = $range ? '':'disabled';
?>
@@ -339,7 +356,7 @@ _(IPv4 custom network on interface)_ <?=$network?> (_(optional)_):
<select id="DOCKER_CUSTOM_<?=$port?>_mask" name="DOCKER_MASK_<?=$port?>" class="mask"<?=$disabled?>>
<?for ($m=16; $m<=30; $m++) echo mk_option($mask?:24,$m,$m)?></select>
</span>
<span class="<?=$gw4class?>">**_(Gateway)_:** <input type="text" id="DOCKER_CUSTOM_<?=$port?>_gw" name="DOCKER_GATEWAY_<?=$port?>" class="ip4" value="<?=$dockercfg["DOCKER_GATEWAY_$port"]?>" title="_(IPv4 address A.B.C.D)_"<?=$disabled?>></span>
<span class="<?=$gw4class?>">**_(Gateway)_:** <input type="text" id="DOCKER_CUSTOM_<?=$port?>_gw" name="DOCKER_GATEWAY_<?=$port?>" class="ip4" value="<?=_var($dockercfg,"DOCKER_GATEWAY_$port")?>" title="_(IPv4 address A.B.C.D)_"<?=$disabled?>></span>
<input type="checkbox" id="DOCKER_CUSTOM_<?=$port?>_dhcp" onchange="customDHCP(this.id,4)"<?=$subnet?'checked':''?><?=$dhcpDisabled?>>
**_(DHCP pool)_:** <input type="text" id="DOCKER_CUSTOM_<?=$port?>_pool" name="DOCKER_RANGE_<?=$port?>" class="ip4" value="<?=$range?>" title="_(IPv4 address A.B.C.D)_"<?=$disabled?>>/
<select id="DOCKER_CUSTOM_<?=$port?>_size" name="DOCKER_SIZE_<?=$port?>" class="mask" onchange="changeHosts(this.id,this.value)"<?=$disabled?>>
@@ -364,9 +381,9 @@ $docker_dhcp6 = "DOCKER_DHCP6_$net";
_(IPv6 custom network on interface)_ <?=$network?> (_(optional)_):
<?
$auto6 = $dockercfg[$docker_auto]!='no';
$auto6 = _var($dockercfg,$docker_auto)!='no';
$auto6Disabled = $auto6 ? '':'disabled';
$dhcp6 = $dockercfg[$docker_dhcp6] ?? false;
$dhcp6 = _var($dockercfg,$docker_dhcp6);
$dhcp6Disabled = ($auto6 && $dhcp6) ? '':'disabled';
$net = base_net($route);
$mask = explode('/',$route)[1];
@@ -394,8 +411,8 @@ _(IPv6 custom network on interface)_ <?=$network?> (_(optional)_):
<?foreach ($unset as $network):?>
<?
$port = normalize($network);
[$subnet6,$mask6] = my_explode('/',$dockercfg["DOCKER_SUBNET6_$port"] ?? '');
[$range6,$size6] = my_explode('/',$dockercfg["DOCKER_RANGE6_$port"] ?? '');
[$subnet6,$mask6] = my_explode('/',_var($dockercfg,"DOCKER_SUBNET6_$port"));
[$range6,$size6] = my_explode('/',_var($dockercfg,"DOCKER_RANGE6_$port"));
$disabled = $subnet6 ? '':'disabled';
$dhcpDisabled = $range6 ? '':'disabled';
?>
@@ -406,7 +423,7 @@ _(IPv6 custom network on interface)_ <?=$network?> (_(optional)_):
<span class="ip6">**_(Subnet)_:**<input type="text" id="DOCKER_CUSTOM6_<?=$port?>_net" name="DOCKER_SUBNET6_<?=$port?>" class="ip6" value="<?=$subnet6?>" title="_(IPv6 address nnnn:xxxx::yyyy)_"<?=$disabled?>>/
<select id="DOCKER_CUSTOM6_<?=$port?>_mask" name="DOCKER_MASK6_<?=$port?>" class="mask"<?=$disabled?>>
<?for ($m=64; $m<=120; $m+=8) echo mk_option($mask6?:64,$m,$m)?></select></span>
<span class="gw6">**_(Gateway)_:**<input type="text" id="DOCKER_CUSTOM6_<?=$port?>_gw" name="DOCKER_GATEWAY6_<?=$port?>" class="gw6" value="<?=$dockercfg["DOCKER_GATEWAY6_$port"]?>" title="_(IPv6 address nnnn:xxxx::yyyy)_"<?=$disabled?>></span>
<span class="gw6">**_(Gateway)_:**<input type="text" id="DOCKER_CUSTOM6_<?=$port?>_gw" name="DOCKER_GATEWAY6_<?=$port?>" class="gw6" value="<?=_var($dockercfg,"DOCKER_GATEWAY6_$port")?>" title="_(IPv6 address nnnn:xxxx::yyyy)_"<?=$disabled?>></span>
<input type="checkbox" id="DOCKER_CUSTOM6_<?=$port?>_dhcp" onchange="customDHCP(this.id,6)"<?=$subnet6?'checked':''?><?=$dhcpDisabled?>>
**_(DHCP pool)_:**<input type="text" id="DOCKER_CUSTOM6_<?=$port?>_pool" name="DOCKER_RANGE6_<?=$port?>" class="ip6" value="<?=$range6?>" title="_(IPv6 address nnnn:xxxx::yyyy)_"<?=$disabled?>>/
<select id="DOCKER_CUSTOM6_<?=$port?>_size" name="DOCKER_SIZE6_<?=$port?>" class="mask"<?=$disabled?>>
@@ -421,44 +438,52 @@ _(IPv6 custom network on interface)_ <?=$network?> (_(optional)_):
</div>
<?else: /* DOCKER STARTED */?>
_(Docker version)_:
: <?$arrInfo = $DockerClient->getInfo(); echo $arrInfo['Version']?>
:docker_version_help:
<?if (($dockercfg['DOCKER_IMAGE_TYPE'] ?? '')!='folder'):?>
<?if (_var($dockercfg,'DOCKER_IMAGE_TYPE')!='folder'):?>
_(Docker vDisk location)_:
: <?=$dockercfg['DOCKER_IMAGE_FILE']?>
: <?=_var($dockercfg,'DOCKER_IMAGE_FILE')?>
<?else:?>
_(Docker directory)_:
: <?=$dockercfg['DOCKER_IMAGE_FILE']?>
: <?=_var($dockercfg,'DOCKER_IMAGE_FILE')?>
<?endif;?>
:docker_vdisk_location_active_help:
_(Docker storage driver)_:
: <?=_var($dockercfg,'DOCKER_BACKINGFS')?>
:docker_storage_driver_active_help:
_(Default appdata storage location)_:
: <?=$dockercfg['DOCKER_APP_CONFIG_PATH']?>
: <?=_var($dockercfg,'DOCKER_APP_CONFIG_PATH')?>
:docker_appdata_location_active_help:
<div markdown="1" class="advanced">
_(Docker LOG rotation)_:
: <?=$dockercfg['DOCKER_LOG_ROTATION']=='yes' ? _('Enabled') : _('Disabled')?>
: <?=_var($dockercfg,'DOCKER_LOG_ROTATION')=='yes' ? _('Enabled') : _('Disabled')?>
:docker_log_rotation_active_help:
_(Docker custom network type)_:
: <?=$dockercfg['DOCKER_NETWORK_TYPE']=='' ? _('macvlan') : _('ipvlan')?>
: <?=_var($dockercfg,'DOCKER_NETWORK_TYPE')!='1' || !$bridge ? _('macvlan') : _('ipvlan')?>
:docker_custom_network_type_help:
_(Host access to custom networks)_:
: <?=$dockercfg['DOCKER_ALLOW_ACCESS']=='yes' ? _('Enabled') : _('Disabled')?>
: <?=_var($dockercfg,'DOCKER_ALLOW_ACCESS')=='yes' ? _('Enabled') : _('Disabled')?>
:docker_custom_network_active_help:
:docker_custom_network_access_help:
_(Preserve user defined networks)_:
: <?=$dockercfg['DOCKER_USER_NETWORKS']=='preserve' ? _('Yes') : _('No')?>
: <?=_var($dockercfg,'DOCKER_USER_NETWORKS')=='preserve' ? _('Yes') : _('No')?>
:docker_user_defined_network_active_help:
:docker_user_defined_network_help:
<?foreach ($include as $network => $route):?>
<?
@@ -469,7 +494,7 @@ $docker_dhcp = "DOCKER_DHCP_$net";
_(IPv4 custom network on interface)_ <?=$network?>:
: <span class="<?=$gw4class?>">**_(Subnet)_:** <?=$route?></span>
<span class="<?=$gw4class?>">**_(Gateway)_:** <?=$gateway[$network]?></span>
**_(DHCP pool)_:** <?=$dockercfg[$docker_dhcp] ?? "_(not set)_"?><?if ($dockercfg[$docker_dhcp]):?>&nbsp;&nbsp;(<?=pow(2,32-explode('/',$dockercfg[$docker_dhcp])[1])?> _(hosts)_)<?endif;?>
**_(DHCP pool)_:** <?=_var($dockercfg,$docker_dhcp) ?: "_(not set)_"?><?if (isset($dockercfg[$docker_dhcp])):?>&nbsp;&nbsp;(<?=pow(2,32-my_explode('/',$dockercfg[$docker_dhcp])[1])?> _(hosts)_)<?endif;?>
<?endif;?>
<?endforeach;?>
@@ -479,19 +504,19 @@ $port = normalize($network);
[$eth,$vlan] = my_explode('.',$network);
$eth = str_replace(['bond','br'],'eth',$eth);
if (!$vlan) {
$protocol = $$eth['PROTOCOL:0'] ?? 'ipv4';
$protocol = _var($$eth,'PROTOCOL:0','ipv4');
} else {
foreach ($$eth as $key => $value) {
if (strpos($key,'VLANID')!==false && $value==$vlan) {$protocol = $$eth[str_replace('VLANID','PROTOCOL',$key)] ?? 'ipv4'; break;}
if (strpos($key,'VLANID')!==false && $value==$vlan) {$protocol = _var($$eth,str_replace('VLANID','PROTOCOL',$key),'ipv4'); break;}
}
}
[$subnet,$mask] = my_explode('/',$dockercfg["DOCKER_SUBNET_$port"] ?? '');
[$range,$size] = my_explode('/',$dockercfg["DOCKER_RANGE_$port"] ?? '');
[$subnet,$mask] = my_explode('/',_var($dockercfg,"DOCKER_SUBNET_$port"));
[$range,$size] = my_explode('/',_var($dockercfg,"DOCKER_RANGE_$port"));
?>
<?if ($protocol != 'ipv6' && $subnet):?>
_(IPv4 custom network on interface)_ <?=$network?>:
: <span class="<?=$gw4class?>">**_(Subnet)_:** <?=$subnet?>/<?=$mask?></span>
<span class="<?=$gw4class?>">**_(Gateway)_:** <?=$dockercfg["DOCKER_GATEWAY_$port"]?></span>
<span class="<?=$gw4class?>">**_(Gateway)_:** <?=_var($dockercfg,"DOCKER_GATEWAY_$port")?></span>
**_(DHCP pool)_:** <?=$range ? "$range/$size" : "_(not set)_"?><?if ($range):?>&nbsp;&nbsp;(<?=pow(2,32-($size?:25))?> _(hosts)_)<?endif;?>
<?endif;?>
@@ -505,7 +530,7 @@ if (isset($dockercfg[$docker_dhcp6]) || empty($dockercfg["DOCKER_AUTO_$net"])):?
_(IPv6 custom network on interface)_ <?=$network?>:
: <span class="gw6">**_(Subnet)_:** <?=$route?></span>
<span class="gw6">**_(Gateway)_:** <?=$gateway6[$network]?></span>
**_(DHCP pool)_:** <?=$dockercfg[$docker_dhcp6] ?? "_(not set)_"?>
**_(DHCP pool)_:** <?=_var($dockercfg,$docker_dhcp6) ?: "_(not set)_"?>
<?endif;?>
<?endforeach;?>
@@ -515,19 +540,19 @@ $port = normalize($network);
[$eth,$vlan] = my_explode('.',$network);
$eth = str_replace(['bond','br'],'eth',$eth);
if (!$vlan) {
$protocol = $$eth['PROTOCOL:0'] ?? 'ipv4';
$protocol = _var($$eth,'PROTOCOL:0','ipv4');
} else {
foreach ($$eth as $key => $value) {
if (strpos($key,'VLANID')!==false && $value==$vlan) {$protocol = $$eth[str_replace('VLANID','PROTOCOL',$key)] ?? 'ipv4'; break;}
if (strpos($key,'VLANID')!==false && $value==$vlan) {$protocol = _var($$eth,str_replace('VLANID','PROTOCOL',$key),'ipv4'); break;}
}
}
[$subnet6,$mask6] = my_explode('/',$dockercfg["DOCKER_SUBNET6_$port"] ?? '');
[$range6,$size6] = my_explode('/',$dockercfg["DOCKER_RANGE6_$port"] ?? '');
[$subnet6,$mask6] = my_explode('/',_var($dockercfg,"DOCKER_SUBNET6_$port"));
[$range6,$size6] = my_explode('/',_var($dockercfg,"DOCKER_RANGE6_$port"));
?>
<?if ($protocol != 'ipv4' && $subnet6):?>
_(IPv6 custom network on interface)_ <?=$network?>:
: <span class="gw6">**_(Subnet)_:** <?=$subnet6?>/<?=$mask6?></span>
<span class="gw6">**_(Gateway)_:** <?=$dockercfg["DOCKER_GATEWAY6_$port"]?></span>
<span class="gw6">**_(Gateway)_:** <?=_var($dockercfg,"DOCKER_GATEWAY6_$port")?></span>
**_(DHCP pool)_:** <?=$range6 ? "$range6/$size6" : "_(not set)_"?>
<?endif;?>
<?endforeach;?>
@@ -544,7 +569,7 @@ _(IPv6 custom network on interface)_ <?=$network?>:
<?if (!$DockerStopped && exec("findmnt --output FSTYPE --noheadings /var/lib/docker")=='btrfs'):?>
<div markdown="1" class="advanced">
<div id="title"><span class="left"><i class="title fa fa-address-card-o"></i>_(Docker volume info)_</span></div>
<div class="title"><span class="left"><i class="title fa fa-address-card-o"></i>_(Docker volume info)_</span></div>
_(btrfs filesystem show)_:
: <?="<pre>".shell_exec("btrfs filesystem show /var/lib/docker")."</pre>"?>
@@ -593,6 +618,9 @@ function prepareDocker(form) {
$(form).find('input[name="DOCKER_IMAGE_FILE"]').val($('#DOCKER_IMAGE_TYPE').val()=='folder' ? $("#DOCKER_IMAGE_FILE2").val() : $("#DOCKER_IMAGE_FILE1").val());
$("#DOCKER_IMAGE_FILE1").prop('disabled',true);
$("#DOCKER_IMAGE_FILE2").prop('disabled',true);
<?if ($no_dockercfg):?>
$(form).find('input[name="DOCKER_BACKINGFS"]').val($('#DOCKER_IMAGE_TYPE').val()=='folder' ? $("#DOCKER_BACKINGFS").val() : $("#DOCKER_BACKINGFS").val('native'));
<?endif;?>
<?endif;?>
$(form).find('input:hidden[name^="DOCKER_DHCP_"]').each(function(){
var id = '#'+$(this).attr('name')+'_';
@@ -759,13 +787,13 @@ function changeMask(id,val) {
for (var b=1; b<=3; b++) {
var cell = id+b;
switch (b) {
case 1: var step = mask/65536%256; break;
case 2: var step = mask/256%256; break;
case 1: var step = Math.floor(mask/65536)%256; break;
case 2: var step = Math.floor(mask/256)%256; break;
case 3: var step = mask%256; break;
}
if (step==0) step = 256;
if ($(cell).length==0) continue;
var max = $(cell+' option').size();
var max = $(cell+' option').length;
for (var i=0; i < max; i++) if (i%step==0) $(cell+' option:eq('+i+')').removeClass('hide'); else $(cell+' option:eq('+i+')').addClass('hide');
if ($(cell+' option:selected').val()%step!=0) $(cell+' option:selected').removeAttr('selected');
}
@@ -858,39 +886,54 @@ function btrfsScrub(path) {
}
});
}
var originalPath = $("#DOCKER_IMAGE_FILE2").val();
function updateLocation(val) {
var content1 = $("#DOCKER_IMAGE_FILE1");
var content2 = $("#DOCKER_IMAGE_FILE2");
var dropdown = $("#DOCKER_BACKINGFS");
var path = originalPath.split('/');
switch (val) {
case 'xfs':
var path = content2.val().split('/');
path.splice(-1,1);
content1.val((path.join('/') + '/docker-xfs.img'));
$('#vdisk_file').show('slow');
$('#vdisk_dir').hide('slow');
$('#backingfs_type').hide();
content1.prop('disabled',false).trigger('change');
content2.prop('disabled',true);
dropdown.val('native');
break;
case 'folder':
var path = content2.val().split('/');
if (path[path.length-1]=='') path.splice(-2,2); else path.splice(-1,1);
content2.val(path.join('/') + '/docker/');
content2.val(path.join('/') + '/');
$('#vdisk_file').hide('slow');
$('#vdisk_dir').show('slow');
$('#backingfs_type').show('slow');
content1.prop('disabled',true);
content2.prop('disabled',false).trigger('change');
break;
default:
var path = content2.val().split('/');
path.splice(-1,1);
content1.val((path.join('/') + '/docker.img'));
$('#vdisk_file').show('slow');
$('#vdisk_dir').hide('slow');
$('#backingfs_type').hide();
content1.prop('disabled',false).trigger('change');
content2.prop('disabled',true);
dropdown.val('native');
break;
}
}
function updateBackingFS(val) {
var backingfs = "<?= _var($dockercfg,'DOCKER_BACKINGFS') ?>";
var warning = document.getElementById("WARNING_BACKINGFS");
var checkbox = $(".deleteCheckbox");
if (val !== backingfs) {
warning.style.display = "inline";
} else {
warning.style.display = "none";
}
}
function checkbox_state(value) {
$.post('/plugins/dynamix.docker.manager/include/UpdateConfig.php',{action:'exist',name:value},function(state){state==0 ? $('.deleteLabel').fadeIn() : $('.deleteLabel').fadeOut();});
}
@@ -898,6 +941,7 @@ $(function() {
<?if ($DockerStopped):?>
if ($('#DOCKER_IMAGE_TYPE').val()=='folder') {
$('#vdisk_dir').show();
$('#backingfs_type').show();
checkbox_state($("#DOCKER_IMAGE_FILE2").val());
$("#DOCKER_IMAGE_FILE2").prop('disabled',false);
} else {

View File

@@ -3,9 +3,9 @@ Cond="(pgrep('dockerd')!==false)"
Markdown="false"
---
<?PHP
/* Copyright 2005-2020, Lime Technology
* Copyright 2014-2020, Guilherme Jardim, Eric Schultz, Jon Panozzo.
* Copyright 2012-2020, Bergware International.
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
* Copyright 2014-2021, Guilherme Jardim, Eric Schultz, Jon Panozzo.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,

View File

@@ -6,4 +6,7 @@ DOCKER_LOG_FILES="1"
DOCKER_AUTHORING_MODE="no"
DOCKER_USER_NETWORKS="remove"
DOCKER_ALLOW_ACCESS=""
DOCKER_TIMEOUT=10
DOCKER_TIMEOUT=10
DOCKER_READMORE="yes"
DOCKER_PID_LIMIT=""
DOCKER_BACKINGFS="overlay2"

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

View File

@@ -1,7 +1,7 @@
<?PHP
/* Copyright 2005-2022, Lime Technology
* Copyright 2014-2022, Guilherme Jardim, Eric Schultz, Jon Panozzo.
* Copyright 2012-2022, Bergware International.
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
* Copyright 2014-2021, Guilherme Jardim, Eric Schultz, Jon Panozzo.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
@@ -12,7 +12,7 @@
*/
?>
<?
$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
$user_prefs = $dockerManPaths['user-prefs'];

View File

@@ -1,7 +1,7 @@
<?PHP
/* Copyright 2005-2022, Lime Technology
* Copyright 2014-2022, Guilherme Jardim, Eric Schultz, Jon Panozzo.
* Copyright 2012-2022, Bergware International.
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
* Copyright 2014-2021, Guilherme Jardim, Eric Schultz, Jon Panozzo.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
@@ -12,19 +12,16 @@
*/
?>
<?
libxml_use_internal_errors(true); # Suppress any warnings from xml errors.
$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
// add translations
if ($_SERVER['REQUEST_URI'] != 'docker' && substr($_SERVER['REQUEST_URI'],0,7) != '/Docker') {
$_SERVER['REQUEST_URI'] = 'docker';
require_once "$docroot/webGui/include/Translations.php";
}
$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/plugins/dynamix.docker.manager/include/Helpers.php";
require_once "$docroot/webGui/include/Wrappers.php";
// add translations
if (_var($_SERVER,'REQUEST_URI')!='docker' && substr(_var($_SERVER,'REQUEST_URI'),0,7)!='/Docker') {
$_SERVER['REQUEST_URI'] = 'docker';
require_once "$docroot/webGui/include/Translations.php";
}
$dockerManPaths = [
'autostart-file' => "/var/lib/docker/unraid-autostart",
'update-status' => "/var/lib/docker/unraid-update-status.json",
@@ -46,13 +43,24 @@ $host = ipaddr($ethX);
// get network drivers
$driver = DockerUtil::driver();
// determine active port name
$port = file_exists('/sys/class/net/br0') ? 'BR0' : (file_exists('/sys/class/net/bond0') ? 'BOND0' : 'ETH0');
// Docker configuration file - guaranteed to exist
$docker_cfgfile = '/boot/config/docker.cfg';
$defaults = @parse_ini_file("$docroot/plugins/dynamix.docker.manager/default.cfg") ?: [];
$dockercfg = array_replace_recursive($defaults, parse_ini_file($docker_cfgfile));
if (file_exists($docker_cfgfile)) {
exec("grep -Pom2 '_SUBNET_|_{$port}(_[0-9]+)?=' $docker_cfgfile",$cfg);
if (isset($cfg[0]) && $cfg[0]=='_SUBNET_' && empty($cfg[1])) {
# interface has changed, update configuration
exec("sed -ri 's/_(BR0|BOND0|ETH0)(_[0-9]+)?=/_{$port}\\2=/' $docker_cfgfile");
}
}
$defaults = (array)@parse_ini_file("$docroot/plugins/dynamix.docker.manager/default.cfg");
$dockercfg = array_replace_recursive($defaults, (array)@parse_ini_file($docker_cfgfile));
function var_split($item, $i=0) {
return explode(' ',$item)[$i];
return array_pad(explode(' ',$item),$i+1,'')[$i];
}
#######################################
@@ -168,7 +176,7 @@ class DockerTemplates {
}
// if after above we don't have a valid url, check for GitLab
if (empty($github_api['url'])) {
$source = file_get_contents($url);
$source = $this->download_url($url);
// the following should always exist for GitLab Community Edition or GitLab Enterprise Edition
if (preg_match("/<meta content='GitLab (Community|Enterprise) Edition' name='description'>/", $source) > 0) {
$parse = parse_url($url);
@@ -246,88 +254,149 @@ class DockerTemplates {
foreach ($this->getTemplates($scope) as $file) {
$doc = new DOMDocument();
$doc->load($file['path']);
$TemplateRepository = DockerUtil::ensureImageTag($doc->getElementsByTagName('Repository')->item(0)->nodeValue);
if ( $name )
if ($doc->getElementsByTagName('Name')->item(0)->nodeValue !== $name)
continue;
if ($Repository == $TemplateRepository) {
$TemplateField = $doc->getElementsByTagName($field)->item(0)->nodeValue;
if ($name) {
if (@$doc->getElementsByTagName('Name')->item(0)->nodeValue !== $name) continue;
}
$TemplateRepository = DockerUtil::ensureImageTag($doc->getElementsByTagName('Repository')->item(0)->nodeValue??'');
if ($TemplateRepository && $TemplateRepository==$Repository) {
$TemplateField = $doc->getElementsByTagName($field)->item(0)->nodeValue??'';
return trim($TemplateField);
}
}
return null;
}
public function getUserTemplate($Container) {
foreach ($this->getTemplates('user') as $file) {
$doc = new DOMDocument('1.0', 'utf-8');
$doc->load($file['path']);
$Name = $doc->getElementsByTagName('Name')->item(0)->nodeValue;
$Name = $doc->getElementsByTagName('Name')->item(0)->nodeValue??'';
if ($Name==$Container) return $file['path'];
}
return false;
}
private function getControlURL(&$ct, $myIP) {
private function getControlURL(&$ct, $myIP, $WebUI) {
global $host;
$port = &$ct['Ports'][0];
$myIP = $myIP ?: $this->getTemplateValue($ct['Image'], 'MyIP') ?: ($ct['NetworkMode']=='host'||$port['NAT'] ? $host : ($port['IP'] ?: DockerUtil::myIP($ct['Name'])));
$WebUI = preg_replace("%\[IP\]%", $myIP, $this->getTemplateValue($ct['Image'], 'WebUI'));
$myIP = $myIP ?: $this->getTemplateValue($ct['Image'],'MyIP') ?: (_var($ct,'NetworkMode')=='host'||_var($port,'NAT') ? $host : (_var($port,'IP') ?: DockerUtil::myIP($ct['Name'])));
// Get the WebUI address from the templates as a fallback
$WebUI = preg_replace("%\[IP\]%", $myIP, $WebUI ?? $this->getTemplateValue($ct['Image'], 'WebUI'));
if (preg_match("%\[PORT:(\d+)\]%", $WebUI, $matches)) {
$ConfigPort = $matches[1];
$ConfigPort = $matches[1] ?? '';
foreach ($ct['Ports'] as $port) {
if ($port['NAT'] && $port['PrivatePort']==$ConfigPort) {$ConfigPort = $port['PublicPort']; break;}
if (_var($port,'NAT') && _var($port,'PrivatePort')==$ConfigPort) {$ConfigPort = _var($port,'PublicPort'); break;}
}
$WebUI = preg_replace("%\[PORT:\d+\]%", $ConfigPort, $WebUI);
}
return $WebUI;
}
private function getTailscaleJson($name) {
$TS_raw = [];
exec("docker exec -i ".$name." /bin/sh -c \"tailscale status --peers=false --json\" 2>/dev/null", $TS_raw);
if (!empty($TS_raw)) {
$TS_raw = implode("\n", $TS_raw);
return json_decode($TS_raw, true);
}
return '';
}
public function getAllInfo($reload=false,$com=true,$communityApplications=false) {
global $dockerManPaths, $host;
global $driver, $dockerManPaths, $host;
$DockerClient = new DockerClient();
$DockerUpdate = new DockerUpdate();
//$DockerUpdate->verbose = $this->verbose;
$info = DockerUtil::loadJSON($dockerManPaths['webui-info']);
$autoStart = array_map('var_split', @file($dockerManPaths['autostart-file'], FILE_IGNORE_NEW_LINES) ?: []);
$autoStart = array_map('var_split', @file($dockerManPaths['autostart-file'],FILE_IGNORE_NEW_LINES) ?: []);
//$TS_dns = $this->getTailscaleDNS();
foreach ($DockerClient->getDockerContainers() as $ct) {
$name = $ct['Name'];
$image = $ct['Image'];
$tmp = &$info[$name] ?? [];
$tmp['running'] = $ct['Running'];
$tmp['paused'] = $ct['Paused'];
$tmp['autostart'] = in_array($name, $autoStart);
$tmp['autostart'] = in_array($name,$autoStart);
$tmp['cpuset'] = $ct['CPUset'];
$tmp['url'] = $ct['Url'] ?? $tmp['url'] ?? '';
// read docker label for WebUI & Icon
if ($ct['Url'] && !$tmp['url']) $tmp['url'] = $ct['Url'];
if ($ct['Icon']) $tmp['icon'] = $ct['Icon'];
if ( ! $communityApplications ) {
if (isset($ct['Icon'])) $tmp['icon'] = $ct['Icon'];
if (isset($ct['Shell'])) $tmp['shell'] = $ct['Shell'];
if (!$communityApplications) {
if (!is_file($tmp['icon']) || $reload) $tmp['icon'] = $this->getIcon($image,$name,$tmp['icon']);
}
if ($ct['Running']) {
$port = &$ct['Ports'][0];
$webui = $this->getTemplateValue($ct['Image'], 'WebUI');
$webui = $tmp['url'] ?? $this->getTemplateValue($ct['Image'], 'WebUI');
if (strlen($webui) > 0 && !preg_match("%\[(IP|PORT:(\d+))\]%", $webui)) {
// non-templated webui, user specified
$tmp['url'] = $webui;
} else {
$ip = ($ct['NetworkMode']=='host'||$port['NAT'] ? $host : $port['IP']);
$tmp['url'] = $ip ? (strpos($tmp['url'],$ip)!==false ? $tmp['url'] : $this->getControlURL($ct, $ip)) : $tmp['url'];
if ($ct['NetworkMode']=='host') {
$ip = $host;
} elseif (isset($driver[$ct['NetworkMode']]) && ($driver[$ct['NetworkMode']] == 'ipvlan' || $driver[$ct['NetworkMode']] == 'macvlan')) {
$ip = reset($ct['Networks'])['IPAddress'];
} elseif (!is_null(_var($port,'PublicPort'))) {
$ip = $host;
} else {
$ip = _var($port,'IP');
}
$tmp['url'] = $ip ? (strpos($tmp['url'],$ip)!==false ? $tmp['url'] : $this->getControlURL($ct, $ip, $tmp['url'])) : $tmp['url'];
if (strpos($ct['NetworkMode'], 'container:') === 0)
$tmp['url'] = '';
}
$tmp['shell'] = $tmp['shell'] ?? $this->getTemplateValue($image, 'Shell');
// Check if webui & ct TSurl is set, if set construct WebUI URL on Docker page
$tmp['TSurl'] = '';
if (!empty($webui) && !empty($ct['TSUrl'])) {
$TS_no_peers = $this->getTailscaleJson($name);
if (!empty($TS_no_peers) && (!empty($TS_no_peers['CurrentTailnet']['MagicDNSEnabled']) || $TS_no_peers['CurrentTailnet']['MagicDNSEnabled'])) {
$TS_container = $TS_no_peers['Self'];
$TS_DNSName = _var($TS_container,'DNSName','');
$TS_HostNameActual = substr($TS_DNSName, 0, strpos($TS_DNSName, '.'));
// Check if serve or funnel are enabled by checking for [hostname] and replace string with TS_DNSName
if (strpos($ct['TSUrl'], '[hostname]') !== false && isset($TS_DNSName)) {
$tmp['TSurl'] = str_replace("[hostname][magicdns]", rtrim($TS_DNSName, '.'), $ct['TSUrl']);
// Check if serve is disabled, construct url with port, path and query if present and replace [noserve] with url
} elseif (strpos($ct['TSUrl'], '[noserve]') !== false && isset($TS_container['TailscaleIPs'])) {
$ipv4 = '';
foreach ($TS_container['TailscaleIPs'] as $ip) {
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
$ipv4 = $ip;
break;
}
}
if (!empty($ipv4)) {
$webui_url = isset($webui) ? parse_url($webui) : '';
$webui_port = (preg_match('/\[PORT:(\d+)\]/', $webui, $matches)) ? ':' . $matches[1] : '';
$webui_path = $webui_url['path'] ?? '';
$webui_query = isset($webui_url['query']) ? '?' . $webui_url['query'] : '';
$tmp['TSurl'] = 'http://' . $ipv4 . $webui_port . $webui_path . $webui_query;
}
// Check if TailscaleWebUI in the xml is custom and display instead
} elseif (strpos($ct['TSUrl'], '[hostname]') === false && strpos($ct['TSUrl'], '[noserve]') === false) {
$tmp['TSurl'] = $ct['TSUrl'];
}
}
}
if ( ($tmp['shell'] ?? false) == false )
$tmp['shell'] = $this->getTemplateValue($image, 'Shell');
}
$tmp['registry'] = $tmp['registry'] ?? $this->getTemplateValue($image, 'Registry');
$tmp['Support'] = $tmp['Support'] ?? $this->getTemplateValue($image, 'Support');
$tmp['Project'] = $tmp['Project'] ?? $this->getTemplateValue($image, 'Project');
$tmp['DonateLink'] = $tmp['DonateLink'] ?? $this->getTemplateValue($image, 'DonateLink');
$tmp['ReadMe'] = $tmp['ReadMe'] ?? $this->getTemplateValue($image, 'ReadMe');
if (!$tmp['updated'] || $reload) {
if (empty($tmp['updated']) || $reload) {
if ($reload) $DockerUpdate->reloadUpdateStatus($image);
$tmp['updated'] = var_export($DockerUpdate->getUpdateStatus($image),true);
}
if (!$com) $tmp['updated'] = 'undef';
if (!$tmp['template'] || $reload) $tmp['template'] = $this->getUserTemplate($name);
if ($reload) $DockerUpdate->updateUserTemplate($name);
if ($ct['Manager'] !== 'dockerman')
$tmp['template'] = null;
else if (empty($tmp['template']) || $reload) {
$tmp['template'] = $this->getUserTemplate($name);
if ($reload) $DockerUpdate->updateUserTemplate($name);
}
//$this->debug("\n$name");
//foreach ($tmp as $c => $d) $this->debug(sprintf(' %-10s: %s', $c, $d));
}
@@ -341,10 +410,9 @@ class DockerTemplates {
if (!$imgUrl) $imgUrl = $tmpIconUrl;
if (!$imgUrl || trim($imgUrl) == "/plugins/dynamix.docker.manager/images/question.png") return '';
$imageName = $contName ?: $name;
$iconRAM = sprintf('%s/%s-%s.png', $dockerManPaths['images-ram'], $contName, 'icon');
$icon = sprintf('%s/%s-%s.png', $dockerManPaths['images'], $contName, 'icon');
if (!is_dir(dirname($iconRAM))) mkdir(dirname($iconRAM), 0755, true);
if (!is_dir(dirname($icon))) mkdir(dirname($icon), 0755, true);
@@ -355,8 +423,8 @@ class DockerTemplates {
if (!is_file($icon) && is_file($iconRAM)) {
@copy($iconRAM,$icon);
}
if ( !is_file($iconRAM) ) {
exec("/usr/bin/logger ".escapeshellarg("$imageName: Could not download icon $imgUrl"));
if (!is_file($iconRAM)) {
my_logger("$contName: Could not download icon $imgUrl");
}
return (is_file($iconRAM)) ? str_replace($docroot, '', $iconRAM) : '';
@@ -417,7 +485,7 @@ class DockerUpdate{
// DEPRECATED: Only used for Docker Index V1 type update checks
public function getRemoteVersion($image) {
[$strRepo, $strTag] = array_pad(explode(':', DockerUtil::ensureImageTag($image)),2,'');
extract(DockerUtil::parseImageTag($image));
$apiUrl = sprintf('http://index.docker.io/v1/repositories/%s/tags/%s', $strRepo, $strTag);
//$this->debug("API URL: $apiUrl");
$apiContent = $this->download_url($apiUrl);
@@ -425,7 +493,7 @@ class DockerUpdate{
}
public function getRemoteVersionV2($image) {
[$strRepo, $strTag] = array_pad(explode(':', DockerUtil::ensureImageTag($image)),2,'');
extract(DockerUtil::parseImageTag($image));
/*
* Step 1: Check whether or not the image is in a private registry, get corresponding auth data and generate manifest url
*/
@@ -442,8 +510,8 @@ class DockerUpdate{
/*
* Step 2: Get www-authenticate header from manifest url to generate token or basic auth
*/
$header = ['Accept: application/vnd.docker.distribution.manifest.list.v2+json,application/vnd.docker.distribution.manifest.v2+json,application/vnd.oci.image.index.v1+json'];
$digest_ch = getCurlHandle($manifestURL, 'HEAD', $header);
$header = ['Accept: application/vnd.docker.distribution.manifest.list.v2+json,application/vnd.docker.distribution.manifest.v2+json'];
preg_match('@www-authenticate:\s*Bearer\s*(.*)@i', $reply, $matches);
if (!empty($matches[1])) {
$strArgs = explode(',', $matches[1]);
@@ -519,7 +587,7 @@ class DockerUpdate{
global $dockerManPaths;
$DockerClient = new DockerClient();
$updateStatus = DockerUtil::loadJSON($dockerManPaths['update-status']);
$images = $image ? [DockerUtil::ensureImageTag($image)] : array_map(function($ar){return $ar['Tags'][0];}, $DockerClient->getDockerImages());
$images = $image ? [DockerUtil::ensureImageTag($image)] : array_map(function($ar){return $ar['Tags'][0]??'';}, $DockerClient->getDockerImages());
foreach ($images as $img) {
$localVersion = null;
if (!empty($updateStatus[$img]) && array_key_exists('local', $updateStatus[$img])) {
@@ -559,7 +627,7 @@ class DockerUpdate{
public function updateUserTemplate($Container) {
// Don't update templates, but leave code in place for future reference
return;
$changed = false;
$DockerTemplates = new DockerTemplates();
$validElements = ['Support', 'Overview', 'Category', 'Project', 'Icon', 'ReadMe'];
@@ -706,11 +774,11 @@ class DockerClient {
}
public function getDockerJSON($url, $method='GET', &$code=null, $callback=null, $unchunk=false, $headers=null) {
$api = '/v1.37'; // used to force an API version. See https://docs.docker.com/develop/sdk/#api-version-matrix
$api = ''; // latest API version. See https://docs.docker.com/develop/sdk/#api-version-matrix
$fp = stream_socket_client('unix:///var/run/docker.sock', $errno, $errstr);
if ($fp === false) {
echo "Couldn't create socket: [$errno] $errstr";
return null;
return [];
}
$protocol = $unchunk ? 'HTTP/1.0' : 'HTTP/1.1';
$out = "$method {$api}{$url} $protocol\r\nHost:127.0.0.1\r\nConnection:Close\r\n";
@@ -744,7 +812,7 @@ class DockerClient {
public function doesImageExist($image) {
foreach ($this->getDockerImages() as $img) {
if (strpos($img['Tags'][0], $image)!==false) return true;
if (strpos($img['Tags'][0]??'', $image)!==false) return true;
}
return false;
}
@@ -778,10 +846,7 @@ class DockerClient {
public function stopContainer($id, $t=false) {
global $dockercfg;
if ( ! $t )
$t = intval($dockercfg['DOCKER_TIMEOUT']) ?: 10;
$this->getDockerJSON("/containers/$id/stop?t=$t", 'POST', $code);
$this->getDockerJSON("/containers/$id/stop?t=".($t ?: _var($dockercfg,'DOCKER_TIMEOUT',10)), 'POST', $code);
$this->flushCache($this::$containersCache);
return $code;
}
@@ -867,7 +932,7 @@ class DockerClient {
}
[$ret['username'], $ret['password']] = array_pad(explode(':', base64_decode($dockerConfig['auths'][ $configKey ]['auth'])),2,'');
return $ret;
return $ret;
}
public function removeImage($id) {
@@ -889,7 +954,7 @@ class DockerClient {
}
public function getDockerContainers() {
global $driver;
global $driver, $host;
// Return cached values
if (is_array($this::$containersCache)) return $this::$containersCache;
$this::$containersCache = [];
@@ -907,26 +972,60 @@ class DockerClient {
$c['Volumes'] = $info['HostConfig']['Binds'];
$c['Created'] = $this->humanTiming($ct['Created']);
$c['NetworkMode'] = $ct['HostConfig']['NetworkMode'];
$c['Manager'] = $info['Config']['Labels']['net.unraid.docker.managed'] ?? false;
if ($c['Manager'] == 'composeman') {
$c['ComposeProject'] = $info['Config']['Labels']['com.docker.compose.project'];
}
[$net, $id] = array_pad(explode(':',$c['NetworkMode']),2,'');
$c['CPUset'] = $info['HostConfig']['CpusetCpus'];
$c['BaseImage'] = $ct['Labels']['BASEIMAGE'] ?? false;
$c['Icon'] = $info['Config']['Labels']['net.unraid.docker.icon'] ?? false;
$c['Url'] = $info['Config']['Labels']['net.unraid.docker.webui'] ?? false;
$c['TSUrl'] = $info['Config']['Labels']['net.unraid.docker.tailscale.webui'] ?? false;
$c['TSHostname'] = $info['Config']['Labels']['net.unraid.docker.tailscale.hostname'] ?? false;
$c['Shell'] = $info['Config']['Labels']['net.unraid.docker.shell'] ?? false;
$c['Manager'] = $info['Config']['Labels']['net.unraid.docker.managed'] ?? false;
$c['Ports'] = [];
$c['Networks'] = [];
if ($id) $c['NetworkMode'] = $net.str_replace('/',':',DockerUtil::ctMap($id)?:'/???');
if ($driver[$c['NetworkMode']]=='bridge') {
$ports = &$info['HostConfig']['PortBindings'];
$nat = true;
} else {
if (isset($driver[$c['NetworkMode']])) {
if ($driver[$c['NetworkMode']]=='bridge') {
$ports = &$info['HostConfig']['PortBindings'];
} elseif ($driver[$c['NetworkMode']]=='host') {
$c['Ports']['host'] = ['host' => ''];
} elseif ($driver[$c['NetworkMode']]=='ipvlan' || $driver[$c['NetworkMode']]=='macvlan') {
$i = $ct['NetworkSettings']['Networks'][$c['NetworkMode']]['IPAddress'];
$c['Ports']['vlan'] = ["$i" => $i];
} else {
$ports = &$info['Config']['ExposedPorts'];
}
} else if (!$id) {
$c['NetworkMode'] = DockerUtil::ctMap($c['NetworkMode']);
$ports = &$info['Config']['ExposedPorts'];
$nat = false;
}
$ip = $ct['NetworkSettings']['Networks'][$c['NetworkMode']]['IPAddress'];
$ports = is_array($ports) ? $ports : array();
foreach($ct['NetworkSettings']['Networks'] as $netName => $netVals) {
$i = $c['NetworkMode']=='host' ? $host : $netVals['IPAddress'];
$c['Networks'][$netName] = [ 'IPAddress' => $i ];
if ($driver[$netName]=='ipvlan' || $driver[$netName]=='macvlan') {
if (!isset($c['Ports']['vlan'])) $c['Ports']['vlan'] = [];
$c['Ports']['vlan']["$i"] = $i;
}
}
$ip = $c['NetworkMode']=='host' ? $host : $ct['NetworkSettings']['Networks'][$c['NetworkMode']]['IPAddress'] ?? null;
$c['Networks'][$c['NetworkMode']] = [ 'IPAddress' => $ip ];
$ports = (isset($ports) && is_array($ports)) ? $ports : [];
foreach ($ports as $port => $value) {
if (!isset($info['HostConfig']['PortBindings'][$port])) {
continue;
}
[$PrivatePort, $Type] = array_pad(explode('/', $port),2,'');
$c['Ports'][] = ['IP' => $ip, 'PrivatePort' => $PrivatePort, 'PublicPort' => $nat ? $value[0]['HostPort']:$PrivatePort, 'NAT' => $nat, 'Type' => $Type ];
$PublicPort = $info['HostConfig']['PortBindings']["$port"][0]['HostPort'] ?: null;
$nat = ($driver[$c['NetworkMode']]=='bridge');
if (array_key_exists($PrivatePort, $c['Ports']) && $Type != $c['Ports'][$PrivatePort]['Type'])
$Type = $c['Ports'][$PrivatePort]['Type'] . '/' . $Type;
$c['Ports'][$PrivatePort] = ['IP' => $ip, 'PrivatePort' => $PrivatePort, 'PublicPort' => $PublicPort, 'NAT' => $nat, 'Type' => $Type, 'Driver' => $driver[$c['NetworkMode']]];
}
ksort($c['Ports']);
$this::$containersCache[] = $c;
}
array_multisort(array_column($this::$containersCache,'Name'), SORT_NATURAL|SORT_FLAG_CASE, $this::$containersCache);
@@ -952,7 +1051,7 @@ class DockerClient {
public function getImageName($id) {
foreach ($this->getDockerImages() as $img) {
if ($img['Id']==$id) return $img['Tags'][0];
if ($img['Id']==$id) return $img['Tags'][0]??'';
}
return null;
}
@@ -967,9 +1066,9 @@ class DockerClient {
$c['Id'] = $this->extractID($ct['Id']);
$c['ParentId'] = $this->extractID($ct['ParentId']);
$c['Size'] = $this->formatBytes($ct['Size']);
$c['VirtualSize'] = $this->formatBytes($ct['VirtualSize']);
$c['VirtualSize'] = $this->formatBytes($ct['VirtualSize'] ?? null);
$c['Tags'] = array_map('htmlspecialchars', $ct['RepoTags'] ?? []);
$c['Repository'] = vsprintf('%1$s/%2$s', preg_split("#[:\/]#", DockerUtil::ensureImageTag($ct['RepoTags'][0])));
$c['Repository'] = DockerUtil::parseImageTag($ct['RepoTags'][0]??'')['strRepo'];
$c['usedBy'] = $this->usedBy($c['Id']);
$this::$imagesCache[$c['Id']] = $c;
}
@@ -982,22 +1081,54 @@ class DockerClient {
##################################
class DockerUtil {
public static function ensureImageTag($image) {
[$strRepo, $strTag] = array_map('trim', array_pad(explode(':', $image.':'),2,''));
if (strpos($strRepo, 'sha256:') === 0) {
// sha256 was provided instead of actual repo name so truncate it for display:
$strRepo = substr($strRepo, 7, 12);
} elseif (strpos($strRepo, '/') === false) {
// Prefix library/ if there's no author (maybe a Docker offical image?)
$strRepo = "library/$strRepo";
}
// Add :latest tag to image if it's absent
if (empty($strTag)) $strTag = 'latest';
public static function ensureImageTag($image): string
{
extract(static::parseImageTag($image));
return "$strRepo:$strTag";
}
public static function parseImageTag($image): array
{
if (strpos($image, 'sha256:') === 0) {
// sha256 was provided instead of actual repo name so truncate it for display:
$strRepo = substr($image, 7, 12);
} elseif (strpos($image, '/') === false) {
return static::parseImageTag('library/' . $image);
} else {
$parsedImage = static::splitImage($image);
if (!empty($parsedImage)) {
$strRepo = $parsedImage['strRepo'];
$strTag = $parsedImage['strTag'];
} else {
// Unprocessable input
$strRepo = $image;
}
}
// Add :latest tag to image if it's absent
if (empty($strTag)) $strTag = 'latest';
return array_map('trim', ['strRepo' => $strRepo, 'strTag' => $strTag]);
}
private static function splitImage($image): ?array
{
if (false === preg_match('@^(.+/)*([^/:]+)(:[^:/]*)*$@', $image, $newSections) || count($newSections) < 3) {
return null;
} else {
[, $strRepo, $image, $strTag] = array_merge($newSections, ['']);
$strTag = str_replace(':','',$strTag??'');
return [
'strRepo' => $strRepo . $image,
'strTag' => $strTag,
];
}
}
public static function loadJSON($path) {
$objContent = (file_exists($path)) ? json_decode(file_get_contents($path), true) : [];
$objContent = (file_exists($path)) ? json_decode(@file_get_contents($path), true) : [];
if (empty($objContent)) $objContent = [];
return $objContent;
}

View File

@@ -0,0 +1,353 @@
<?PHP
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
* Copyright 2014-2021, Guilherme Jardim, Eric Schultz, Jon Panozzo.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
?>
<?
$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Helpers.php";
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
// add translations
$_SERVER['REQUEST_URI'] = 'docker';
require_once "$docroot/webGui/include/Translations.php";
$DockerClient = new DockerClient();
$DockerTemplates = new DockerTemplates();
$containers = $DockerClient->getDockerContainers();
$images = $DockerClient->getDockerImages();
$user_prefs = $dockerManPaths['user-prefs'];
$autostart_file = $dockerManPaths['autostart-file'];
if (!$containers && !$images) {
echo "<tr><td colspan='7' style='text-align:center;padding-top:12px'>"._('No Docker containers installed')."</td></tr>";
return;
}
if (file_exists($user_prefs)) {
$prefs = (array)@parse_ini_file($user_prefs);
$sort = [];
foreach ($containers as $ct) $sort[] = array_search($ct['Name'],$prefs);
array_multisort($sort,SORT_NUMERIC,$containers);
unset($sort);
}
// Read container info
$allInfo = $DockerTemplates->getAllInfo();
$docker = [];
$null = '0.0.0.0';
$autostart = (array)@file($autostart_file,FILE_IGNORE_NEW_LINES);
$names = array_map('var_split',$autostart);
// Grab Tailscale json from container
function tailscale_stats($name) {
exec("docker exec -i ".$name." /bin/sh -c \"tailscale status --json | jq '{Self: .Self, ExitNodeStatus: .ExitNodeStatus, Version: .Version}'\" 2>/dev/null", $TS_stats);
if (!empty($TS_stats)) {
$TS_stats = implode("\n", $TS_stats);
return json_decode($TS_stats, true);
}
return '';
}
// Download Tailscal JSON and return Array, refresh file if older than 24 hours
function tailscale_json_dl($file, $url) {
$dl_status = 0;
if (!is_dir('/tmp/tailscale')) {
mkdir('/tmp/tailscale', 0777, true);
}
if (!file_exists($file)) {
exec("wget -T 3 -q -O " . $file . " " . $url, $output, $dl_status);
} else {
$fileage = time() - filemtime($file);
if ($fileage > 86400) {
unlink($file);
exec("wget -T 3 -q -O " . $file . " " . $url, $output, $dl_status);
}
}
if ($dl_status === 0) {
return json_decode(@file_get_contents($file), true);
} elseif ($dl_status === 0 && is_file($file)) {
return json_decode(@file_get_contents($file), true);
} else {
unlink($file);
return '';
}
}
// Grab Tailscale DERP map JSON
$TS_derp_url = 'https://login.tailscale.com/derpmap/default';
$TS_derp_file = '/tmp/tailscale/tailscale-derpmap.json';
$TS_derp_list = tailscale_json_dl($TS_derp_file, $TS_derp_url);
// Grab Tailscale version JSON
$TS_version_url = 'https://pkgs.tailscale.com/stable/?mode=json';
$TS_version_file = '/tmp/tailscale/tailscale-latest-version.json';
// Extract tarbal version string
$TS_latest_version = tailscale_json_dl($TS_version_file, $TS_version_url);
if (!empty($TS_latest_version)) {
$TS_latest_version = $TS_latest_version["TarballsVersion"];
}
function my_lang_time($text) {
[$number, $text] = my_explode(' ',$text,2);
return sprintf(_("%s $text"),$number);
}
function my_lang_log($text) {
global $language;
if (isset($language['healthy'])) $text = str_replace('healthy',$language['healthy'],$text);
if (isset($language['Exited'])) $text = str_replace('Exited',$language['Exited'],$text);
if (strpos($text,'ago')!==false) {
[$t1,$t2] = my_explode(') ',$text);
return $t1.'): '.my_lang_time($t2);
}
return _(_($text),2);
}
foreach ($containers as $ct) {
$name = $ct['Name'];
$id = $ct['Id'];
$info = &$allInfo[$name];
$running = $info['running'] ? 1 : 0;
$paused = $info['paused'] ? 1 : 0;
$is_autostart = $info['autostart'] ? 'true':'false';
$composestack = isset($ct['ComposeProject']) ? $ct['ComposeProject'] : '';
$updateStatus = substr($ct['NetworkMode'], -4) == ':???' ? 2 : ($info['updated'] == 'true' ? 0 : ($info['updated'] == 'false' ? 1 : 3));
$template = $info['template']??'';
$shell = $info['shell']??'';
$webGui = html_entity_decode($info['url']??'');
$TShostname = isset($ct['TSHostname']) ? $ct['TSHostname'] : '';
$TSwebGui = html_entity_decode($info['TSurl']??'');
$support = html_entity_decode($info['Support']??'');
$project = html_entity_decode($info['Project']??'');
$registry = html_entity_decode($info['registry']??'');
$donateLink = html_entity_decode($info['DonateLink']??'');
$readme = html_entity_decode($info['ReadMe']??'');
$menu = sprintf("onclick=\"addDockerContainerContext('%s','%s','%s',%s,%s,%s,%s,'%s','%s','%s','%s','%s','%s','%s', '%s','%s')\"", addslashes($name), addslashes($ct['ImageId']), addslashes($template), $running, $paused, $updateStatus, $is_autostart, addslashes($webGui), addslashes($TSwebGui), $shell, $id, addslashes($support), addslashes($project),addslashes($registry),addslashes($donateLink),addslashes($readme));
$docker[] = "docker.push({name:'$name',id:'$id',state:$running,pause:$paused,update:$updateStatus});";
$shape = $running ? ($paused ? 'pause' : 'play') : 'square';
$status = $running ? ($paused ? 'paused' : 'started') : 'stopped';
$color = $status=='started' ? 'green-text' : ($status=='paused' ? 'orange-text' : 'red-text');
$update = $updateStatus==1 && !empty($compose) ? 'blue-text' : '';
$icon = $info['icon'] ?: '/plugins/dynamix.docker.manager/images/question.png';
$image = substr($icon,-4)=='.png' ? "<img src='$icon?".filemtime("$docroot{$info['icon']}")."' class='img' onerror=this.src='/plugins/dynamix.docker.manager/images/question.png';>" : (substr($icon,0,5)=='icon-' ? "<i class='$icon img'></i>" : "<i class='fa fa-$icon img'></i>");
$wait = var_split($autostart[array_search($name,$names)]??'',1);
$networks = [];
$network_ips = [];
$ports_internal = [];
$ports_external = [];
if (isset($ct['Ports']['vlan'])) {
foreach ($ct['Ports']['vlan'] as $i)
$ports_external[] = sprintf('%s', $i);
$ports_internal[0] = sprintf('%s', 'all');
}
foreach($ct['Networks'] as $netName => $netVals) {
$networks[] = $netName;
$network_ips[] = $running ? $netVals['IPAddress'] : null;
if (isset($ct['Networks']['host'])) {
$ports_external[] = sprintf('%s', $netVals['IPAddress']);
$ports_internal[0] = sprintf('%s', 'all');
} else if (!isset($ct['Ports']['vlan']) || strpos($ct['NetworkMode'], 'container:') != 0) {
foreach ($ct['Ports'] as $port) {
if (_var($port,'PublicPort') && _var($port,'Driver') == 'bridge')
$ports_external[] = sprintf('%s:%s', $host, strtoupper(_var($port,'PublicPort')));
if ((!isset($ct['Networks']['host'])) || (!isset($ct['Networks']['vlan'])))
$ports_internal[] = sprintf('%s:%s', _var($port,'PrivatePort'), strtoupper(_var($port,'Type')));
}
}
}
$paths = [];
$ct['Volumes'] = is_array($ct['Volumes']) ? $ct['Volumes'] : [];
foreach ($ct['Volumes'] as $mount) {
[$host_path,$container_path,$access_mode] = my_explode(':',$mount,3);
$paths[] = sprintf('%s<i class="fa fa-%s" style="margin:0 6px"></i>%s', htmlspecialchars($container_path), $access_mode=='ro'?'long-arrow-left':'arrows-h', htmlspecialchars($host_path));
}
echo "<tr class='sortable'><td class='ct-name' style='width:220px;padding:8px'><i class='fa fa-arrows-v mover orange-text'></i>";
if ($template && empty($composestack)) {
$appname = "<a class='exec' onclick=\"editContainer('".addslashes(htmlspecialchars($name))."','".addslashes(htmlspecialchars($template))."')\">".htmlspecialchars($name)."</a>";
} else {
$appname = htmlspecialchars($name);
}
echo "<span class='outer'><span id='$id' $menu class='hand'>$image</span><span class='inner'><span class='appname $update'>$appname</span><br><i id='load-$id' class='fa fa-$shape $status $color'></i><span class='state'>"._($status).(!empty($composestack) ? '<br/>Compose Stack: ' . $composestack : '')."</span></span></span>";
echo "<div class='advanced' style='margin-top:8px'>"._('Container ID').": $id<br>";
if ($ct['BaseImage']) echo "<i class='fa fa-cubes' style='margin-right:5px'></i>".htmlspecialchars($ct['BaseImage'])."<br>";
echo _('By').": ";
$registry = $info['registry'];
['strRepo' => $author, 'strTag' => $version] = DockerUtil::parseImageTag($ct['Image']);
if ($registry) {
echo "<a href='".htmlspecialchars($registry)."' target='_blank'>".htmlspecialchars(compress($author,24))."</a>";
} else {
echo htmlspecialchars(compress($author,24));
}
echo "</div></td><td class='updatecolumn'>";
switch ($updateStatus) {
case 0:
if ($ct['Manager'] == "dockerman") {
echo "<span class='green-text' style='white-space:nowrap;'><i class='fa fa-check fa-fw'></i> "._('up-to-date')."</span>";
echo "<div class='advanced'><a class='exec' onclick=\"updateContainer('".addslashes(htmlspecialchars($name))."');\"><span style='white-space:nowrap;'><i class='fa fa-cloud-download fa-fw'></i> "._('force update')."</span></a></div>";
} elseif (!empty($composestack)) {
echo "<div><span><i class='fa fa-docker fa-fw'/></i> Compose</span></div>";
echo "<span tyle='white-space:nowrap;'><i class='fa fa-check fa-fw'></i> "._('up-to-date')."</span>";
} else {
echo "<div><span><i class='fa fa-docker fa-fw'/></i> 3rd Party</span></div>";
echo "<span tyle='white-space:nowrap;'><i class='fa fa-check fa-fw'></i> "._('up-to-date')."</span>";
}
break;
case 1:
echo "<div class='advanced'><span class='orange-text' style='white-space:nowrap;'><i class='fa fa-flash fa-fw'></i> "._('update ready')."</span></div>";
if ($ct['Manager'] == "dockerman") {
echo "<a class='exec' onclick=\"updateContainer('".addslashes(htmlspecialchars($name))."');\"><span style='white-space:nowrap;'><i class='fa fa-cloud-download fa-fw'></i> "._('apply update')."</span></a>";
} elseif (!empty($composestack)) {
echo "<div><span><i class='fa fa-docker fa-fw'/></i> Compose</span></a></div>";
echo "<span style='white-space:nowrap;'><i class='fa fa-cloud-download fa-fw'></i> "._('update available')."</span>";
} else {
echo "<div><span><i class='fa fa-docker fa-fw'/></i> 3rd Party</span></div>";
echo "<span style='white-space:nowrap;'><i class='fa fa-cloud-download fa-fw'></i> "._('update available')."</span>";
}
break;
case 2:
echo "<div class='advanced'><span class='orange-text' style='white-space:nowrap;'><i class='fa fa-flash fa-fw'></i> "._('rebuild ready')."</span></div>";
echo "<a class='exec'><span style='white-space:nowrap;'><i class='fa fa-recycle fa-fw'></i> "._('rebuilding')."</span></a>";
break;
default:
if ($ct['Manager'] == "dockerman") {
echo "<span class='orange-text' style='white-space:nowrap;'><i class='fa fa-unlink'></i> "._('not available')."</span>";
echo "<div class='advanced'><a class='exec' onclick=\"updateContainer('".addslashes(htmlspecialchars($name))."');\"><span style='white-space:nowrap;'><i class='fa fa-cloud-download fa-fw'></i> "._('force update')."</span></a></div>";
} elseif (!empty($composestack)) {
echo "<div><span><i class='fa fa-docker fa-fw'/></i> Compose</span></div>";
echo "<span style='white-space:nowrap;'><i class='fa fa-unlink'></i> "._('not available')."</span>";
} else {
echo "<div><span><i class='fa fa-docker fa-fw'/></i> 3rd Party</span></div>";
echo "<span style='white-space:nowrap;'><i class='fa fa-unlink'></i> "._('not available')."</span>";
}
break;
}
// Check if Tailscale for container is enabled by checking if TShostname is set
if (!empty($TShostname)) {
if ($running) {
// Get stats from container and check if they are not empty
$TSstats = tailscale_stats($name);
if (!empty($TSstats)) {
// Construct TSinfo from TSstats
$TSinfo = '';
if (!$TSstats["Self"]["Online"]) {
$TSinfo .= "Online:\t\t&#10060;\nPlease check the logs!";
} else {
$TS_version = explode('-', $TSstats["Version"])[0];
if (!empty($TS_version)) {
if (!empty($TS_latest_version)) {
if ($TS_version !== $TS_latest_version) {
$TSinfo .= "Version:\t\t" . $TS_version . " &#10132; " . $TS_latest_version . " available!\n";
} else {
$TSinfo .= "Version:\t\t" . $TS_version . "\n";
}
} else {
$TSinfo .= "Version:\t\t" . $TS_version . "\n";
}
}
$TSinfo .= "Online:\t\t&#9989;\n";
$TS_DNSName = $TSstats["Self"]["DNSName"];
$TS_HostNameActual = substr($TS_DNSName, 0, strpos($TS_DNSName, '.'));
if (strcasecmp($TS_HostNameActual, $TShostname) !== 0 && !empty($TS_DNSName)) {
$TSinfo .= "Hostname:\tReal Hostname &#10132; " . $TS_HostNameActual . "\n";
} else {
$TSinfo .= "Hostname:\t" . $TShostname . "\n";
}
// Map region relay code to cleartext region if TS_derp_list is available
if (!empty($TS_derp_list)) {
foreach ($TS_derp_list['Regions'] as $region) {
if ($region['RegionCode'] === $TSstats["Self"]["Relay"]) {
$TSregion = $region['RegionName'];
break;
}
}
if (!empty($TSregion)) {
$TSinfo .= "Main Relay:\t" . $TSregion . "\n";
} else {
$TSinfo .= "Main Relay:\t" . $TSstats["Self"]["Relay"] . "\n";
}
} else {
$TSinfo .= "Main Relay:\t" . $TSstats["Self"]["Relay"] . "\n";
}
if (!empty($TSstats["Self"]["TailscaleIPs"])) {
$TSinfo .= "Addresses:\t" . implode("\n\t\t\t", $TSstats["Self"]["TailscaleIPs"]) . "\n";
}
if (!empty($TSstats["Self"]["PrimaryRoutes"])) {
$TSinfo .= "Routes:\t\t" . implode("\n\t\t\t", $TSstats["Self"]["PrimaryRoutes"]) . "\n";
}
if ($TSstats["Self"]["ExitNodeOption"]) {
$TSinfo .= "Is Exit Node:\t&#9989;\n";
} else {
if (!empty($TSstats["ExitNodeStatus"])) {
$TS_exit_node_status = ($TSstats["ExitNodeStatus"]["Online"]) ? "&#9989;" : "&#10060;";
$TSinfo .= "Exit Node:\t" . strstr($TSstats["ExitNodeStatus"]["TailscaleIPs"][0], '/', true) . " | Status: " . $TS_exit_node_status ."\n";
} else {
$TSinfo .= "Is Exit Node:\t&#10060;\n";
}
}
if (!empty($TSwebGui)) {
$TSinfo .= "URL:\t\t" . $TSwebGui . "\n";
}
if (!empty($TSstats["Self"]["KeyExpiry"])) {
$TS_expiry = new DateTime($TSstats["Self"]["KeyExpiry"]);
$current_Date = new DateTime();
$TS_expiry_formatted = $TS_expiry->format('Y-m-d');
$TS_expiry_diff = $current_Date->diff($TS_expiry);
if ($TS_expiry_diff->invert) {
$TSinfo .= "Key Expiry:\t&#10060; Expired! Renew/Disable key expiry!\n";
} else {
$TSinfo .= "Key Expiry:\t" . $TS_expiry_formatted . " (" . $TS_expiry_diff->days . " days)\n";
}
}
}
// Display message to refresh page if Tailscale in the container wasn't maybe ready to get the data
} else {
echo "<div title='Error gathering Tailscale information from container.\nPlease check the logs and refresh the page.'><img src='/plugins/dynamix.docker.manager/images/tailscale.png' style='height: 16px;'> Tailscale</div></td>";
}
// Display TSinfo if data was fetched correctly
echo "<div title='" . $TSinfo . "'><img src='/plugins/dynamix.docker.manager/images/tailscale.png' style='height: 16px;'> Tailscale</div>";
// Display message that container isn't running
} else {
echo "<div title='Container not runnig'><img src='/plugins/dynamix.docker.manager/images/tailscale.png' style='height: 16px;'> Tailscale</div></td>";
}
}
echo "<div class='advanced'><i class='fa fa-info-circle fa-fw'></i> ".compress(_($version),12,0)."</div></td>";
echo "<td style='white-space:nowrap'><span class='docker_readmore'> ".implode('<br>',$networks)."</span></td>";
echo "<td style='white-space:nowrap'><span class='docker_readmore'> ".implode('<br>',$network_ips)."</span></td>";
echo "<td style='white-space:nowrap'><span class='docker_readmore'>".implode('<br>',$ports_internal)."</span></td>";
echo "<td style='white-space:nowrap'><span class='docker_readmore'>".implode('<br>',$ports_external)."</span></td>";
echo "<td style='word-break:break-all'><span class='docker_readmore'>".implode('<br>',$paths)."</span></td>";
echo "<td class='advanced'><span class='cpu-$id'>0%</span><div class='usage-disk mm'><span id='cpu-$id' style='width:0'></span><span></span></div>";
echo "<br><span class='mem-$id'>0 / 0</span></td>";
if (empty($composestack)) {
if ($ct['Manager'] == "dockerman") {
echo "<td><input type='checkbox' id='$id-auto' class='autostart' container='".htmlspecialchars($name)."'".($info['autostart'] ? ' checked':'').">";
} else {
echo "<td><i class='fa fa-docker fa-fw'/></i> 3rd Party";
}
} else {
echo "<td><i class='fa fa-docker'/></i> Compose";
}
echo "<span id='$id-wait' style='float:right;display:none'>"._('wait')."<input class='wait' container='".htmlspecialchars($name)."' type='number' value='$wait' placeholder='0' title=\""._('seconds')."\"></span></td>";
echo "<td><div style='white-space:nowrap'>".htmlspecialchars(str_replace('Up',_('Uptime').':',my_lang_log($ct['Status'])))."<div style='margin-top:4px'>"._('Created').": ".htmlspecialchars(my_lang_time($ct['Created']))."</div></div></td></tr>";
}
foreach ($images as $image) {
if (count($image['usedBy'])) continue;
$id = $image['Id'];
$menu = sprintf("onclick=\"addDockerImageContext('%s','%s')\"", $id, implode(',',$image['Tags']));
echo "<tr class='advanced'><td style='width:220px;padding:8px'>";
echo "<span class='outer apps'><span id='$id' $menu class='hand'><img src='/webGui/images/disk.png' class='img'></span><span class='inner'>("._('orphan image').")<br><i class='fa fa-square stopped grey-text'></i><span class='state'>"._('stopped')."</span></span></span>";
echo "</td><td colspan='6'>"._('Image ID').": $id<br>";
echo implode(', ',$image['Tags']);
echo "</td><td>"._('Created')." ".htmlspecialchars(_($image['Created'],0))."</td></tr>";
}
echo "\0".implode($docker)."\0".(pgrep('rc.docker')!==false ? 1:0);
?>

View File

@@ -1,7 +1,7 @@
<?PHP
/* Copyright 2005-2022, Lime Technology
* Copyright 2014-2022, Guilherme Jardim, Eric Schultz, Jon Panozzo.
* Copyright 2012-2022, Bergware International.
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
* Copyright 2014-2021, Guilherme Jardim, Eric Schultz, Jon Panozzo.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
@@ -12,10 +12,11 @@
*/
?>
<?
$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
require_once "$docroot/webGui/include/Wrappers.php";
$ncsi = exec("wget --spider --no-check-certificate -nv -T10 -t1 https://www.msftncsi.com/ncsi.txt 2>&1|grep -o 'OK'")=='OK';
$ncsi = check_network_connectivity();
$DockerTemplates = new DockerTemplates();
if ($ncsi) $DockerTemplates->downloadTemplates();
$DockerTemplates->getAllInfo($ncsi,$ncsi);

View File

@@ -0,0 +1,72 @@
<?PHP
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
* Copyright 2014-2021, Guilherme Jardim, Eric Schultz, Jon Panozzo.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
?>
<?
$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Secure.php";
require_once "$docroot/webGui/include/Wrappers.php";
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
// add translations
$_SERVER['REQUEST_URI'] = 'docker';
require_once "$docroot/webGui/include/Translations.php";
$DockerClient = new DockerClient();
$action = unscript(_var($_REQUEST,'action'));
$container = unbundle(_var($_REQUEST,'container'));
$name = unscript(_var($_REQUEST,'name'));
$image = unscript(_var($_REQUEST,'image'));
$arrResponse = ['error' => _('Missing parameters')];
switch ($action) {
case 'start':
if ($container) $arrResponse = ['success' => $DockerClient->startContainer($container)];
break;
case 'pause':
if ($container) $arrResponse = ['success' => $DockerClient->pauseContainer($container)];
break;
case 'stop':
if ($container) $arrResponse = ['success' => $DockerClient->stopContainer($container)];
break;
case 'resume':
if ($container) $arrResponse = ['success' => $DockerClient->resumeContainer($container)];
break;
case 'restart':
if ($container) $arrResponse = ['success' => $DockerClient->restartContainer($container)];
break;
case 'remove_container':
if ($container) $arrResponse = ['success' => $DockerClient->removeContainer($name, $container, 1)];
break;
case 'remove_image':
if ($image) $arrResponse = ['success' => $DockerClient->removeImage($image)];
break;
case 'remove_all':
if ($container && $image) {
// first: try to remove container
$ret = $DockerClient->removeContainer($name, $container, 2);
if ($ret === true) {
// next: try to remove image
$arrResponse = ['success' => $DockerClient->removeImage($image)];
} else {
// error: container failed to remove
$arrResponse = ['success' => $ret];
}
}
break;
default:
$arrResponse = ['error' => _('Unknown action')." '$action'"];
break;
}
header('Content-Type: application/json');
die(json_encode($arrResponse));

View File

@@ -0,0 +1,699 @@
<?PHP
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
* Copyright 2014-2021, Guilherme Jardim, Eric Schultz, Jon Panozzo.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
?>
<?
function addRoute($ct) {
// add static route(s) for remote WireGuard access
[$pid,$net] = array_pad(explode(' ',exec("docker inspect --format='{{.State.Pid}} {{.NetworkSettings.Networks}}' $ct")),2,'');
$net = substr($net,4,strpos($net,':')-4);
if (!$pid || $net != 'br0') return;
$thisip = ipaddr();
foreach (glob('/etc/wireguard/wg*.cfg') as $cfg) {
$network = exec("grep -Pom1 '^Network:0=\"\\K[^\"]+' $cfg");
if ($network) exec("nsenter -n -t $pid ip -4 route add $network via $thisip 2>/dev/null");
}
}
function xml_encode($string) {
return htmlspecialchars($string, ENT_XML1, 'UTF-8');
}
function xml_decode($string) {
return strval(html_entity_decode($string, ENT_XML1, 'UTF-8'));
}
function generateTSwebui($url, $serve, $webUI) {
if (!isset($webUI)) {
return '';
}
$webui_url = isset($webUI) ? parse_url($webUI) : '';
$webui_port = (preg_match('/\[PORT:(\d+)\]/', $webUI, $matches)) ? ':' . $matches[1] : '';
$webui_path = $webui_url['path'] ?? '';
$webui_query = isset($webui_url['query']) ? '?' . $webui_url['query'] : '';
if (!empty($url)) {
if (strpos($url, '[hostname]') !== false || strpos($url, '[noserve]') !== false) {
if ($serve === 'serve' || $serve === 'funnel') {
return 'https://[hostname][magicdns]' . $webui_path . $webui_query;
} elseif ($serve === 'no') {
return 'http://[noserve]' . $webui_port . $webui_path . $webui_query;
}
}
return $url;
} else {
if (!empty($webUI)) {
if ($serve === 'serve' || $serve === 'funnel') {
return 'https://[hostname][magicdns]' . $webui_path . $webui_query;
} elseif ($serve === 'no') {
return 'http://[noserve]' . $webui_port . $webui_path . $webui_query;
}
}
return '';
}
}
function postToXML($post, $setOwnership=false) {
$dom = new domDocument;
$dom->appendChild($dom->createElement("Container"));
$xml = simplexml_import_dom($dom);
$xml['version'] = 2;
$xml->Name = xml_encode(preg_replace('/\s+/', '', $post['contName']));
$xml->Repository = xml_encode(trim($post['contRepository']));
$xml->Registry = xml_encode(trim($post['contRegistry']));
if (isset($post['netCONT']) && !empty(trim($post['netCONT']))) {
$xml->Network = xml_encode($post['contNetwork'].':'.$post['netCONT']);
} else {
$xml->Network = xml_encode($post['contNetwork']);
}
$xml->MyIP = xml_encode($post['contMyIP']);
$xml->Shell = xml_encode($post['contShell']);
$xml->Privileged = strtolower($post['contPrivileged']??'')=='on' ? 'true' : 'false';
$xml->Support = xml_encode($post['contSupport']);
$xml->Project = xml_encode($post['contProject']);
$xml->Overview = xml_encode($post['contOverview']);
$xml->Category = xml_encode($post['contCategory']);
$xml->WebUI = xml_encode(trim($post['contWebUI']));
$xml->TemplateURL = xml_encode($post['contTemplateURL']);
$xml->Icon = xml_encode(trim($post['contIcon']));
$xml->ExtraParams = xml_encode($post['contExtraParams']);
$xml->PostArgs = xml_encode($post['contPostArgs']);
$xml->CPUset = xml_encode($post['contCPUset']);
$xml->DateInstalled = xml_encode(time());
$xml->DonateText = xml_encode($post['contDonateText']);
$xml->DonateLink = xml_encode($post['contDonateLink']);
$xml->Requires = xml_encode($post['contRequires']);
$size = is_array($post['confName']??null) ? count($post['confName']) : 0;
for ($i = 0; $i < $size; $i++) {
$Type = $post['confType'][$i];
$config = $xml->addChild('Config', xml_encode($post['confValue'][$i]));
$config['Name'] = xml_encode($post['confName'][$i]);
$config['Target'] = xml_encode($post['confTarget'][$i]);
$config['Default'] = xml_encode($post['confDefault'][$i]);
$config['Mode'] = xml_encode($post['confMode'][$i]);
$config['Description'] = xml_encode($post['confDescription'][$i]);
$config['Type'] = xml_encode($post['confType'][$i]);
$config['Display'] = xml_encode($post['confDisplay'][$i]);
$config['Required'] = xml_encode($post['confRequired'][$i]);
$config['Mask'] = xml_encode($post['confMask'][$i]);
}
if (isset($post['contTailscale']) && strtolower($post['contTailscale']) == 'on') {
$xml->TailscaleEnabled = 'true';
$xml->TailscaleIsExitNode = xml_encode($post['TSisexitnode']);
$xml->TailscaleHostname = xml_encode($post['TShostname']);
$xml->TailscaleExitNodeIP = xml_encode($post['TSexitnodeip']);
$xml->TailscaleSSH = xml_encode($post['TSssh']);
$xml->TailscaleUserspaceNetworking = xml_encode($post['TSuserspacenetworking']);
$xml->TailscaleLANAccess = xml_encode($post['TSallowlanaccess']);
$xml->TailscaleServe = xml_encode($post['TSserve']);
$xml->TailscaleWebUI = xml_encode(generateTSwebui($post['TSwebui'], $post['TSserve'], $post['contWebUI']));
if (isset($post['TSserve']) && strtolower($post['TSserve']) !== 'no') {
$xml->TailscaleServePort = xml_encode($post['TSserveport']);
$xml->TailscaleServeLocalPath = xml_encode($post['TSservelocalpath']);
$xml->TailscaleServeProtocol = xml_encode($post['TSserveprotocol']);
$xml->TailscaleServeProtocolPort = xml_encode($post['TSserveprotocolport']);
$xml->TailscaleServePath = xml_encode($post['TSservepath']);
}
$xml->TailscaleDParams = xml_encode($post['TSdaemonparams']);
$xml->TailscaleParams = xml_encode($post['TSextraparams']);
$xml->TailscaleStateDir = xml_encode($post['TSstatedir']);
$xml->TailscaleRoutes = xml_encode($post['TSroutes']);;
if (isset($post['TStroubleshooting']) && strtolower($post['TStroubleshooting']) === 'on') {
$xml->TailscaleTroubleshooting = 'true';
}
}
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml->asXML());
return $dom->saveXML();
}
function xmlToVar($xml) {
global $subnet;
$xml = is_file($xml) ? simplexml_load_file($xml) : simplexml_load_string($xml);
$out = [];
$out['Name'] = preg_replace('/\s+/', '', xml_decode($xml->Name));
$out['Repository'] = xml_decode($xml->Repository);
$out['Registry'] = xml_decode($xml->Registry);
$out['Network'] = xml_decode($xml->Network);
$out['MyIP'] = xml_decode($xml->MyIP ?? '');
$out['Shell'] = xml_decode($xml->Shell ?? 'sh');
$out['Privileged'] = xml_decode($xml->Privileged);
$out['Support'] = xml_decode($xml->Support);
$out['Project'] = xml_decode($xml->Project);
$out['Overview'] = stripslashes(xml_decode($xml->Overview));
$out['Category'] = xml_decode($xml->Category);
$out['WebUI'] = xml_decode($xml->WebUI);
$out['TemplateURL'] = xml_decode($xml->TemplateURL);
$out['Icon'] = xml_decode($xml->Icon);
$out['ExtraParams'] = xml_decode($xml->ExtraParams);
$out['PostArgs'] = xml_decode($xml->PostArgs);
$out['CPUset'] = xml_decode($xml->CPUset);
$out['DonateText'] = xml_decode($xml->DonateText);
$out['DonateLink'] = xml_decode($xml->DonateLink);
$out['Requires'] = xml_decode($xml->Requires);
$out['TailscaleEnabled'] = xml_decode($xml->TailscaleEnabled ?? '');
$out['TailscaleIsExitNode'] = xml_decode($xml->TailscaleIsExitNode ?? '');
$out['TailscaleHostname'] = xml_decode($xml->TailscaleHostname ?? '');
$out['TailscaleExitNodeIP'] = xml_decode($xml->TailscaleExitNodeIP ?? '');
$out['TailscaleSSH'] = xml_decode($xml->TailscaleSSH ?? '');
$out['TailscaleLANAccess'] = xml_decode($xml->TailscaleLANAccess ?? '');
$out['TailscaleUserspaceNetworking'] = xml_decode($xml->TailscaleUserspaceNetworking ?? '');
$out['TailscaleServe'] = xml_decode($xml->TailscaleServe ?? '');
$out['TailscaleServePort'] = xml_decode($xml->TailscaleServePort ?? '');
$out['TailscaleServeLocalPath'] = xml_decode($xml->TailscaleServeLocalPath ?? '');
$out['TailscaleServeProtocol'] = xml_decode($xml->TailscaleServeProtocol ?? '');
$out['TailscaleServeProtocolPort'] = xml_decode($xml->TailscaleServeProtocolPort ?? '');
$out['TailscaleServePath'] = xml_decode($xml->TailscaleServePath ?? '');
$out['TailscaleWebUI'] = xml_decode($xml->TailscaleWebUI ?? '');
$out['TailscaleRoutes'] = xml_decode($xml->TailscaleRoutes ?? '');
$out['TailscaleDParams'] = xml_decode($xml->TailscaleDParams ?? '');
$out['TailscaleParams'] = xml_decode($xml->TailscaleParams ?? '');
$out['TailscaleStateDir'] = xml_decode($xml->TailscaleStateDir ?? '');
$out['TailscaleTroubleshooting'] = xml_decode($xml->TailscaleTroubleshooting ?? '');
$out['Config'] = [];
if (isset($xml->Config)) {
foreach ($xml->Config as $config) {
$c = [];
$c['Value'] = strlen(xml_decode($config)) ? xml_decode($config) : xml_decode($config['Default']);
foreach ($config->attributes() as $key => $value) {
$value = xml_decode($value);
if ($key == 'Mode') {
switch (xml_decode($config['Type'])) {
case 'Path':
$value = in_array(strtolower($value),['rw','rw,slave','rw,shared','ro','ro,slave','ro,shared']) ? $value : "rw";
break;
case 'Port':
$value = in_array(strtolower($value),['tcp','udp']) ? $value : "tcp";
break;
}
}
$c[$key] = strip_tags(html_entity_decode($value));
}
$out['Config'][] = $c;
}
}
// some xml templates advertise as V2 but omit the new <Network> element
// check for and use the V1 <Networking> element when this occurs
if (empty($out['Network']) && isset($xml->Networking->Mode)) {
$out['Network'] = xml_decode($xml->Networking->Mode);
}
// check if network exists
if (preg_match('/^container:(.*)/', $out['Network'])) {
$out['Network'] = $out['Network'];
} elseif (!key_exists($out['Network'],$subnet)) {
$out['Network'] = 'none';
}
// V1 compatibility
if ($xml['version'] != '2') {
if (isset($xml->Description)) {
$out['Overview'] = stripslashes(xml_decode($xml->Description));
}
if (isset($xml->Networking->Publish->Port)) {
$portNum = 0;
foreach ($xml->Networking->Publish->Port as $port) {
if (empty(xml_decode($port->ContainerPort))) continue;
$portNum += 1;
$out['Config'][] = [
'Name' => "Host Port {$portNum}",
'Target' => xml_decode($port->ContainerPort),
'Default' => xml_decode($port->HostPort),
'Value' => xml_decode($port->HostPort),
'Mode' => xml_decode($port->Protocol) ? xml_decode($port->Protocol) : "tcp",
'Description' => '',
'Type' => 'Port',
'Display' => 'always',
'Required' => 'true',
'Mask' => 'false'
];
}
}
if (isset($xml->Data->Volume)) {
$volNum = 0;
foreach ($xml->Data->Volume as $vol) {
if (empty(xml_decode($vol->ContainerDir))) continue;
$volNum += 1;
$out['Config'][] = [
'Name' => "Host Path {$volNum}",
'Target' => xml_decode($vol->ContainerDir),
'Default' => xml_decode($vol->HostDir),
'Value' => xml_decode($vol->HostDir),
'Mode' => xml_decode($vol->Mode) ? xml_decode($vol->Mode) : "rw",
'Description' => '',
'Type' => 'Path',
'Display' => 'always',
'Required' => 'true',
'Mask' => 'false'
];
}
}
if (isset($xml->Environment->Variable)) {
$varNum = 0;
foreach ($xml->Environment->Variable as $varitem) {
if (empty(xml_decode($varitem->Name))) continue;
$varNum += 1;
$out['Config'][] = [
'Name' => "Key {$varNum}",
'Target' => xml_decode($varitem->Name),
'Default' => xml_decode($varitem->Value),
'Value' => xml_decode($varitem->Value),
'Mode' => '',
'Description' => '',
'Type' => 'Variable',
'Display' => 'always',
'Required' => 'false',
'Mask' => 'false'
];
}
}
if (isset($xml->Labels->Variable)) {
$varNum = 0;
foreach ($xml->Labels->Variable as $varitem) {
if (empty(xml_decode($varitem->Name))) continue;
$varNum += 1;
$out['Config'][] = [
'Name' => "Label {$varNum}",
'Target' => xml_decode($varitem->Name),
'Default' => xml_decode($varitem->Value),
'Value' => xml_decode($varitem->Value),
'Mode' => '',
'Description' => '',
'Type' => 'Label',
'Display' => 'always',
'Required' => 'false',
'Mask' => 'false'
];
}
}
}
xmlSecurity($out);
return $out;
}
function xmlSecurity(&$template) {
foreach ($template as &$element) {
if (is_array($element)) {
xmlSecurity($element);
} else {
if (is_string($element)) {
$tempElement = htmlspecialchars_decode($element);
$tempElement = str_replace("[","<",$tempElement);
$tempElement = str_replace("]",">",$tempElement);
if (preg_match('#<script(.*?)>(.*?)</script>#is',$tempElement) || preg_match('#<iframe(.*?)>(.*?)</iframe>#is',$tempElement) || (stripos($tempElement,"<link") !== false) ) {
$element = "REMOVED";
}
}
}
}
}
function xmlToCommand($xml, $create_paths=false) {
global $docroot, $var, $driver;
$xml = xmlToVar($xml);
$cmdName = strlen($xml['Name']) ? '--name='.escapeshellarg($xml['Name']) : '';
$cmdPrivileged = strtolower($xml['Privileged'])=='true' ? '--privileged=true' : '';
if (preg_match('/^container:(.*)/', $xml['Network'])) {
$cmdNetwork = preg_match('/\-\-net(work)?=/',$xml['ExtraParams']) ? "" : '--net='.escapeshellarg($xml['Network']);
} else {
$cmdNetwork = preg_match('/\-\-net(work)?=/',$xml['ExtraParams']) ? "" : '--net='.escapeshellarg(strtolower($xml['Network']));
}
$cmdMyIP = '';
foreach (explode(' ',str_replace(',',' ',$xml['MyIP'])) as $myIP) if ($myIP) $cmdMyIP .= (strpos($myIP,':')?'--ip6=':'--ip=').escapeshellarg($myIP).' ';
$cmdCPUset = strlen($xml['CPUset']) ? '--cpuset-cpus='.escapeshellarg($xml['CPUset']) : '';
$Volumes = [''];
$Ports = [''];
$Variables = [''];
$Labels = [''];
$Devices = [''];
// Bind Time
$Variables[] = 'TZ="'.$var['timeZone'].'"';
// Add HOST_OS variable
$Variables[] = 'HOST_OS="Unraid"';
// Add HOST_HOSTNAME variable
$Variables[] = 'HOST_HOSTNAME="'.$var['NAME'].'"';
// Add HOST_CONTAINERNAME variable
$Variables[] = 'HOST_CONTAINERNAME="'.$xml['Name'].'"';
// Docker labels for WebUI and Icon
$Labels[] = 'net.unraid.docker.managed=dockerman';
if (strlen($xml['WebUI'])) $Labels[] = 'net.unraid.docker.webui='.escapeshellarg($xml['WebUI']);
if (strlen($xml['Icon'])) $Labels[] = 'net.unraid.docker.icon='.escapeshellarg($xml['Icon']);
// Initialize Tailscale variables
$TS_entrypoint = '';
$TS_hook = '';
$TS_hostname = '';
$TS_hostname_label = '';
$TS_ssh = '';
$TS_tundev = '';
$TS_cap = '';
$TS_exitnode = '';
$TS_exitnode_ip = '';
$TS_lan_access = '';
$TS_userspace_networking = '';
$TS_daemon_params = '';
$TS_extra_params = '';
$TS_state_dir = '';
$TS_serve_funnel = '';
$TS_serve_port = '';
$TS_serve_local_path = '';
$TS_serve_protocol = '';
$TS_serve_protocol_port = '';
$TS_serve_path = '';
$TS_web_ui = '';
$TS_troubleshooting = '';
$TS_routes = '';
$TS_postargs = '';
// Get all information from xml and create variables for cmd
if ($xml['TailscaleEnabled'] == 'true') {
$TS_entrypoint = '--entrypoint=\'/opt/unraid/tailscale\'';
$TS_hook = '-v \'/usr/local/share/docker/tailscale_container_hook\':\'/opt/unraid/tailscale\'';
$TS_hostname = !empty($xml['TailscaleHostname']) ? '-e TAILSCALE_HOSTNAME=' . escapeshellarg($xml['TailscaleHostname']) : '';
$TS_hostname_label = !empty($xml['TailscaleHostname']) ? '-l net.unraid.docker.tailscale.hostname=' . escapeshellarg($xml['TailscaleHostname']) : '';
$TS_ssh = !empty($xml['TailscaleSSH']) ? '-e TAILSCALE_USE_SSH=' . escapeshellarg($xml['TailscaleSSH']) : '';
$TS_daemon_params = !empty($xml['TailscaleDParams']) ? '-e TAILSCALED_PARAMS=' . escapeshellarg($xml['TailscaleDParams']) : '';
$TS_extra_params = !empty($xml['TailscaleParams']) ? '-e TAILSCALE_PARAMS=' . escapeshellarg($xml['TailscaleParams']) : '';
$TS_state_dir = !empty($xml['TailscaleStateDir']) ? '-e TAILSCALE_STATE_DIR=' . escapeshellarg($xml['TailscaleStateDir']) : '';
$TS_userspace_networking = !empty($xml['TailscaleUserspaceNetworking']) ? '-e TAILSCALE_USERSPACE_NETWORKING=' . escapeshellarg($xml['TailscaleUserspaceNetworking']) : '';
// Only add tun, cap and specific vairables to containers which are defined as Exit Nodes and Userspace Networking disabled
if (_var($xml,'TailscaleIsExitNode') == 'true') {
$TS_tundev = preg_match('/--d(evice)?[= ](\'?\/dev\/net\/tun\'?)/', $xml['ExtraParams']) ? "" : "--device='/dev/net/tun'";
$TS_cap = preg_match('/--cap\-add=NET_ADMIN/', $xml['ExtraParams']) ? "" : "--cap-add=NET_ADMIN";
$TS_exitnode = '-e TAILSCALE_EXIT_NODE=true';
} elseif (_var($xml,'TailscaleUserspaceNetworking') == 'false') {
$TS_tundev = preg_match('/--d(evice)?[= ](\'?\/dev\/net\/tun\'?)/', $xml['ExtraParams']) ? "" : "--device='/dev/net/tun'";
$TS_cap = preg_match('/--cap\-add=NET_ADMIN/', $xml['ExtraParams']) ? "" : "--cap-add=NET_ADMIN";
$TS_lan_access = '-e TAILSCALE_ALLOW_LAN_ACCESS=' . escapeshellarg($xml['TailscaleLANAccess']);
$TS_exitnode_ip = !empty($xml['TailscaleExitNodeIP']) ? '-e TAILSCALE_EXIT_NODE_IP=' . escapeshellarg($xml['TailscaleExitNodeIP']) : '';
}
$TS_serve_funnel = ($xml['TailscaleServe'] == 'funnel') ? '-e TAILSCALE_FUNNEL=true' : '';
$TS_serve_port = !empty($xml['TailscaleServePort']) ? '-e TAILSCALE_SERVE_PORT=' . escapeshellarg($xml['TailscaleServePort']) : '';
$TS_serve_local_path = !empty($xml['TailscaleServeLocalPath']) ? '-e TAILSCALE_SERVE_LOCALPATH=' . escapeshellarg($xml['TailscaleServeLocalPath']) : '';
$TS_serve_protocol = !empty($xml['TailscaleServeProtocol']) ? '-e TAILSCALE_SERVE_PROTOCOL=' . escapeshellarg($xml['TailscaleServeProtocol']) : '';
$TS_serve_protocol_port = !empty($xml['TailscaleServeProtocolPort']) ? '-e TAILSCALE_SERVE_PROTOCOL_PORT=' . escapeshellarg($xml['TailscaleServeProtocolPort']) : '';
$TS_serve_path = !empty($xml['TailscaleServePath']) ? '-e TAILSCALE_SERVE_PATH=' . escapeshellarg($xml['TailscaleServePath']) : '';
$TS_web_ui = !empty($xml['TailscaleWebUI']) ? '-l net.unraid.docker.tailscale.webui=' . escapeshellarg($xml['TailscaleWebUI']) : '';
$TS_troubleshooting = !empty($xml['TailscaleTroubleshooting']) ? '-e TAILSCALE_TROUBLESHOOTING=' . escapeshellarg($xml['TailscaleTroubleshooting']) : '';
$TS_routes = !empty($xml['TailscaleRoutes']) ? '-e TAILSCALE_ADVERTISE_ROUTES=' . escapeshellarg($xml['TailscaleRoutes']) : '';
if (!empty($xml['PostArgs'])) {
$TS_postargs = '-e ORG_POSTARGS=' . escapeshellarg($xml['PostArgs']);
$xml['PostArgs'] = '';
}
}
foreach ($xml['Config'] as $key => $config) {
$confType = strtolower(strval($config['Type']));
$hostConfig = strlen($config['Value']) ? $config['Value'] : $config['Default'];
$containerConfig = strval($config['Target']);
$Mode = strval($config['Mode']);
if ($confType != "device" && !strlen($containerConfig)) continue;
if ($confType == "path") {
if ( ! trim($hostConfig) || ! trim($containerConfig) )
continue;
$Volumes[] = escapeshellarg($hostConfig).':'.escapeshellarg($containerConfig).':'.escapeshellarg($Mode);
if (!file_exists($hostConfig) && $create_paths) {
@mkdir($hostConfig, 0777, true);
@chown($hostConfig, 99);
@chgrp($hostConfig, 100);
}
} elseif ($confType == 'port') {
switch ($driver[$xml['Network']]) {
case 'host':
case 'macvlan':
case 'ipvlan':
// Export ports as variable if network is set to host or macvlan or ipvlan
$Variables[] = strtoupper(escapeshellarg($Mode.'_PORT_'.$containerConfig).'='.escapeshellarg($hostConfig));
break;
case 'bridge':
// Export ports as port if network is set to (custom) bridge
$Ports[] = escapeshellarg($hostConfig.':'.$containerConfig.'/'.$Mode);
break;
case 'none':
// No export of ports if network is set to none
}
} elseif ($confType == "label") {
$Labels[] = escapeshellarg($containerConfig).'='.escapeshellarg($hostConfig);
} elseif ($confType == "variable") {
$Variables[] = escapeshellarg($containerConfig).'='.escapeshellarg($hostConfig);
} elseif ($confType == "device") {
$Devices[] = escapeshellarg($hostConfig);
}
}
/* Read the docker configuration file. */
$cfgfile = "/boot/config/docker.cfg";
$config_ini = @parse_ini_file($cfgfile, true, INI_SCANNER_RAW);
$docker_cfg = ($config_ini !== false) ? $config_ini : [];
// Add pid limit if user has not specified it as an extra parameter
$pidsLimit = preg_match('/--pids-limit (\d+)/', $xml['ExtraParams'], $matches) ? $matches[1] : null;
if ($pidsLimit === null) {
$pid_limit = "--pids-limit ";
if (($docker_cfg['DOCKER_PID_LIMIT']??'') != "") {
$pid_limit .= $docker_cfg['DOCKER_PID_LIMIT'];
} else {
$pid_limit .= "2048";
}
} else {
$pid_limit = "";
}
$cmd = sprintf($docroot.'/plugins/dynamix.docker.manager/scripts/docker create %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s',
$cmdName, $TS_entrypoint, $cmdNetwork, $cmdMyIP, $cmdCPUset, $pid_limit, $cmdPrivileged, implode(' -e ', $Variables), $TS_hostname, $TS_exitnode, $TS_exitnode_ip, $TS_lan_access, $TS_routes, $TS_ssh, $TS_userspace_networking, $TS_serve_funnel, $TS_serve_port, $TS_serve_local_path, $TS_serve_protocol, $TS_serve_protocol_port, $TS_serve_path, $TS_daemon_params, $TS_extra_params, $TS_state_dir, $TS_troubleshooting, $TS_postargs, implode(' -l ', $Labels), $TS_web_ui, $TS_hostname_label, implode(' -p ', $Ports), implode(' -v ', $Volumes), $TS_hook, $TS_cap, $TS_tundev, implode(' --device=', $Devices), $xml['ExtraParams'], escapeshellarg($xml['Repository']), $xml['PostArgs']);
return [preg_replace('/\s\s+/', ' ', $cmd), $xml['Name'], $xml['Repository']];
}
function stopContainer($name, $t=false, $echo=true) {
global $DockerClient;
$waitID = mt_rand();
if ($echo) {
echo "<p class=\"logLine\" id=\"logBody\"></p>";
echo "<script>addLog('<fieldset style=\"margin-top:1px;\" class=\"CMD\"><legend>"._('Stopping container').": ",addslashes(htmlspecialchars($name)),"</legend><p class=\"logLine\" id=\"logBody\"></p><span id=\"wait{$waitID}\">"._('Please wait')." </span></fieldset>');show_Wait($waitID);</script>\n";
@flush();
}
$retval = $DockerClient->stopContainer($name, $t);
$out = ($retval === true) ? _('Successfully stopped container')." '$name'" : _('Error').": ".$retval;
if ($echo) {
echo "<script>stop_Wait($waitID);addLog('<b>",addslashes(htmlspecialchars($out)),"</b>');</script>\n";
@flush();
}
}
function removeContainer($name, $cache=false, $echo=true) {
global $DockerClient;
$waitID = mt_rand();
if ($echo) {
echo "<p class=\"logLine\" id=\"logBody\"></p>";
echo "<script>addLog('<fieldset style=\"margin-top:1px;\" class=\"CMD\"><legend>"._('Removing container').": ",addslashes(htmlspecialchars($name)),"</legend><p class=\"logLine\" id=\"logBody\"></p><span id=\"wait{$waitID}\">"._('Please wait')." </span></fieldset>');show_Wait($waitID);</script>\n";
@flush();
}
$retval = $DockerClient->removeContainer($name, false, $cache);
$out = ($retval === true) ? _('Successfully removed container')." '$name'" : _('Error').": ".$retval;
if ($echo) {
echo "<script>stop_Wait($waitID);addLog('<b>",addslashes(htmlspecialchars($out)),"</b>');</script>\n";
@flush();
}
}
function removeImage($image, $echo=true) {
global $DockerClient;
$waitID = mt_rand();
if ($echo) {
echo "<p class=\"logLine\" id=\"logBody\"></p>";
echo "<script>addLog('<fieldset style=\"margin-top:1px;\" class=\"CMD\"><legend>"._('Removing orphan image').": ",addslashes(htmlspecialchars($image)),"</legend><p class=\"logLine\" id=\"logBody\"></p><span id=\"wait{$waitID}\">"._('Please wait')." </span></fieldset>');show_Wait($waitID);</script>\n";
@flush();
}
$retval = $DockerClient->removeImage($image);
$out = ($retval === true) ? _('Successfully removed orphan image')." '$image'" : _('Error').": ".$retval;
if ($echo) {
echo "<script>stop_Wait($waitID);addLog('<b>",addslashes(htmlspecialchars($out))."</b>');</script>\n";
@flush();
}
}
function pullImage($name, $image, $echo=true) {
global $DockerClient, $DockerTemplates, $DockerUpdate;
$waitID = mt_rand();
if (!preg_match("/:\S+$/", $image)) $image .= ":latest";
if ($echo) {
echo "<p class=\"logLine\" id=\"logBody\"></p>";
echo "<script>addLog('<fieldset style=\"margin-top:1px;\" class=\"CMD\"><legend>"._('Pulling image').": ",addslashes(htmlspecialchars($image)),"</legend><p class=\"logLine\" id=\"logBody\"></p><span id=\"wait{$waitID}\">"._('Please wait')." </span></fieldset>');show_Wait($waitID);</script>\n";
@flush();
}
$alltotals = [];
$laststatus = [];
$strError = '';
$DockerClient->pullImage($image, function ($line) use (&$alltotals, &$laststatus, &$waitID, &$strError, $image, $DockerClient, $DockerUpdate, $echo) {
$cnt = json_decode($line, true);
$id = $cnt['id'] ?? '';
$status = $cnt['status'] ?? '';
if (isset($cnt['error'])) $strError = $cnt['error'];
if ($waitID !== false) {
if ($echo) {
echo "<script>stop_Wait($waitID);</script>\n";
@flush();
}
$waitID = false;
}
if (empty($status)) return;
if (!empty($id)) {
if (!empty($cnt['progressDetail']) && !empty($cnt['progressDetail']['total'])) {
$alltotals[$id] = $cnt['progressDetail']['total'];
}
if (empty($laststatus[$id])) {
$laststatus[$id] = '';
}
switch ($status) {
case 'Waiting':
// Omit
break;
case 'Downloading':
if ($laststatus[$id] != $status) {
if ($echo) echo "<script>addToID('$id','",addslashes(htmlspecialchars($status)),"');</script>\n";
}
$total = $cnt['progressDetail']['total'];
$current = $cnt['progressDetail']['current'];
if ($total > 0) {
$percentage = round(($current / $total) * 100);
if ($echo) echo "<script>progress('$id',' ",$percentage,"% ",_('of')," ",$DockerClient->formatBytes($total),"');</script>\n";
} else {
// Docker must not know the total download size (http-chunked or something?)
// just show the current download progress without the percentage
$alltotals[$id] = $current;
if ($echo) echo "<script>progress('$id',' ",$DockerClient->formatBytes($current),"');</script>\n";
}
break;
default:
if ($laststatus[$id] == "Downloading") {
if ($echo) echo "<script>progress('$id',' 100% ",_('of')," ",$DockerClient->formatBytes($alltotals[$id]),"');</script>\n";
}
if ($laststatus[$id] != $status) {
if ($echo) echo "<script>addToID('",($id=='latest'?mt_rand():$id),"','",addslashes(htmlspecialchars($status)),"');</script>\n";
}
break;
}
$laststatus[$id] = $status;
} else {
if (strpos($status, 'Status: ') === 0) {
if ($echo) echo "<script>addLog('",addslashes(htmlspecialchars($status)),"');</script>\n";
}
if (strpos($status, 'Digest: ') === 0) {
$DockerUpdate->setUpdateStatus($image, substr($status, 8));
}
}
if ($echo) @flush();
});
if ($echo) {
echo "<script>addLog('<br><b>",_('TOTAL DATA PULLED'),":</b> ",$DockerClient->formatBytes(array_sum($alltotals)),"');</script>\n";
@flush();
}
if (!empty($strError)) {
if ($echo) {
echo "<script>addLog('<br><span class=\"error\"><b>",_('Error'),":</b> ",addslashes(htmlspecialchars($strError)),"</span>');</script>\n";
@flush();
}
return false;
}
return true;
}
function execCommand($command, $echo=true) {
$waitID = mt_rand();
if ($echo) {
[$cmd,$args] = explode(' ',$command,2);
echo '<p class="logLine" id="logBody"></p>';
echo '<script>addLog(\'<fieldset style="margin-top:1px;" class="CMD"><legend>',_('Command execution'),'</legend>';
echo basename($cmd),' ',str_replace(" -","<br>&nbsp;&nbsp;-",addslashes(htmlspecialchars($args))),'<br>';
echo '<span id="wait'.$waitID.'">',_('Please wait').' </span>';
echo '<p class="logLine" id="logBody"></p></fieldset>\');show_Wait('.$waitID.');</script>';
@flush();
}
$proc = popen("$command 2>&1",'r');
while ($out = fgets($proc)) {
$out = preg_replace("%[\t\n\x0B\f\r]+%", '', $out);
if ($echo) {
echo '<script>addLog("',htmlspecialchars($out),'");</script>';
@flush();
}
}
$retval = pclose($proc);
if ($echo) echo '<script>stop_Wait('.$waitID.');</script>';
$out = $retval ? _('The command failed').'.' : _('The command finished successfully').'!';
if ($echo) echo '<script>addLog(\'<br><b>',$out,'</b>\');</script>';
return $retval===0;
}
function getXmlVal($xml, $element, $attr=null, $pos=0) {
$xml = (is_file($xml)) ? simplexml_load_file($xml) : simplexml_load_string($xml);
$element = $xml->xpath("//$element")[$pos];
return isset($element) ? (isset($element[$attr]) ? strval($element[$attr]) : strval($element)) : "";
}
function setXmlVal(&$xml, $value, $el, $attr=null, $pos=0) {
$xml = (is_file($xml)) ? simplexml_load_file($xml) : simplexml_load_string($xml);
$element = $xml->xpath("//$el")[$pos];
if (!isset($element)) $element = $xml->addChild($el);
if ($attr) {
$element[$attr] = $value;
} else {
$element->{0} = $value;
}
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml->asXML());
$xml = $dom->saveXML();
}
function getAllocations() {
global $DockerClient, $host;
$ports = [];
foreach ($DockerClient->getDockerContainers() as $ct) {
$list = $port = [];
$nat = $ip = false;
$list['Name'] = $ct['Name'];
foreach ($ct['Ports'] as $tmp) {
if (isset($tmp['NAT'])) {
$nat = $tmp['NAT'];
}
if (isset($tmp['IP'])) {
$ip = $tmp['IP'];
}
if (isset($tmp['PublicPort'])) {
$port[] = $tmp['PublicPort'];
}
}
sort($port);
$ip = $ct['NetworkMode']=='host'||$nat ? $host : ($ip ?: DockerUtil::myIP($ct['Name']) ?: '0.0.0.0');
$list['Port'] = "<span class='net'>{$ct['NetworkMode']}</span><span class='ip'>$ip</span>".(implode(', ',array_unique($port)) ?: '???');
$ports[] = $list;
}
return $ports;
}
function getCurlHandle($url, $method='GET') {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt($ch, CURLOPT_TIMEOUT, 45);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_REFERER, "");
if ($method === 'HEAD') {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'HEAD');
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
}
return $ch;
}
?>

View File

@@ -1,6 +1,7 @@
<?PHP
/* Copyright 2005-2018, Lime Technology
* Copyright 2012-2018, Bergware International.
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
* Copyright 2014-2021, Guilherme Jardim, Eric Schultz, Jon Panozzo.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,

View File

@@ -1,7 +1,7 @@
<?PHP
/* Copyright 2005-2021, Lime Technology
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
* Copyright 2014-2021, Guilherme Jardim, Eric Schultz, Jon Panozzo.
* Copyright 2012-2021, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
@@ -12,7 +12,7 @@
*/
?>
<?
$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
$autostart_file = $dockerManPaths['autostart-file'];
@@ -25,7 +25,7 @@ case 'autostart':
$container = urldecode(($_POST['container']));
$wait = $_POST['wait'];
$item = rtrim("$container $wait");
$autostart = @file($autostart_file, FILE_IGNORE_NEW_LINES) ?: [];
$autostart = (array)@file($autostart_file, FILE_IGNORE_NEW_LINES);
$key = array_search($item, $autostart);
if ($_POST['auto']=='true') {
if ($key===false) $autostart[] = $item;
@@ -48,7 +48,7 @@ case 'wait':
$container = urldecode(($_POST['container']));
$wait = $_POST['wait'];
$item = rtrim("$container $wait");
$autostart = file($autostart_file, FILE_IGNORE_NEW_LINES) ?: [];
$autostart = (array)@file($autostart_file, FILE_IGNORE_NEW_LINES);
$names = array_map('var_split', $autostart);
$autostart[array_search($container,$names)] = $item;
file_put_contents($autostart_file, implode("\n", $autostart)."\n");

View File

@@ -1,7 +1,7 @@
<?PHP
/* Copyright 2005-2018, Lime Technology
* Copyright 2015-2018, Derek Macias, Eric Schultz, Jon Panozzo.
* Copyright 2012-2018, Bergware International.
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
* Copyright 2014-2021, Guilherme Jardim, Eric Schultz, Jon Panozzo.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
@@ -12,7 +12,7 @@
*/
?>
<?
$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
$autostart_file = $dockerManPaths['autostart-file'];

View File

@@ -1,9 +1,11 @@
var eventURL = '/plugins/dynamix.docker.manager/include/Events.php';
function addDockerContainerContext(container, image, template, started, paused, update, autostart, webui, shell, id, Support, Project, Registry, donateLink, ReadMe) {
function addDockerContainerContext(container, image, template, started, paused, update, autostart, webui, tswebui, shell, id, Support, Project, Registry, donateLink, ReadMe) {
var opts = [];
context.settings({right:false,above:false});
if (started && !paused) {
if (webui !== '' && webui != '#') opts.push({text:_('WebUI'), icon:'fa-globe', href:webui, target:'_blank'});
if (tswebui !== '' && tswebui != '#') opts.push({text:_('Tailscale WebUI'), icon:'fa-globe', href:tswebui, target:'_blank'});
opts.push({text:_('Console'), icon:'fa-terminal', action:function(e){e.preventDefault(); openTerminal('docker',container,shell);}});
opts.push({divider:true});
}
@@ -60,17 +62,15 @@ function popupWithIframe(title, cmd, reload, func) {
$('#iframe-popup').dialog({
autoOpen:true,
title:title,
height: 600,
width: 900,
draggable:true,
width: Math.min(Math.max(window.innerWidth/2,900),1600),
height: Math.max(window.innerHeight*3/5,600),
resizable:true,
modal:true,
show:{effect:'fade', duration:250},
hide:{effect:'fade', duration:250},
open:function(ev, ui) {
open:function(ev, ui){
$('#myIframe').attr('src', cmd);
},
close:function(event, ui) {
close:function(event, ui){
if (reload && !$('#myIframe').contents().find('#canvas').length) {
if (func) setTimeout(func+'()',0); else location = window.location.href;
} else {
@@ -78,13 +78,13 @@ function popupWithIframe(title, cmd, reload, func) {
}
}
});
$(".ui-dialog .ui-dialog-titlebar").addClass('menu');
$('.ui-dialog .ui-dialog-titlebar-close').text('X').prop('title',_('Close'));
$(".ui-dialog .ui-dialog-title").css({'text-align':'center','width':'100%'});
$(".ui-dialog .ui-dialog-content").css({'padding-top':'15px','vertical-align':'bottom'});
$('.ui-dialog-titlebar-close').css({'display':'none'});
$('.ui-dialog-title').css({'text-align':'center','width':'100%','font-size':'1.8rem'});
$('.ui-dialog-content').css({'padding-top':'15px','vertical-align':'bottom'});
$('.ui-button-text').css({'padding':'0px 5px'});
}
function execUpContainer(container) {
var title = _('Updating the container')+': '+container;
var title = _('Updating the container TEST')+': '+container;
var cmd = '/plugins/dynamix.docker.manager/include/CreateDocker.php?updateContainer=true&ct[]='+encodeURIComponent(container);
popupWithIframe(title, cmd, true, 'loadlist');
}
@@ -101,32 +101,19 @@ function editContainer(container, template) {
location = path+'/UpdateContainer?xmlTemplate=edit:'+template;
}
function updateContainer(container) {
var body = _('Update container')+': '+container;
swal({
title:_('Are you sure?'),
text:body,
type:'warning',
showCancelButton:true,
confirmButtonText:_('Yes, update it!'),
cancelButtonText:_('Cancel')
title:_('Are you sure?'),text:_('Update container')+': '+container, type:'warning',html:true,showCancelButton:true,closeOnConfirm:false,confirmButtonText:_('Yes, update it!'),cancelButtonText:_('Cancel')
},function(){
execUpContainer(container);
openDocker('update_container '+encodeURIComponent(container),_('Updating the container'),'','loadlist');
});
}
function rmContainer(container, image, id) {
var body = _('Remove container')+': '+container+'<br><br><label><input id="removeimagechk" type="checkbox" checked style="display:inline;width:unset;height:unset;margin-top:unset;margin-bottom:unset">'+_('also remove image')+'</label>';
$('input[type=button]').prop('disabled',true);
swal({
title:_('Are you sure?'),
text:body,
type:'warning',
html:true,
showCancelButton:true,
confirmButtonText:_('Yes, delete it!'),
cancelButtonText:_('Cancel'),
showLoaderOnConfirm:true
title:_('Are you sure?'),text:body,type:'warning',html:true,showCancelButton:true,confirmButtonText:_('Yes, delete it!'),cancelButtonText:_('Cancel'),showLoaderOnConfirm:true
},function(c){
if (!c) {setTimeout(loadlist,0); return;}
if (!c) {setTimeout(loadlist); return;}
$('div.spinner.fixed').show('slow');
if ($('#removeimagechk').prop('checked')) {
eventControl({action:'remove_all', container:id, name:container, image:image},'loadlist');
@@ -139,13 +126,7 @@ function rmImage(image, imageName) {
var body = _('Remove image')+': '+$('<textarea />').html(imageName).text();
$('input[type=button]').prop('disabled',true);
swal({
title:_('Are you sure?'),
text:body,
type:'warning',
showCancelButton:true,
confirmButtonText:_('Yes, delete it!'),
cancelButtonText:_('Cancel'),
showLoaderOnConfirm:true
title:_('Are you sure?'),text:body,type:'warning',html:true,showCancelButton:true,confirmButtonText:_('Yes, delete it!'),cancelButtonText:_('Cancel'),showLoaderOnConfirm:true
},function(c){
if (!c) {setTimeout(loadlist,0); return;}
$('div.spinner.fixed').show('slow');
@@ -159,12 +140,12 @@ function eventControl(params, spin) {
if (data.success === true) {
if (spin) setTimeout(spin+'()',500); else location=window.location.href;
} else {
setTimeout(function(){swal({
title:_('Execution error'), html:true,
text:data.success, type:'error',
confirmButtonText:_('Ok')
},function(){
if (spin) setTimeout(spin+'()',500); else location=window.location.href;});
setTimeout(function(){
swal({
title:_('Execution error'),text:data.success,type:'error',html:true,confirmButtonText:_('Ok')
},function(){
if (spin) setTimeout(spin+'()',500); else location=window.location.href;
});
},100);
}
},'json');
@@ -196,10 +177,9 @@ function checkAll() {
}
function updateAll() {
$('input[type=button]').prop('disabled',true);
var ct = '';
for (var i=0,d; d=docker[i]; i++) if (d.update==1) ct += '&ct[]='+encodeURIComponent(d.name);
var cmd = '/plugins/dynamix.docker.manager/include/CreateDocker.php?updateContainer=true'+ct;
popupWithIframe(_('Updating all Containers'), cmd, true, 'loadlist');
var ct = [];
for (var i=0,d; d=docker[i]; i++) if (d.update==1) ct.push(encodeURIComponent(d.name));
openDocker('update_container '+ct.join('*'),_('Updating all Containers'),'','loadlist');
}
function rebuildAll() {
$('input[type=button]').prop('disabled',true);

View File

@@ -0,0 +1,548 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
<meta name="format-detection" content="telephone=no">
<meta name="viewport" content="width=1300">
<meta name="robots" content="noindex, nofollow">
<meta name="referrer" content="same-origin">
<style>
/************************
/
/ Fonts
/
/************************/
@font-face{font-family:clear-sans;font-weight:normal;font-style:normal; src:url('/webGui/styles/clear-sans.woff?v=20220513') format('woff')}
@font-face{font-family:clear-sans;font-weight:bold;font-style:normal; src:url('/webGui/styles/clear-sans-bold.woff?v=20220513') format('woff')}
@font-face{font-family:clear-sans;font-weight:normal;font-style:italic; src:url('/webGui/styles/clear-sans-italic.woff?v=20220513') format('woff')}
@font-face{font-family:clear-sans;font-weight:bold;font-style:italic; src:url('/webGui/styles/clear-sans-bold-italic.woff?v=20220513') format('woff')}
@font-face{font-family:bitstream;font-weight:normal;font-style:normal; src:url('/webGui/styles/bitstream.woff?v=20220513') format('woff')}
@font-face{font-family:bitstream;font-weight:bold;font-style:normal; src:url('/webGui/styles/bitstream-bold.woff?v=20220513') format('woff')}
@font-face{font-family:bitstream;font-weight:normal;font-style:italic; src:url('/webGui/styles/bitstream-italic.woff?v=20220513') format('woff')}
@font-face{font-family:bitstream;font-weight:bold;font-style:italic; src:url('/webGui/styles/bitstream-bold-italic.woff?v=20220513') format('woff')}
html{font-family:clear-sans;height:100%}
body{font-size:1.3rem;padding:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
.logLine{color:#1c1c1c;font-family:bitstream;font-size:1.2rem;line-height:1.6rem;margin:0 8px;padding:0;text-align:left}
.logLine.spacing{margin:10px}
input[type=button],input[type=reset],input[type=submit],button,button[type=button],a.button{font-family:clear-sans;font-size:1.1rem;text-transform:uppercase;margin:0;padding:9px 18px;text-decoration:none;white-space:nowrap;cursor:pointer;outline:none;border-radius:4px;border:0;color:#f15a2c;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#e22828),to(#e22828)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#ff8c2f),to(#ff8c2f)) 100% 100% no-repeat;background:linear-gradient(90deg,#e22828 0,#ff8c2f) 0 0 no-repeat,linear-gradient(90deg,#e22828 0,#ff8c2f) 0 100% no-repeat,linear-gradient(0deg,#e22828 0,#e22828) 0 100% no-repeat,linear-gradient(0deg,#ff8c2f 0,#ff8c2f) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%}
input:hover[type=button],input:hover[type=reset],input:hover[type=submit],button:hover,button:hover[type=button],a.button:hover{color:#f2f2f2;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f));background:linear-gradient(90deg,#e22828 0,#ff8c2f)}
input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled],button[disabled],button[type=button][disabled],a.button[disabled]
input:hover[type=button][disabled],input:hover[type=reset][disabled],input:hover[type=submit][disabled],button:hover[disabled],button:hover[type=button][disabled],a.button:hover[disabled]
input:active[type=button][disabled],input:active[type=reset][disabled],input:active[type=submit][disabled],button:active[disabled],button:active[type=button][disabled],a.button:active[disabled]
{opacity:0.5;cursor:default;color:#808080;background:-webkit-gradient(linear,left top,right top,from(#404040),to(#808080)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#404040),to(#808080)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#404040),to(#404040)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#808080),to(#808080)) 100% 100% no-repeat;background:linear-gradient(90deg,#404040 0,#808080) 0 0 no-repeat,linear-gradient(90deg,#404040 0,#808080) 0 100% no-repeat,linear-gradient(0deg,#404040 0,#404040) 0 100% no-repeat,linear-gradient(0deg,#808080 0,#808080) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%}
p.centered{text-align:center}
span.error{color:#D8000C;background-color:#FFBABA;display:block;width:100%}
span.warn{color:#9F6000;background-color:#FEEFB3;display:block;width:100%}
span.system{color:#00529B;background-color:#BDE5F8;display:block;width:100%}
span.array{color:#4F8A10;background-color:#DFF2BF;display:block;width:100%}
span.login{color:#D63301;background-color:#FFCCBA;display:block;width:100%}
span.label{padding:4px 8px;margin-right:10px;border-radius:4px;display:inline;width:auto}
legend{font-size:1.1rem;font-weight:bold}
#content{margin:10;padding:0}
</style>
<script>
/*
This script block has the following license.
Original: https://github.com/drudru/ansi_up Version: 5.0.1
Modified by: https://github.com/nysos3 for use in unRaid
(The MIT License)
Copyright (c) 2011 Dru Nelson
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
return cooked;
};
var PacketKind;
(function (PacketKind) {
PacketKind[PacketKind["EOS"] = 0] = "EOS";
PacketKind[PacketKind["Text"] = 1] = "Text";
PacketKind[PacketKind["Incomplete"] = 2] = "Incomplete";
PacketKind[PacketKind["ESC"] = 3] = "ESC";
PacketKind[PacketKind["Unknown"] = 4] = "Unknown";
PacketKind[PacketKind["SGR"] = 5] = "SGR";
PacketKind[PacketKind["OSCURL"] = 6] = "OSCURL";
})(PacketKind || (PacketKind = {}));
var AnsiUp = (function() {
function AnsiUp() {
this.VERSION = "5.0.1";
this.setup_palettes();
this._use_classes = false;
this.bold = false;
this.fg = this.bg = null;
this._buffer = '';
this._url_whitelist = { 'http': 1, 'https': 1 };
}
Object.defineProperty(AnsiUp.prototype, "use_classes", {
get: function() {
return this._use_classes;
},
set: function(arg) {
this._use_classes = arg;
},
enumerable: false,
configurable: true
});
Object.defineProperty(AnsiUp.prototype, "url_whitelist", {
get: function() {
return this._url_whitelist;
},
set: function(arg) {
this._url_whitelist = arg;
},
enumerable: false,
configurable: true
});
AnsiUp.prototype.setup_palettes = function() {
var _this = this;
this.ansi_colors = [
[
{ rgb: [0, 0, 0], class_name: "ansi-black" },
{ rgb: [187, 0, 0], class_name: "ansi-red" },
{ rgb: [0, 187, 0], class_name: "ansi-green" },
{ rgb: [187, 187, 0], class_name: "ansi-yellow" },
{ rgb: [0, 0, 187], class_name: "ansi-blue" },
{ rgb: [187, 0, 187], class_name: "ansi-magenta" },
{ rgb: [0, 187, 187], class_name: "ansi-cyan" },
{ rgb: [255, 255, 255], class_name: "ansi-white" }
],
[
{ rgb: [85, 85, 85], class_name: "ansi-bright-black" },
{ rgb: [255, 85, 85], class_name: "ansi-bright-red" },
{ rgb: [0, 255, 0], class_name: "ansi-bright-green" },
{ rgb: [255, 255, 85], class_name: "ansi-bright-yellow" },
{ rgb: [85, 85, 255], class_name: "ansi-bright-blue" },
{ rgb: [255, 85, 255], class_name: "ansi-bright-magenta" },
{ rgb: [85, 255, 255], class_name: "ansi-bright-cyan" },
{ rgb: [255, 255, 255], class_name: "ansi-bright-white" }
]
];
this.palette_256 = [];
this.ansi_colors.forEach(function(palette) {
palette.forEach(function(rec) {
_this.palette_256.push(rec);
});
});
var levels = [0, 95, 135, 175, 215, 255];
for (var r = 0; r < 6; ++r) {
for (var g = 0; g < 6; ++g) {
for (var b = 0; b < 6; ++b) {
var col = { rgb: [levels[r], levels[g], levels[b]], class_name: 'truecolor' };
this.palette_256.push(col);
}
}
}
var grey_level = 8;
for (var i = 0; i < 24; ++i, grey_level += 10) {
var gry = { rgb: [grey_level, grey_level, grey_level], class_name: 'truecolor' };
this.palette_256.push(gry);
}
};
AnsiUp.prototype.escape_txt_for_html = function(txt) {
return txt.replace(/[&<>"']/gm, function(str) {
if (str === "&")
return "&amp;";
if (str === "<")
return "&lt;";
if (str === ">")
return "&gt;";
if (str === "\"")
return "&quot;";
if (str === "'")
return "&#x27;";
});
};
AnsiUp.prototype.append_buffer = function(txt) {
var str = this._buffer + txt;
this._buffer = str;
};
AnsiUp.prototype.get_next_packet = function() {
var pkt = {
kind: PacketKind.EOS,
text: '',
url: ''
};
var len = this._buffer.length;
if (len == 0)
return pkt;
var pos = this._buffer.indexOf("\x1B");
if (pos == -1) {
pkt.kind = PacketKind.Text;
pkt.text = this._buffer;
this._buffer = '';
return pkt;
}
if (pos > 0) {
pkt.kind = PacketKind.Text;
pkt.text = this._buffer.slice(0, pos);
this._buffer = this._buffer.slice(pos);
return pkt;
}
if (pos == 0) {
if (len == 1) {
pkt.kind = PacketKind.Incomplete;
return pkt;
}
var next_char = this._buffer.charAt(1);
if ((next_char != '[') && (next_char != ']')) {
pkt.kind = PacketKind.ESC;
pkt.text = this._buffer.slice(0, 1);
this._buffer = this._buffer.slice(1);
return pkt;
}
if (next_char == '[') {
if (!this._csi_regex) {
this._csi_regex = rgx(__makeTemplateObject(["\n ^ # beginning of line\n #\n # First attempt\n (?: # legal sequence\n \u001B[ # CSI\n ([<-?]?) # private-mode char\n ([d;]*) # any digits or semicolons\n ([ -/]? # an intermediate modifier\n [@-~]) # the command\n )\n | # alternate (second attempt)\n (?: # illegal sequence\n \u001B[ # CSI\n [ -~]* # anything legal\n ([\0-\u001F:]) # anything illegal\n )\n "], ["\n ^ # beginning of line\n #\n # First attempt\n (?: # legal sequence\n \\x1b\\[ # CSI\n ([\\x3c-\\x3f]?) # private-mode char\n ([\\d;]*) # any digits or semicolons\n ([\\x20-\\x2f]? # an intermediate modifier\n [\\x40-\\x7e]) # the command\n )\n | # alternate (second attempt)\n (?: # illegal sequence\n \\x1b\\[ # CSI\n [\\x20-\\x7e]* # anything legal\n ([\\x00-\\x1f:]) # anything illegal\n )\n "]));
}
var match = this._buffer.match(this._csi_regex);
if (match === null) {
pkt.kind = PacketKind.Incomplete;
return pkt;
}
if (match[4]) {
pkt.kind = PacketKind.ESC;
pkt.text = this._buffer.slice(0, 1);
this._buffer = this._buffer.slice(1);
return pkt;
}
if ((match[1] != '') || (match[3] != 'm'))
pkt.kind = PacketKind.Unknown;
else
pkt.kind = PacketKind.SGR;
pkt.text = match[2];
var rpos = match[0].length;
this._buffer = this._buffer.slice(rpos);
return pkt;
}
if (next_char == ']') {
if (len < 4) {
pkt.kind = PacketKind.Incomplete;
return pkt;
}
if ((this._buffer.charAt(2) != '8')
|| (this._buffer.charAt(3) != ';')) {
pkt.kind = PacketKind.ESC;
pkt.text = this._buffer.slice(0, 1);
this._buffer = this._buffer.slice(1);
return pkt;
}
if (!this._osc_st) {
this._osc_st = rgxG(__makeTemplateObject(["\n (?: # legal sequence\n (\u001B\\) # ESC | # alternate\n (\u0007) # BEL (what xterm did)\n )\n | # alternate (second attempt)\n ( # illegal sequence\n [\0-\u0006] # anything illegal\n | # alternate\n [\b-\u001A] # anything illegal\n | # alternate\n [\u001C-\u001F] # anything illegal\n )\n "], ["\n (?: # legal sequence\n (\\x1b\\\\) # ESC \\\n | # alternate\n (\\x07) # BEL (what xterm did)\n )\n | # alternate (second attempt)\n ( # illegal sequence\n [\\x00-\\x06] # anything illegal\n | # alternate\n [\\x08-\\x1a] # anything illegal\n | # alternate\n [\\x1c-\\x1f] # anything illegal\n )\n "]));
}
this._osc_st.lastIndex = 0;
{
var match_1 = this._osc_st.exec(this._buffer);
if (match_1 === null) {
pkt.kind = PacketKind.Incomplete;
return pkt;
}
if (match_1[3]) {
pkt.kind = PacketKind.ESC;
pkt.text = this._buffer.slice(0, 1);
this._buffer = this._buffer.slice(1);
return pkt;
}
}
{
var match_2 = this._osc_st.exec(this._buffer);
if (match_2 === null) {
pkt.kind = PacketKind.Incomplete;
return pkt;
}
if (match_2[3]) {
pkt.kind = PacketKind.ESC;
pkt.text = this._buffer.slice(0, 1);
this._buffer = this._buffer.slice(1);
return pkt;
}
}
if (!this._osc_regex) {
this._osc_regex = rgx(__makeTemplateObject(["\n ^ # beginning of line\n #\n \u001B]8; # OSC Hyperlink\n [ -:<-~]* # params (excluding ;)\n ; # end of params\n ([!-~]{0,512}) # URL capture\n (?: # ST\n (?:\u001B\\) # ESC | # alternate\n (?:\u0007) # BEL (what xterm did)\n )\n ([ -~]+) # TEXT capture\n \u001B]8;; # OSC Hyperlink End\n (?: # ST\n (?:\u001B\\) # ESC | # alternate\n (?:\u0007) # BEL (what xterm did)\n )\n "], ["\n ^ # beginning of line\n #\n \\x1b\\]8; # OSC Hyperlink\n [\\x20-\\x3a\\x3c-\\x7e]* # params (excluding ;)\n ; # end of params\n ([\\x21-\\x7e]{0,512}) # URL capture\n (?: # ST\n (?:\\x1b\\\\) # ESC \\\n | # alternate\n (?:\\x07) # BEL (what xterm did)\n )\n ([\\x20-\\x7e]+) # TEXT capture\n \\x1b\\]8;; # OSC Hyperlink End\n (?: # ST\n (?:\\x1b\\\\) # ESC \\\n | # alternate\n (?:\\x07) # BEL (what xterm did)\n )\n "]));
}
var match = this._buffer.match(this._osc_regex);
if (match === null) {
pkt.kind = PacketKind.ESC;
pkt.text = this._buffer.slice(0, 1);
this._buffer = this._buffer.slice(1);
return pkt;
}
pkt.kind = PacketKind.OSCURL;
pkt.url = match[1];
pkt.text = match[2];
var rpos = match[0].length;
this._buffer = this._buffer.slice(rpos);
return pkt;
}
}
};
AnsiUp.prototype.ansi_to_html = function(txt) {
this.append_buffer(txt);
var blocks = [];
while (true) {
var packet = this.get_next_packet();
if ((packet.kind == PacketKind.EOS)
|| (packet.kind == PacketKind.Incomplete))
break;
if ((packet.kind == PacketKind.ESC)
|| (packet.kind == PacketKind.Unknown))
continue;
if (packet.kind == PacketKind.Text)
blocks.push(this.transform_to_html(this.with_state(packet)));
else if (packet.kind == PacketKind.SGR)
this.process_ansi(packet);
else if (packet.kind == PacketKind.OSCURL)
blocks.push(this.process_hyperlink(packet));
}
return blocks.join("");
};
AnsiUp.prototype.with_state = function(pkt) {
return { bold: this.bold, fg: this.fg, bg: this.bg, text: pkt.text };
};
AnsiUp.prototype.process_ansi = function(pkt) {
var sgr_cmds = pkt.text.split(';');
while (sgr_cmds.length > 0) {
var sgr_cmd_str = sgr_cmds.shift();
var num = parseInt(sgr_cmd_str, 10);
if (isNaN(num) || num === 0) {
this.fg = this.bg = null;
this.bold = false;
}
else if (num === 1) {
this.bold = true;
}
else if (num === 22) {
this.bold = false;
}
else if (num === 39) {
this.fg = null;
}
else if (num === 49) {
this.bg = null;
}
else if ((num >= 30) && (num < 38)) {
this.fg = this.ansi_colors[0][(num - 30)];
}
else if ((num >= 40) && (num < 48)) {
this.bg = this.ansi_colors[0][(num - 40)];
}
else if ((num >= 90) && (num < 98)) {
this.fg = this.ansi_colors[1][(num - 90)];
}
else if ((num >= 100) && (num < 108)) {
this.bg = this.ansi_colors[1][(num - 100)];
}
else if (num === 38 || num === 48) {
if (sgr_cmds.length > 0) {
var is_foreground = (num === 38);
var mode_cmd = sgr_cmds.shift();
if (mode_cmd === '5' && sgr_cmds.length > 0) {
var palette_index = parseInt(sgr_cmds.shift(), 10);
if (palette_index >= 0 && palette_index <= 255) {
if (is_foreground)
this.fg = this.palette_256[palette_index];
else
this.bg = this.palette_256[palette_index];
}
}
if (mode_cmd === '2' && sgr_cmds.length > 2) {
var r = parseInt(sgr_cmds.shift(), 10);
var g = parseInt(sgr_cmds.shift(), 10);
var b = parseInt(sgr_cmds.shift(), 10);
if ((r >= 0 && r <= 255) && (g >= 0 && g <= 255) && (b >= 0 && b <= 255)) {
var c = { rgb: [r, g, b], class_name: 'truecolor' };
if (is_foreground)
this.fg = c;
else
this.bg = c;
}
}
}
}
}
};
AnsiUp.prototype.transform_to_html = function(fragment) {
var txt = fragment.text;
if (txt.length === 0)
return txt;
// txt = this.escape_txt_for_html(txt);
if (!fragment.bold && fragment.fg === null && fragment.bg === null)
return txt;
var styles = [];
var classes = [];
var fg = fragment.fg;
var bg = fragment.bg;
if (fragment.bold)
styles.push('font-weight:bold');
if (!this._use_classes) {
if (fg)
styles.push("color:rgb(" + fg.rgb.join(',') + ")");
if (bg)
styles.push("background-color:rgb(" + bg.rgb + ")");
}
else {
if (fg) {
if (fg.class_name !== 'truecolor') {
classes.push(fg.class_name + "-fg");
}
else {
styles.push("color:rgb(" + fg.rgb.join(',') + ")");
}
}
if (bg) {
if (bg.class_name !== 'truecolor') {
classes.push(bg.class_name + "-bg");
}
else {
styles.push("background-color:rgb(" + bg.rgb.join(',') + ")");
}
}
}
var class_string = '';
var style_string = '';
if (classes.length)
class_string = " class=\"" + classes.join(' ') + "\"";
if (styles.length)
style_string = " style=\"" + styles.join(';') + "\"";
return "<span" + style_string + class_string + ">" + txt + "</span>";
};
;
AnsiUp.prototype.process_hyperlink = function(pkt) {
var parts = pkt.url.split(':');
if (parts.length < 1)
return '';
if (!this._url_whitelist[parts[0]])
return '';
// var result = "<a href=\"" + this.escape_txt_for_html(pkt.url) + "\">" + this.escape_txt_for_html(pkt.text) + "</a>";
var result = "<a href=\"" + this.escape_txt_for_html(pkt.url) + "\">" + pkt.text + "</a>";
return result;
};
return AnsiUp;
}());
function rgx(tmplObj) {
var subst = [];
for (var _i = 1; _i < arguments.length; _i++) {
subst[_i - 1] = arguments[_i];
}
var regexText = tmplObj.raw[0];
var wsrgx = /^\s+|\s+\n|\s*#[\s\S]*?\n|\n/gm;
var txt2 = regexText.replace(wsrgx, '');
return new RegExp(txt2);
}
function rgxG(tmplObj) {
var subst = [];
for (var _i = 1; _i < arguments.length; _i++) {
subst[_i - 1] = arguments[_i];
}
var regexText = tmplObj.raw[0];
var wsrgx = /^\s+|\s+\n|\s*#[\s\S]*?\n|\n/gm;
var txt2 = regexText.replace(wsrgx, '');
return new RegExp(txt2, 'g');
}
</script>
<script>
var dots = [];
var span = [];
var ansi_up = new AnsiUp;
function show_Wait(id) {
span[id] = document.getElementById("wait" + id);
dots[id] = setInterval(function() {
if (((span[id].innerHTML+='.').match(/\./g)||[]).length > 9) {
span[id].innerHTML = span[id].innerHTML.replace(/\.+$/,'');
}
}, 500);
}
function stop_Wait(id) {
span[id].innerHTML = '';
clearInterval( dots[id] );
}
function addLog(logLine) {
var elms = document.getElementsByClassName('logLine');
logLine = ansi_up.ansi_to_html(logLine);
if (elms.length) {
var el = elms[elms.length-1];
el.innerHTML += logLine + "<br>";
}
window.scrollTo(0, document.body.scrollHeight);
}
function loadLog(container, since) {
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState === 4 && httpRequest.status === 200) {
parseScript(httpRequest.responseText);
}
};
httpRequest.open('GET', location.protocol+'//'+location.host+location.pathname+'?action=log&container='+encodeURIComponent(container)+'&since='+encodeURIComponent(since));
httpRequest.send();
}
function parseScript(_source) {
var source = _source;
var scripts = [];
while(source.indexOf("<script") > -1 || source.indexOf("</script") > -1) {
var s = source.indexOf("<script");
var s_e = source.indexOf(">", s);
var e = source.indexOf("</script", s);
var e_e = source.indexOf(">", e);
scripts.push(source.substring(s_e+1, e));
source = source.substring(0, s) + source.substring(e_e+1);
}
for (var i=0; i<scripts.length; i++) {
try {
eval(scripts[i]);
} catch(ex) {}
}
return source;
}
function progress(id, prog) {
var elms = document.getElementsByClassName(id+'_progress');
if (elms.length) {
elms[elms.length-1].textContent = prog;
}
}
function addToID(id, m) {
var elms = document.getElementById(id);
if (elms === null) {
addLog('<span id=\"'+id+'\">IMAGE ID ['+id+']: <span class=\"content\">'+m+'</span><span class=\"'+id+'_progress\"></span>. </span>');
} else {
var elms_content = elms.getElementsByClassName("content");
if (!elms_content.length || elms_content[elms_content.length-1].textContent != m) {
elms.innerHTML += '<span class=\"content\">'+m+'</span><span class=\"'+id+'_progress\"></span>. ';
}
}
}
</script>
</head>
<body>
<div id="content"><p class="logLine" id="logBody"></p></div>
</body>
</html>

View File

@@ -0,0 +1,79 @@
#!/usr/bin/php -q
<?PHP
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
?>
<?
$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Wrappers.php";
extract(parse_plugin_cfg('dynamix',true));
// add translations
$_SERVER['REQUEST_URI'] = 'docker';
$login_locale = _var($display,'locale');
require_once "$docroot/webGui/include/Translations.php";
$units = ['B','kB','MB','GB','TB','PB','EB','ZB','YB'];
$list = [];
function write(...$messages){
$com = curl_init();
curl_setopt_array($com,[
CURLOPT_URL => 'http://localhost/pub/plugins?buffer_length=1',
CURLOPT_UNIX_SOCKET_PATH => '/var/run/nginx.socket',
CURLOPT_POST => 1,
CURLOPT_RETURNTRANSFER => true
]);
foreach ($messages as $message) {
curl_setopt($com, CURLOPT_POSTFIELDS, $message);
curl_exec($com);
}
curl_close($com);
}
function autoscale($value) {
global $units;
$size = count($units);
$base = $value ? floor(log($value, 1000)) : 0;
if ($base>=$size) $base = $size-1;
$value /= pow(1000, $base);
$decimals = $base ? ($value>=100 ? 0 : ($value>=10 ? 1 : (round($value*100)%100===0 ? 0 : 2))) : 0;
return number_format($value, $decimals, '.', $value>9999 ? ',' : '').' '.$units[$base];
}
function align($text, $w=25) {
return $text.str_repeat('&nbsp;',$w-min(strlen($text),$w-1));
}
function gap($text) {
return preg_replace('/([kMGTPEZY]?B)$/'," $1",$text);
}
function byteval($data) {
global $units;
[$value,$base] = explode(' ',gap($data));
return $value*pow(1000,array_search($base,$units));
}
exec("docker ps -sa --format='{{.Names}}|{{.Size}}'",$container);
foreach ($container as $ct) {
[$name,$size] = explode('|',$ct);
[$writable,$dummy,$total] = explode(' ',str_replace(['(',')'],'',$size));
$list[] = ['name' => $name, 'total' => byteval($total), 'writable' => byteval($writable), 'log' => (exec("docker inspect --format='{{.LogPath}}' $name|xargs du -b 2>/dev/null |cut -f1")) ?: "0"];
}
$sum = ['total' => 0, 'writable' => 0, 'log' => 0];
array_multisort(array_column($list,'total'),SORT_DESC,$list); // sort on container size
$i = 0;
write(align(_('Name'),48).align(_('Container')).align(_('Writable'))._('Log')."\n");
foreach ($list as $ct) {
write(($i++==0 ? '<hr>':'').align($ct['name'],48).align(autoscale($ct['total'])).align(autoscale($ct['writable'])).autoscale($ct['log'])."\n");
$sum['total'] += $ct['total'];
$sum['writable'] += $ct['writable'];
$sum['log'] += $ct['log'];
}
write("<hr>".align(_('Total size'),48).align(autoscale($sum['total'])).align(autoscale($sum['writable'])).autoscale($sum['log'])."\n",'_DONE_','');
?>

View File

@@ -0,0 +1,58 @@
#!/usr/bin/php -q
<?PHP
/* Copyright 2015-2023, Lime Technology
* Copyright 2015-2016, Guilherme Jardim, Eric Schultz, Jon Panozzo.
* Copyright 2012-2023, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
?>
<?
/* Define the path to the docker configuration file */
$cfgfile = "/boot/config/docker.cfg";
/* Define the default configuration values */
$cfg_defaults = [
"DOCKER_ENABLED" => "no",
"DOCKER_IMAGE_FILE" => "/mnt/user/system/docker/docker.img",
"DOCKER_IMAGE_SIZE" => "20",
"DOCKER_APP_CONFIG_PATH" => "/mnt/user/appdata/",
"DOCKER_APP_UNRAID_PATH" => "",
"DOCKER_READMORE" => "yes",
"DOCKER_PID_LIMIT" => ""
];
/* Initialize the new configuration with the default values */
$cfg_new = $cfg_defaults;
/* Check if the configuration file exists */
if (file_exists($cfgfile)) {
/* Parse the existing configuration file */
$cfg_old = parse_ini_file($cfgfile);
/* If the existing configuration is not empty, merge it with the defaults */
if (!empty($cfg_old)) {
/* Merge only missing keys from defaults */
$cfg_new = array_merge($cfg_defaults, $cfg_old);
/* If there are no changes between the new and old configurations, unset the new configuration */
if (empty(array_diff_assoc($cfg_new, $cfg_old))) {
$cfg_new = null;
}
}
}
/* If the new configuration is set, write it to the configuration file */
if (isset($cfg_new)) {
$tmp = '';
foreach ($cfg_new as $key => $value) {
$tmp .= "$key=\"$value\"\n";
}
file_put_contents($cfgfile, $tmp);
}
?>

View File

@@ -1,7 +1,8 @@
#!/usr/bin/php
#!/usr/bin/php -q
<?PHP
/* Copyright 2005-2018, Lime Technology
* Copyright 2014-2018, Guilherme Jardim, Eric Schultz, Jon Panozzo.
/* Copyright 2005-2024, Lime Technology
* Copyright 2012-2024, Bergware International.
* Copyright 2014-2021, Guilherme Jardim, Eric Schultz, Jon Panozzo.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
@@ -12,23 +13,20 @@
*/
?>
<?
session_start();
$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Wrappers.php";
$unraid = parse_plugin_cfg('dynamix', true);
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
// this command will set the $notify array
extract(parse_plugin_cfg('dynamix', true));
// Multi-language support
$_SESSION['locale'] = $unraid['display']['locale'];
$_SERVER['REQUEST_URI'] = "scripts";
$login_locale = _var($display,'locale');
require_once "$docroot/webGui/include/Translations.php";
exec("pgrep docker", $pid);
exec('pgrep --ns $$ docker', $pid);
if (count($pid) == 1) exit(0);
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
$DockerClient = new DockerClient();
$DockerTemplates = new DockerTemplates();
@@ -46,26 +44,23 @@ if (!isset($check)) {
$DockerTemplates->getAllInfo(true);
echo " Done.";
} else {
require_once "$docroot/webGui/include/Wrappers.php";
$notify = "$docroot/webGui/scripts/notify";
$unraid = parse_plugin_cfg("dynamix",true);
$var = parse_ini_file("/var/local/emhttp/var.ini");
$server = strtoupper($var['NAME']);
$output = $unraid['notify']['docker_notify'];
$info = $DockerTemplates->getAllInfo(true);
$script = "$docroot/webGui/scripts/notify";
$var = (array)@parse_ini_file("/var/local/emhttp/var.ini");
$server = strtoupper(_var($var,'NAME','tower'));
$output = _var($notify,'docker_notify');
$info = $DockerTemplates->getAllInfo(true);
foreach ($DockerClient->getDockerContainers() as $ct) {
$name = $ct['Name'];
$name = $ct['Name'];
$image = $ct['Image'];
if ($info[$name]['updated'] == "false") {
$updateStatus = (is_file($dockerManPaths['update-status'])) ? json_decode(file_get_contents($dockerManPaths['update-status']), TRUE) : [];
$updateStatus = is_file($dockerManPaths['update-status']) ? json_decode(file_get_contents($dockerManPaths['update-status']),true) : [];
$new = str_replace('sha256:', '', $updateStatus[$image]['remote']);
$new = substr($new, 0, 4).'..'.substr($new, -4, 4);
if ( ! isset($nonotify) ) {
$event = str_replace("&apos;","'",_("Docker")." - $name [$new]");
$subject = str_replace("&apos;","'",sprintf(_("Notice [%s] - Version update %s"),$server,$new));
$description = str_replace("&apos;","'",sprintf(_("A new version of %s is available"),$name));
exec("$notify -e ".escapeshellarg($event)." -s ".escapeshellarg($subject)." -d ".escapeshellarg($description)." -i ".escapeshellarg("normal $output")." -l '/Docker' -x");
exec("$script -e ".escapeshellarg($event)." -s ".escapeshellarg($subject)." -d ".escapeshellarg($description)." -i ".escapeshellarg("normal $output")." -l '/Docker' -x");
}
}
}

View File

@@ -0,0 +1,30 @@
#!/usr/bin/php -q
<?PHP
function startsWith($haystack, $needle) {
if (!is_string($haystack) || !is_string($needle)) return false;
return $needle === "" || strripos($haystack, $needle, -strlen($haystack)) !== false;
}
$xmlFiles = glob("/boot/config/plugins/dockerMan/templates-user/*.xml");
foreach ($xmlFiles as $file) {
unset($changeFlag);
$xml = @simplexml_load_file($file);
if (!$xml) continue;
foreach ($xml->Config as $id => $config) {
if (startsWith((string)$config->attributes()->Description,"Container ".(string)$config->attributes()->Type)) {
$config->attributes()->Description = "";
$changeFlag = true;
}
}
if (isset($changeFlag)) {
copy($file,"$file.bak");
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml->asXML());
file_put_contents($file,$dom->saveXML());
}
}
?>

View File

@@ -0,0 +1,38 @@
#!/usr/bin/php -q
<?PHP
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
?>
<?
$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
$DockerClient = new DockerClient();
$DockerUpdate = new DockerUpdate();
$DockerTemplates = new DockerTemplates();
$start = array_map(function($row){return strtok($row,' ');},@file('/var/lib/docker/unraid-autostart',FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES) ?: []);
$custom = DockerUtil::custom();
$subnet = DockerUtil::network($custom);
$cpus = DockerUtil::cpus();
$tmpl = $DockerTemplates->getUserTemplate($argv[1]);
$xml = file_get_contents($tmpl);
[$cmd,$name,$repository] = xmlToCommand($tmpl);
$old = $DockerClient->getImageID($repository);
removeContainer($name,false,false);
execCommand(str_replace('/docker create ','/docker run -d ',$cmd),false);
if (!in_array($name,$start)) stopContainer($name,false,false);
$DockerClient->flushCaches();
$new = $DockerClient->getImageID($repository);
if ($old && $old != $new) removeImage($old,false);
?>

View File

@@ -0,0 +1,213 @@
#!/usr/bin/php -q
<?PHP
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
?>
<?
$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Wrappers.php";
extract(parse_plugin_cfg('dynamix',true));
// add translations
$_SERVER['REQUEST_URI'] = '';
$login_locale = _var($display,'locale');
require_once "$docroot/plugins/dynamix.docker.manager/include/DockerClient.php";
$var = parse_ini_file('/var/local/emhttp/var.ini');
$DockerClient = new DockerClient();
$DockerUpdate = new DockerUpdate();
$DockerTemplates = new DockerTemplates();
$custom = DockerUtil::custom();
$subnet = DockerUtil::network($custom);
$cpus = DockerUtil::cpus();
function write(...$messages){
$com = curl_init();
curl_setopt_array($com,[
CURLOPT_URL => 'http://localhost/pub/docker?buffer_length=1',
CURLOPT_UNIX_SOCKET_PATH => '/var/run/nginx.socket',
CURLOPT_POST => 1,
CURLOPT_RETURNTRANSFER => true
]);
foreach ($messages as $message) {
curl_setopt($com, CURLOPT_POSTFIELDS, $message);
curl_exec($com);
}
curl_close($com);
}
function stopContainer_nchan($name) {
global $DockerClient;
$waitID = mt_rand();
write("<p class='logLine'></p>","addLog\0<fieldset class='docker'><legend>"._('Stopping container').": ".htmlspecialchars($name)."</legend><p class='logLine'></p><span id='wait-$waitID'>"._('Please wait')." </span></fieldset>","show_Wait\0$waitID");
$retval = $DockerClient->stopContainer($name);
$out = ($retval === true) ? _('Successfully stopped container').": $name" : _('Error').": ".$retval;
write("stop_Wait\0$waitID","addLog\0<b>".htmlspecialchars($out)."</b>");
}
function removeContainer_nchan($name) {
global $DockerClient;
$waitID = mt_rand();
write("<p class='logLine'></p>","addLog\0<fieldset class='docker'><legend>"._('Removing container').": ".htmlspecialchars($name)."</legend><p class='logLine'></p><span id='wait-$waitID'>"._('Please wait')." </span></fieldset>","show_Wait\0$waitID");
$retval = $DockerClient->removeContainer($name);
$out = ($retval === true) ? _('Successfully removed container').": $name" : _('Error').": ".$retval;
write("stop_Wait\0$waitID","addLog\0<b>".htmlspecialchars($out)."</b>");
}
function removeImage_nchan($image) {
global $DockerClient;
$waitID = mt_rand();
write("<p class='logLine'></p>","addLog\0<fieldset class='docker'><legend>"._('Removing orphan image').": ".htmlspecialchars($image)."</legend><p class='logLine'></p><span id='wait-$waitID'>"._('Please wait')." </span></fieldset>","show_Wait\0$waitID");
$retval = $DockerClient->removeImage($image);
$out = ($retval === true) ? _('Successfully removed orphan image').": $image" : _('Error').": ".$retval;
write("stop_Wait\0$waitID","addLog\0<b>".htmlspecialchars($out)."</b>");
}
function pullImage_nchan($name, $image) {
global $DockerClient, $DockerTemplates, $DockerUpdate;
$waitID = mt_rand();
if (!preg_match("/:\S+$/", $image)) $image .= ":latest";
write("<p class='logLine'></p>","addLog\0<fieldset class='docker'><legend>"._('Pulling image').": ".htmlspecialchars($image)."</legend><p class='logLine'></p><span id='wait-$waitID'>"._('Please wait')." </span></fieldset>","show_Wait\0$waitID");
$alltotals = [];
$laststatus = [];
$strError = '';
$DockerClient->pullImage($image, function ($line) use (&$alltotals, &$laststatus, &$waitID, &$strError, $image, $DockerClient, $DockerUpdate) {
$cnt = json_decode($line, true);
$id = $cnt['id'] ?? '';
$status = $cnt['status'] ?? '';
if (isset($cnt['error'])) $strError = $cnt['error'];
if ($waitID !== false) {
write("stop_Wait\0$waitID");
$waitID = false;
}
if (empty($status)) return;
if (!empty($id)) {
if (!empty($cnt['progressDetail']) && !empty($cnt['progressDetail']['total'])) {
$alltotals[$id] = $cnt['progressDetail']['total'];
}
if (empty($laststatus[$id])) {
$laststatus[$id] = '';
}
switch ($status) {
case 'Waiting':
// Omit
break;
case 'Downloading':
if ($laststatus[$id] != $status) {
write("addToID\0$id\0".htmlspecialchars($status));
}
$total = $cnt['progressDetail']['total'];
$current = $cnt['progressDetail']['current'];
if ($total > 0) {
$percentage = round(($current / $total) * 100);
write("progress\0$id\0 ".$percentage."% "._('of')." ".$DockerClient->formatBytes($total));
} else {
// Docker must not know the total download size (http-chunked or something?)
// just show the current download progress without the percentage
$alltotals[$id] = $current;
write("progress\0$id\0".$DockerClient->formatBytes($current));
}
break;
default:
if ($laststatus[$id] == "Downloading") {
write("progress\0$id\0 100% "._('of')." ".$DockerClient->formatBytes($alltotals[$id]));
}
if ($laststatus[$id] != $status) {
write("addToID\0".($id=='latest'?mt_rand():$id)."\0".htmlspecialchars($status));
}
break;
}
$laststatus[$id] = $status;
} else {
if (strpos($status, 'Status: ') === 0) {
write("addLog\0".htmlspecialchars($status));
}
if (strpos($status, 'Digest: ') === 0) {
$DockerUpdate->setUpdateStatus($image, substr($status,8));
}
}
});
write("addLog\0<br><b>"._('TOTAL DATA PULLED').":</b> ".$DockerClient->formatBytes(array_sum($alltotals)));
if (!empty($strError)) {
write("addLog\0<br><span class='error'><b>"._('Error').":</b> ".htmlspecialchars($strError)."</span>");
return false;
}
return true;
}
function execCommand_nchan($command) {
$waitID = mt_rand();
[$cmd,$args] = explode(' ',$command,2);
write("<p class='logLine'></p>","addLog\0<fieldset class='docker'><legend>"._('Command execution')."</legend>".basename($cmd).' '.str_replace(" -","<br>&nbsp;&nbsp;-",htmlspecialchars($args))."<br><span id='wait-$waitID'>"._('Please wait')." </span><p class='logLine'></p></fieldset>","show_Wait\0$waitID");
$proc = popen("$command 2>&1",'r');
while ($out = fgets($proc)) {
$out = preg_replace("%[\t\n\x0B\f\r]+%", '',$out);
write("addLog\0".htmlspecialchars($out));
}
$retval = pclose($proc);
$out = $retval ? _('The command failed').'.' : _('The command finished successfully').'!';
write("stop_Wait\0$waitID","addLog\0<br><b>$out</b>");
return $retval===0;
}
$style = ["<style>"];
$style[] = ".logLine{font-family:bitstream!important;font-size:1.2rem!important;margin:0;padding:0}";
$style[] = "fieldset.docker{border:solid thin;margin-top:8px}";
$style[] = "legend{font-size:1.1rem!important;font-weight:bold}";
$style[] = "</style>";
write(implode($style)."<p class='logLine'></p>");
foreach (explode('*',rawurldecode($argv[1])) as $value) {
$tmpl = $DockerTemplates->getUserTemplate($value);
if (!$tmpl) {
write("addLog\0"._('Configuration not found').". "._('Was this container created using this plugin')."?");
continue;
}
$xml = file_get_contents($tmpl);
[$cmd, $Name, $Repository] = xmlToCommand($tmpl);
$Registry = getXmlVal($xml, "Registry");
$TS_Enabled = getXmlVal($xml, "TailscaleEnabled");
$oldImageID = $DockerClient->getImageID($Repository);
// pull image
if (!pullImage_nchan($Name, $Repository)) continue;
$oldContainerInfo = $DockerClient->getContainerDetails($Name);
// determine if the container is still running
$startContainer = false;
if (!empty($oldContainerInfo) && !empty($oldContainerInfo['State']) && !empty($oldContainerInfo['State']['Running'])) {
// since container was already running, put it back it to a running state after update
$startContainer = true;
// attempt graceful stop of container first
stopContainer_nchan($Name);
}
if ( ($argv[2]??null) == "ca_docker_run_override" )
$startContainer = true;
if ( $startContainer )
$cmd = str_replace('/docker create ', '/docker run -d ', $cmd);
// force kill container if still running after 10 seconds
if (empty($_GET['communityApplications'])) removeContainer_nchan($Name);
// Extract real Entrypoint and Cmd from container for Tailscale
if ($TS_Enabled == 'true') {
// Create preliminary base container but don't run it
exec("/usr/local/emhttp/plugins/dynamix.docker.manager/scripts/docker create --name '" . escapeshellarg($Name) . "' '" . escapeshellarg($Repository) . "'");
// Get Entrypoint and Cmd from docker inspect
$containerInfo = $DockerClient->getContainerDetails($Name);
$ts_env = isset($containerInfo['Config']['Entrypoint']) ? '-e ORG_ENTRYPOINT="' . implode(' ', $containerInfo['Config']['Entrypoint']) . '" ' : '';
$ts_env .= isset($containerInfo['Config']['Cmd']) ? '-e ORG_CMD="' . implode(' ', $containerInfo['Config']['Cmd']) . '" ' : '';
// Insert Entrypoint and Cmd to docker command
$cmd = str_replace('-l net.unraid.docker.managed=dockerman', $ts_env . '-l net.unraid.docker.managed=dockerman' , $cmd);
// Remove preliminary container
exec("/usr/local/emhttp/plugins/dynamix.docker.manager/scripts/docker rm '" . escapeshellarg($Name) . "'");
}
execCommand_nchan($cmd);
if ($startContainer) addRoute($Name); // add route for remote WireGuard access
$DockerClient->flushCaches();
$newImageID = $DockerClient->getImageID($Repository);
// remove old orphan image since it's no longer used by this container
if ($oldImageID && $oldImageID != $newImageID) removeImage_nchan($oldImageID);
}
write('_DONE_','');
?>

View File

@@ -0,0 +1 @@
.fileTree{width:240px;max-height:200px;overflow-y:scroll;overflow-x:hidden;position:absolute;display:none;background:#f2f2f2}

View File

@@ -0,0 +1 @@
.fileTree{width:240px;max-height:200px;overflow-y:scroll;overflow-x:hidden;position:absolute;display:none;background:#1c1c1c}

View File

@@ -0,0 +1 @@
.fileTree{width:240px;max-height:200px;overflow-y:scroll;overflow-x:hidden;position:absolute;display:none;background:#1c1c1c}

View File

@@ -0,0 +1 @@
.fileTree{width:240px;max-height:200px;overflow-y:scroll;overflow-x:hidden;position:absolute;display:none;background:#f2f2f2}

View File

@@ -0,0 +1,14 @@
.noshow,.advanced{display:none}
.required:after{content:" *";color:#E80000}
span.boxed{display:inline-block;line-height:normal;white-space:normal;width:60%}
span.cpu,label.checkbox{display:inline-block;width:32px}
span.ct{display:inline-block;width:230px}
span.net{display:inline-block;width:120px}
span.ip{display:inline-block;width:160px}
dl,dt,dd{line-height:normal!important;height:auto!important}
dl{padding:8px 0!important}
dl>dt:nth-of-type(2),dl>dd:nth-of-type(2){padding:20px 0 0 0!important}
input.setting_input{margin-right:4rem}
input,select{margin-top:-0.8rem!important}
div#configLocation,div#configLocation dl{padding:0!important}
div#configLocation dt{margin-top:-0.18rem!important}

View File

@@ -0,0 +1,12 @@
.basic{display:block}
.advanced{display:none;white-space:nowrap}
.log{cursor:zoom-in}
.exec{cursor:pointer}
table#docker_containers{text-align:left}
th.five{width:5%}
th.nine{width:9%}
th.load{width:140px}
input.wait{width:24px;margin:0 4px;padding:0 5px;border:none;box-shadow:none;background-color:transparent}
table tbody td{line-height:normal}
i.mover{margin-right:8px;display:none}
#resetsort{margin-left:12px;display:inline-block;width:32px}

View File

@@ -0,0 +1,2 @@
.fileTree{background:#f2f2f2;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
span.disabled{color:#B0B0B0}

View File

@@ -0,0 +1,2 @@
.fileTree{background:#1c1c1c;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
span.disabled{color:#404040}

View File

@@ -0,0 +1,2 @@
.fileTree{background:#1c1c1c;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
span.disabled{color:#404040}

View File

@@ -0,0 +1,2 @@
.fileTree{background:#f2f2f2;width:300px;max-height:150px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
span.disabled{color:#B0B0B0}

View File

@@ -0,0 +1,17 @@
.errortext{color:#EF3D47;display:none;margin-left:20px}
.basic{display:inline-block}
.advanced{display:none}
select.mask{min-width:0;margin:0 10px 0 4px}
select.net{min-width:0;margin:0 4px 0 2px}
select option.hide{display:none}
input.ip4{width:100px;margin:0 4px 0 1px}
input.ip6{width:140px;margin:0 4px}
input.gw4{width:100px;margin:0 4px 0 1px}
input.gw6{width:160px;margin:0 4px}
input.pool6{width:40px;margin:0 4px 0 1px}
span.net{margin-left:4px;margin-right:2px}
span.ip4{display:inline-block;width:260px}
span.ip6{display:inline-block;width:310px}
span.gw4{display:inline-block;width:200px}
span.gw6{display:inline-block;width:270px}
span.nonexist{margin-left:20px}

View File

@@ -0,0 +1 @@
.fileTree{width:240px;max-height:200px;overflow-y:scroll;overflow-x:hidden;position:absolute;display:none;background:#f2f2f2}

View File

@@ -0,0 +1 @@
.fileTree{width:240px;max-height:200px;overflow-y:scroll;overflow-x:hidden;position:absolute;display:none;background:#1c1c1c}

View File

@@ -0,0 +1 @@
.fileTree{width:240px;max-height:200px;overflow-y:scroll;overflow-x:hidden;position:absolute;display:none;background:#1c1c1c}

View File

@@ -0,0 +1 @@
.fileTree{width:240px;max-height:200px;overflow-y:scroll;overflow-x:hidden;position:absolute;display:none;background:#f2f2f2}

View File

@@ -0,0 +1,14 @@
.noshow,.advanced{display:none}
.required:after{content:" *";color:#E80000}
span.boxed{display:inline-block;line-height:normal;white-space:normal;width:60%}
span.cpu,label.checkbox{display:inline-block;width:32px}
span.ct{display:inline-block;width:230px}
span.net{display:inline-block;width:120px}
span.ip{display:inline-block;width:160px}
dl,dt,dd{line-height:normal!important;height:auto!important}
dl{padding:8px 0!important}
dl>dt:nth-of-type(2),dl>dd:nth-of-type(2){padding:20px 0 0 0!important}
input.setting_input{margin-right:4rem}
input,select{margin-top:-0.8rem!important}
div#configLocation,div#configLocation dl{padding:0!important}
div#configLocation dt{margin-top:-0.18rem!important}

View File

@@ -0,0 +1,14 @@
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button{font-family:clear-sans;font-size:1.1rem;font-weight:bold;letter-spacing:2px;text-transform:uppercase;margin:10px 12px 10px 0;padding:9px 18px;text-decoration:none;white-space:nowrap;cursor:pointer;outline:none;border-radius:4px;border:0;color:#ff8c2f;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#e22828),to(#e22828)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#ff8c2f),to(#ff8c2f)) 100% 100% no-repeat;background:linear-gradient(90deg,#e22828 0,#ff8c2f) 0 0 no-repeat,linear-gradient(90deg,#e22828 0,#ff8c2f) 0 100% no-repeat,linear-gradient(0deg,#e22828 0,#e22828) 0 100% no-repeat,linear-gradient(0deg,#ff8c2f 0,#ff8c2f) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%}
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button:hover{color:#f2f2f2;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f));background:linear-gradient(90deg,#e22828 0,#ff8c2f)}
.ui-dropdownchecklist .ui-state-default{background:#f2f2f2;border:none;box-shadow:none;outline:none;cursor:pointer;height:2.2rem;line-height:2.2rem}
.ui-dropdownchecklist-group{font-weight:normal;font-style:italic;padding:1px 9px 1px 8px}
.ui-dropdownchecklist-selector{border:1px solid #1c1c1c;display:inline-block;cursor:pointer;padding:1px 9px 1px 8px}
.ui-dropdownchecklist-selector-wrapper{vertical-align:middle;font-size:0}
.ui-widget-header{border:none;background:#e3e3e3;color:#1c1c1c;font-weight:bold}
.ui-widget-content{border:1px solid #1c1c1c;background:#f2f2f2;color:#1c1c1c}
.ui-state-active{background:#e8e8e8}
.ui-dropdownchecklist-dropcontainer{background:#f2f2f2;border:1px solid #1c1c1c}
.ui-state-disabled{color:#1c1c1c;border-color:#a2a2a2;background:#e8e8e8;opacity:0.5}
.ui-dropdownchecklist-indent{padding-left:7px}
.ui-dropdownchecklist-text{color:#1c1c1c;font-size:1.3rem}
.ui-dropdownchecklist .ui-widget-content .ui-state-default{background:#f2f2f2;border:0px}

View File

@@ -0,0 +1,14 @@
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button{font-family:clear-sans;font-size:1.1rem;font-weight:bold;letter-spacing:2px;text-transform:uppercase;margin:10px 12px 10px 0;padding:9px 18px;text-decoration:none;white-space:nowrap;cursor:pointer;outline:none;border-radius:4px;border:0;color:#ff8c2f;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#e22828),to(#e22828)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#ff8c2f),to(#ff8c2f)) 100% 100% no-repeat;background:linear-gradient(90deg,#e22828 0,#ff8c2f) 0 0 no-repeat,linear-gradient(90deg,#e22828 0,#ff8c2f) 0 100% no-repeat,linear-gradient(0deg,#e22828 0,#e22828) 0 100% no-repeat,linear-gradient(0deg,#ff8c2f 0,#ff8c2f) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%}
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button:hover{color:#f2f2f2;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f));background:linear-gradient(90deg,#e22828 0,#ff8c2f)}
.ui-dropdownchecklist .ui-state-default{background:#1c1c1c;border:none;box-shadow:none;outline:none;cursor:pointer;height:2.2rem;line-height:2.2rem}
.ui-dropdownchecklist-group{font-weight:normal;font-style:italic;padding:1px 9px 1px 8px}
.ui-dropdownchecklist-selector{border:1px solid #e5e5e5;display:inline-block;cursor:pointer;padding:1px 9px 1px 8px}
.ui-dropdownchecklist-selector-wrapper{vertical-align:middle;font-size:0}
.ui-widget-header{border:none;background:#2b2b2b;color:#f2f2f2;font-weight:bold}
.ui-widget-content{border:1px solid #e5e5e5;background:#1c1c1c;color:#f2f2f2}
.ui-state-active{background:#262626}
.ui-dropdownchecklist-dropcontainer{background:#1c1c1c;border:1px solid #e5e5e5}
.ui-state-disabled{color:#f2f2f2;border-color:#6c6c6c;background:#262626;opacity:0.5}
.ui-dropdownchecklist-indent{padding-left:7px}
.ui-dropdownchecklist-text{color:#f2f2f2;font-size:1.3rem}
.ui-dropdownchecklist .ui-widget-content .ui-state-default{background:#1c1c1c;border:0px}

View File

@@ -0,0 +1,14 @@
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button{font-family:clear-sans;font-size:1.1rem;font-weight:bold;letter-spacing:2px;text-transform:uppercase;margin:10px 12px 10px 0;padding:9px 18px;text-decoration:none;white-space:nowrap;cursor:pointer;outline:none;border-radius:4px;border:0;color:#ff8c2f;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#e22828),to(#e22828)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#ff8c2f),to(#ff8c2f)) 100% 100% no-repeat;background:linear-gradient(90deg,#e22828 0,#ff8c2f) 0 0 no-repeat,linear-gradient(90deg,#e22828 0,#ff8c2f) 0 100% no-repeat,linear-gradient(0deg,#e22828 0,#e22828) 0 100% no-repeat,linear-gradient(0deg,#ff8c2f 0,#ff8c2f) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%}
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button:hover{color:#f2f2f2;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f));background:linear-gradient(90deg,#e22828 0,#ff8c2f)}
.ui-dropdownchecklist .ui-state-default{background:#1c1c1c;border:none;box-shadow:none;outline:none;cursor:pointer;height:2.2rem;line-height:2.2rem}
.ui-dropdownchecklist-group{font-weight:normal;font-style:italic;padding:1px 9px 1px 8px}
.ui-dropdownchecklist-selector{border:1px solid #e5e5e5;display:inline-block;cursor:pointer;padding:1px 9px 1px 8px}
.ui-dropdownchecklist-selector-wrapper{vertical-align:middle;font-size:0}
.ui-widget-header{border:none;background:#2b2b2b;color:#f2f2f2;font-weight:bold}
.ui-widget-content{border:1px solid #e5e5e5;background:#1c1c1c;color:#f2f2f2}
.ui-state-active{background:#262626}
.ui-dropdownchecklist-dropcontainer{background:#1c1c1c;border:1px solid #e5e5e5}
.ui-state-disabled{color:#f2f2f2;border-color:#6c6c6c;background:#262626;opacity:0.5}
.ui-dropdownchecklist-indent{padding-left:7px}
.ui-dropdownchecklist-text{color:#f2f2f2;font-size:1.3rem}
.ui-dropdownchecklist .ui-widget-content .ui-state-default{background:#1c1c1c;border:0px}

View File

@@ -0,0 +1,14 @@
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button{font-family:clear-sans;font-size:1.1rem;font-weight:bold;letter-spacing:2px;text-transform:uppercase;margin:10px 12px 10px 0;padding:9px 18px;text-decoration:none;white-space:nowrap;cursor:pointer;outline:none;border-radius:4px;border:0;color:#ff8c2f;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#e22828),to(#e22828)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#ff8c2f),to(#ff8c2f)) 100% 100% no-repeat;background:linear-gradient(90deg,#e22828 0,#ff8c2f) 0 0 no-repeat,linear-gradient(90deg,#e22828 0,#ff8c2f) 0 100% no-repeat,linear-gradient(0deg,#e22828 0,#e22828) 0 100% no-repeat,linear-gradient(0deg,#ff8c2f 0,#ff8c2f) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%}
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button:hover{color:#f2f2f2;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f));background:linear-gradient(90deg,#e22828 0,#ff8c2f)}
.ui-dropdownchecklist .ui-state-default{background:#f2f2f2;border:none;box-shadow:none;outline:none;cursor:pointer;height:2.2rem;line-height:2.2rem}
.ui-dropdownchecklist-group{font-weight:normal;font-style:italic;padding:1px 9px 1px 8px}
.ui-dropdownchecklist-selector{border:1px solid #1c1c1c;display:inline-block;cursor:pointer;padding:1px 9px 1px 8px}
.ui-dropdownchecklist-selector-wrapper{vertical-align:middle;font-size:0}
.ui-widget-header{border:none;background:#e3e3e3;color:#1c1c1c;font-weight:bold}
.ui-widget-content{border:1px solid #1c1c1c;background:#f2f2f2;color:#1c1c1c}
.ui-state-active{background:#e8e8e8}
.ui-dropdownchecklist-dropcontainer{background:#f2f2f2;border:1px solid #1c1c1c}
.ui-state-disabled{color:#1c1c1c;border-color:#a2a2a2;background:#e8e8e8;opacity:0.5}
.ui-dropdownchecklist-indent{padding-left:7px}
.ui-dropdownchecklist-text{color:#1c1c1c;font-size:1.3rem}
.ui-dropdownchecklist .ui-widget-content .ui-state-default{background:#f2f2f2;border:0px}

View File

@@ -0,0 +1,28 @@
#!/bin/bash
# Get active containers
ACTIVE_CONTAINERS="$(docker ps -q --no-trunc 2>/dev/null)"
# Exit if no containers are active and return zero
if [ -z "${ACTIVE_CONTAINERS}" ]; then
echo "0"
exit
fi
# Get all relevant memory entries from containers
for container in ${ACTIVE_CONTAINERS} ; do
CONT_MEMORY="$(cat /sys/fs/cgroup/docker/${container}/memory.stat 2>/dev/null | grep -Ew "anon|kernel|kernel_stack|pagetables|sec_pagetables|percpu|sock|vmalloc|shmem" | awk '{print $2}')"
# Add up memory values
for value in ${CONT_MEMORY} ; do
if [[ ${value} =~ ^[0-9]+$ ]]; then
((MEMORY_USAGE += value))
fi
done
unset CONT_MEMORY
done
# Check if value is a integer and return the value otherwiese return zero
if [[ ${MEMORY_USAGE} =~ ^[0-9]+$ ]]; then
echo "${MEMORY_USAGE}"
else
echo "0"
fi

View File

@@ -0,0 +1,115 @@
Menu='Buttons:1'
Icon='icon-u-search'
Title='Search'
Code='e956'
---
<?
###################################################
# #
# GUI Search copyright 2021-2023, Andrew Zawadzki #
# Licenced under GPLv2 #
# #
###################################################
$currentUnraidPage = str_replace('Browse','Main',basename(explode('?',$_SERVER['REQUEST_URI'])[0]));
$guiSearchBoxSpan = "<span id='guiSearchBoxSpan'><input type='text' id='guiSearchBox' autocomplete='new-password'></input></span><span class='guiSearchBoxResults'></span>";
?>
<script>
var languageVisible;
var guiSearchSuggestions;
var browserName = (function(agent){
switch (true) {
case agent.indexOf('edge') >= 0: return 'Edge'; // Edge
case agent.indexOf('edg/') >= 0: return 'Edge'; // Edge Chromium Based
case agent.indexOf('opr') >= 0 && !!window.opr: return 'Opera';
case agent.indexOf('chrome') >= 0 && !!window.chrome: return 'Chrome';
case agent.indexOf('trident') >= 0: return 'MS IE';
case agent.indexOf('firefox') >= 0: return 'Mozilla Firefox';
case agent.indexOf('safari') >= 0: return 'Safari';
default: return 'other';
}
})(window.navigator.userAgent.toLowerCase());
$(function(){
<?if ($themes2):?>
$('.nav-item.gui_search').hover(function(){gui_search();},function(e){closeSearchBox(e);});
<?endif;?>
$.post('/plugins/dynamix.gui.search/include/exec.php',function(data) {
if (data) {
try {guiSearchSuggestions = JSON.parse(data); setupGUIsearch();}
catch(e) {console.log('Invalid JSON for GUI search autocomplete');}
}
});
});
function guiSearchBoxSpan() {
return $('#guiSearchBoxSpan').length>0;
}
function setupGUIsearch() {
window.addEventListener('keydown',function(e){
if (!e.shiftKey && !e.altKey && (navigator.appVersion.indexOf('Mac')==-1 ? e.ctrlKey : e.metaKey) && e.keyCode==75) {
e.preventDefault();
<?if ($themes1):?>
if (guiSearchBoxSpan()) closeSearchBox(e); else gui_search();
<?endif;?>
}
});
if (browserName != 'Chrome' && browserName != 'Edge') {
var hashTag = (window.location.hash||'').substr(1).replace('%20',' ').replace('%2d','-');
if (hashTag.length) $('body').mark(hashTag,{'accuracy': {'value': 'exactly','limiters': ['.',':','?']},'separateWordSearch': false});
}
}
function gui_search() {
<?if ($themes1):?>
languageVisible = $('.nav-item.LanguageButton').is(':visible');
$('.nav-tile.right').prepend("<?=$guiSearchBoxSpan?>").css('overflow','visible');
$('.nav-item.util,.nav-user.show').hide();
<?else:?>
if (!guiSearchBoxSpan()) $('.nav-item.gui_search a').append("<?=$guiSearchBoxSpan?>");
$('.nav-item.gui_search').css('overflow','visible');
<?endif;?>
if (guiSearchSuggestions) {
var guiSearchAwesomplete = new Awesomplete(document.getElementById('guiSearchBox'));
guiSearchAwesomplete.list = guiSearchSuggestions;
guiSearchAwesomplete.maxItems = 15;
guiSearchAwesomplete.autoFirst = true;
Awesomplete.$('#guiSearchBox').removeEventListener('awesomplete-selectcomplete',guiSearch);
Awesomplete.$('#guiSearchBox').addEventListener('awesomplete-selectcomplete',guiSearch);
$('#guiSearchBox').attr('autocomplete','new-password'); // Stop awesomplete from resetting autocomplete
}
$('#guiSearchBox').focus().keydown(function(e){if (e.which==27) closeSearchBox(e);}).blur(function(e){closeSearchBox(e);});
}
function closeSearchBox(e) {
e.stopPropagation();
$('#guiSearchBoxSpan').remove();
<?if ($themes1):?>
$('.nav-tile.right').css({'overflow-x':'auto','overflow-y':'hidden'});
$('.nav-item.util,.nav-user.show').show();
if (!languageVisible) $('.nav-item.LanguageButton').hide();
<?else:?>
$('.nav-item.gui_search').css('overflow','hidden');
<?endif;?>
}
function guiSearch() {
var searchInfo = $('#guiSearchBox').val().split('**');
var separator = (browserName == 'Chrome' || browserName == 'Edge') ? '#:~:text=' : '#';
var scrollText = (typeof searchInfo[1] != 'undefined') ? separator+searchInfo[1].replace(' ','%20').replace('-','%2d') : '';
var newPage = "<?=$currentUnraidPage?>/Settings/Tools".replace(searchInfo[0]+'/','');
closeSearchBox(event);
if (newPage == 'Dashboard/Settings/Tools') newPage = 'Settings';
location.replace('/'+newPage+'/'+searchInfo[0]+scrollText);
}
if (browserName != 'Chrome' && browserName != 'Edge') {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = '<?autov('/plugins/dynamix.gui.search/javascript/jquery.mark.js')?>';
document.getElementsByTagName('head')[0].appendChild(script);
}
</script>

View File

@@ -0,0 +1,147 @@
<?
###################################################
# #
# GUI Search copyright 2021-2023, Andrew Zawadzki #
# Licenced under GPLv2 #
# #
###################################################
@mkdir("/tmp/gui.search");
extract(@parse_ini_file("/boot/config/plugins/dynamix/dynamix.cfg") ?: []);
$locale = $locale ?? "";
if ( $locale == "en_US")
$locale = "";
if ( $locale != @file_get_contents("/tmp/gui.search/locale") ) {
@unlink("/tmp/gui.search/searchResults.json");
}
file_put_contents("/tmp/gui.search/locale",$locale);
$uri = "";
if ( $locale ) {
if ( is_dir("/usr/local/emhttp/languages/$locale") ) {
$dotFiles = glob("/usr/local/emhttp/languages/$locale/*.txt");
foreach ($dotFiles as $dot) {
$uri .= basename($dot,".txt")."/";
}
$uri = rtrim($uri,"/");
}
}
$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
$_SERVER['REQUEST_URI'] = $uri;
$_SESSION['locale'] = $locale;
require_once "$docroot/plugins/dynamix/include/Translations.php";
$searchPages = array();
$pageFiles = glob("/usr/local/emhttp/plugins/*/*.page");
if ( is_file("/tmp/gui.search/searchResults.json") ) {
$searchPages = unserialize(file_get_contents("/tmp/gui.search/searchResults.json"));
}
if ( ! $searchPages ) {
$MainPages = array("About","WebGui","UNRAID-OS","SystemInformation","OtherSettings","Settings","NetworkServices","Utilities","DiskUtilities","UserPreferences","WGX");
// pass 1 - get all the "main" pages
foreach ($pageFiles as $page) {
if ( $page == "/usr/local/emhttp/plugins/dynamix/WGX.page") continue;
$file = explode("---",file_get_contents($page));
$pageInfo = parse_ini_string($file[0],true);
if ( isset($pageInfo['Menu']) && $pageInfo['Menu'] && in_array(explode(":",$pageInfo['Menu'])[0],$MainPages) && ! in_array(basename($page,".page"),$MainPages) ) {
$newPage[basename($page,".page")] = array(sanitizeQuote(_($pageInfo['Title'])),basename($page));
if ( $locale )
$newPage[basename($page,".page")] = array(sanitizeQuote($pageInfo['Title']),basename($page));
}
}
//pass 2 - link back any sub-pages
foreach ($pageFiles as $page) {
$file = explode("---",file_get_contents($page));
if ( ! isset($file[1]) ) continue;
$pageInfo = parse_ini_string($file[0],true);
if (isset($pageInfo['Menu']) && $pageInfo['Menu']) {
$pageLinked = explode(":",$pageInfo['Menu'])[0];
if (isset($newPage[$pageLinked]) && ! in_array($pageLinked,$MainPages) ) {
$newPage[] = array(sanitizeQuote(_($pageInfo['Title']))." ("._($newPage[$pageLinked][0]).")",$pageLinked);
if ( $locale )
$newPage[] = array(sanitizeQuote(($pageInfo['Title']))." (".($newPage[$pageLinked][0]).")",$pageLinked);
}
getSettings();
}
}
//pass 3 - cleanup
foreach ($newPage as $page) {
if ( ! in_array(array("label"=>sanitizeQuote(_($page[0])),"value"=>basename($page[1],".page")),$searchPages) )
$searchPages[] = array("label"=>sanitizeQuote(_($page[0])),"value"=>basename($page[1],".page"));
}
file_put_contents("/tmp/gui.search/searchResults.json",serialize($searchPages));
}
echo json_encode($searchPages);
function getSettings() {
global $searchPages, $pageInfo, $page,$file,$locale;
$bannedPages = array("ShareEdit","UserEdit","Device","community.applications","Selftest","DeviceInfo","EthX","CA_Notices","SecuritySMB","SecurityNFS");
if (in_array(basename($page,".page"),$bannedPages) ) return;
foreach (explode("\n",$file[1]) as $line) {
$line = trim($line);
if ( startsWith($line,"_(") && (endsWith($line,")_:") || endsWith($line,")_):") ) ) {
preg_match("/<!--search:.*-->/i",$line,$extra,PREG_OFFSET_CAPTURE);
$string = str_replace(["_(",")_:",")_?",")_"],["","","",""],$line);
$extraEng = "";
$extraTra = "";
if ( $extra ) {
$extrasearch = trim(str_replace(["<!--search:","-->"],["",""],$extra[0][0]));
$string = str_replace($extra[0][0],"",$string);
foreach ( explode("|",$extrasearch) as $term ) {
$extraEng .= $term."|";
$extraTra .= _($term)."|";
}
$extraEng = " [".rtrim($extraEng,"|")."]";
$extraTra = " [".rtrim($extraTra,"|")."]";
}
$string = sanitizeQuote($string);
$linkPage = basename($page,".page");
if (strpos($linkPage,"WG") === 0) {
$linkPage = "VPNmanager";
}
if ( stripos(str_replace(" ","",$line),"<!--donotindex-->") )
continue;
if ( ! in_array(array("label"=>"$string $extraTra (".sanitizeQuote($pageInfo['Title']).")","value"=>"$linkPage**"._($string)),$searchPages) ) {
$searchPages[] = array("label"=>_($string)." $extraTra (".sanitizeQuote(_($pageInfo['Title'])).")","value"=>"$linkPage**"._($string));
if ( $locale ) {
if ( _($string) !== $string )
$searchPages[] = array("label"=>($string)." $extraEng (".sanitizeQuote($pageInfo['Title']).")","value"=>"$linkPage**"._($string));
}
}
}
}
}
function sanitizeQuote($string) {
return str_replace("'","",str_replace('"',"",$string));
}
##############################################
# Determine if $haystack begins with $needle #
##############################################
function startsWith($haystack, $needle) {
if ( !is_string($haystack) || ! is_string($needle) ) return false;
return $needle === "" || strripos($haystack, $needle, -strlen($haystack)) !== FALSE;
}
#############################################
# Determine if $string ends with $endstring #
#############################################
function endsWith($string, $endString) {
$len = strlen($endString);
if ($len == 0) {
return true;
}
return (substr($string, -$len) === $endString);
}
?>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
#guiSearchBoxSpan{display:inline-block;margin:0 0 0 20px;padding:0;height:auto;line-height:normal;font-size:1.3rem}
#guiSearchBox{position:relative;top:0;left:0;width:50rem;border:none;border-radius:20px;margin:0;padding:5px 12px;color:#1c1b1b;background-color:#feefb3}

View File

@@ -0,0 +1,3 @@
#guiSearchBoxSpan{display:inline-block;position:relative;margin:4px 2px 2px 2px;padding:0;text-align:left;height:auto;line-height:normal;font-size:1.3rem}
#guiSearchBoxSpan:after{font-family:unraid;content:'\e956';position:absolute;top:.8rem;left:1.5rem;font-size:1.3rem}
#guiSearchBox{width:50rem;border:none;border-radius:20px;padding-left:4rem;opacity:0.5;invert(100%)}

View File

@@ -0,0 +1,2 @@
#guiSearchBoxSpan{display:inline-block;margin:0 0 0 20px;padding:0;height:auto;line-height:normal;font-size:1.3rem}
#guiSearchBox{position:relative;top:0;left:0;width:50rem;border:none;border-radius:20px;margin:0;padding:5px 12px;color:#1c1b1b;background-color:#feefb3}

View File

@@ -0,0 +1,3 @@
#guiSearchBoxSpan{display:inline-block;position:relative;margin:4px 2px 2px 2px;padding:0;text-align:left;height:auto;line-height:normal;font-size:1.3rem}
#guiSearchBoxSpan:after{font-family:unraid;content:'\e956';position:absolute;top:.8rem;left:1.5rem;font-size:1.3rem}
#guiSearchBox{width:50rem;border:none;border-radius:20px;padding-left:4rem;opacity:0.5;invert(100%)}

View File

@@ -0,0 +1,20 @@
Menu="About:30"
Type="xmenu"
Title="Registration"
Icon="icon-registration"
Tag="pencil"
---
<?php
/* Copyright 2005-2023, Lime Technology
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
?>
<unraid-i18n-host>
<unraid-registration></unraid-registration>
</unraid-i18n-host>

View File

@@ -0,0 +1,23 @@
<?php
/* Copyright 2005-2023, Lime Technology
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
$var = (array)parse_ini_file('state/var.ini');
require_once "$docroot/webGui/include/Wrappers.php";
require_once "$docroot/webGui/include/Helpers.php";
extract(parse_plugin_cfg('dynamix',true));
require_once "$docroot/plugins/dynamix.my.servers/include/state.php";
$serverState = new ServerState();
header('Content-type: application/json');
echo $serverState->getServerStateJson();

View File

@@ -0,0 +1,62 @@
<?php
/* Copyright 2005-2023, Lime Technology
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
?>
<style>
#header {
z-index: 102 !important;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
#header unraid-i18n-host {
font-size: 16px;
margin-left: auto;
height: 100%;
}
/**
* Tools page, rotate the Downgrade icon to prevent needing to add a new icon to the icon font.
* The pseudo element is targeted here otherwise the rotation of the span would mess up spacing with the text.
*/
a[href="/Tools/Downgrade"] .icon-update:before {
display: inline-block; /* required otherwise the rotation won't work */
rotate: 180deg;
}
</style>
<?php
// Set the path for the local manifest file
$localManifestFile = '/usr/local/emhttp/plugins/dynamix.my.servers/unraid-components/manifest.json';
// Load the local manifest
$localManifest = json_decode(file_get_contents($localManifestFile), true);
$searchText = 'unraid-components.client.mjs';
$fileValue = null;
foreach ($localManifest as $key => $value) {
if (strpos($key, $searchText) !== false && isset($value["file"])) {
$fileValue = $value["file"];
break;
}
}
if ($fileValue !== null) {
$prefixedPath = '/plugins/dynamix.my.servers/unraid-components/';
echo '<script src="' . $prefixedPath . $fileValue . '"></script>';
} else {
echo '<script>console.error("%cNo matching key containing \'' . $searchText . '\' found.", "font-weight: bold; color: white; background-color: red");</script>';
}

View File

@@ -0,0 +1,36 @@
<?php
/* Copyright 2005-2023, Lime Technology
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once("$docroot/plugins/dynamix.my.servers/include/state.php");
require_once("$docroot/plugins/dynamix.my.servers/include/translations.php");
$serverState = new ServerState();
$wCTranslations = new WebComponentTranslations();
?>
<script>
window.LOCALE_DATA = '<?= $wCTranslations->getTranslationsJson(true) ?>';
/**
* So we're not needing to modify DefaultLayout with an additional include, we'll add the Modals web component to the bottom of the body.
*/
const i18nHostWebComponent = 'unraid-i18n-host';
const modalsWebComponent = 'unraid-modals';
if (!document.getElementsByTagName(modalsWebComponent).length) {
const $body = document.getElementsByTagName('body')[0];
const $i18nHost = document.createElement(i18nHostWebComponent);
const $modals = document.createElement(modalsWebComponent);
$body.appendChild($i18nHost);
$i18nHost.appendChild($modals);
}
</script>
<unraid-i18n-host>
<unraid-user-profile server="<?= $serverState->getServerStateJsonForHtmlAttr() ?>"></unraid-user-profile>
</unraid-i18n-host>

View File

@@ -0,0 +1,168 @@
<?php
/* Copyright 2005-2023, Lime Technology
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
/**
* RebootDetails class is responsible for detecting the type and version of a system reboot required in the context of an unRAID server.
*
* Usage:
* ```
* $rebootDetails = new RebootDetails();
* $rebootType = $rebootDetails->rebootType;
* ```
*/
class RebootDetails
{
const CURRENT_CHANGES_TXT_PATH = '/boot/changes.txt';
const CURRENT_README_RELATIVE_PATH = 'plugins/unRAIDServer/README.md';
const CURRENT_VERSION_PATH = '/etc/unraid-version';
const PREVIOUS_BZ_ROOT_PATH = '/boot/previous/bzroot';
const PREVIOUS_CHANGES_TXT_PATH = '/boot/previous/changes.txt';
private $currentVersion = '';
public $rebootType = ''; // 'update', 'downgrade', 'thirdPartyDriversDownloading'
public $rebootReleaseDate = '';
public $rebootVersion = '';
public $previousReleaseDate = '';
public $previousVersion = '';
/**
* Constructs a new RebootDetails object and automatically detects the reboot type during initialization.
*/
public function __construct()
{
$this->detectRebootType();
}
/**
* Detects the type of reboot required based on the contents of the unRAID server's README.md file.
* Sets the $rebootType property accordingly.
*/
private function detectRebootType()
{
$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
/**
* Read the reboot readme, and see if it says "REBOOT REQUIRED" or "DOWNGRADE"
* only relying on the README.md file to save reads from the flash drive.
* because we started allowing downgrades from the account.unraid.net Update OS page, we can't
* fully rely on the README.md value of being accurate.
* For instance if on 6.13.0-beta.2.1 then chose to "Downgrade" to 6.13.0-beta.1.10 from the account app
* the README.md file would still say "REBOOT REQUIRED".
*/
$rebootReadme = @file_get_contents("$docroot/" . self::CURRENT_README_RELATIVE_PATH, false, null, 0, 20) ?: '';
$rebootDetected = preg_match("/^\*\*(REBOOT REQUIRED|DOWNGRADE)/", $rebootReadme);
if (!$rebootDetected) {
return;
}
/**
* if a reboot is required, then:
* get current Unraid version from /etc/unraid-version
* then get the version of the last update from self::CURRENT_CHANGES_TXT_PATH
* if they're different, then a reboot is required
* if the version in self::CURRENT_CHANGES_TXT_PATH is less than the current version, then a downgrade is required
* if the version in self::CURRENT_CHANGES_TXT_PATH is greater than the current version, then an update is required
*/
$this->setCurrentVersion();
$this->setRebootDetails();
if ($this->currentVersion == '' || $this->rebootVersion == '') {
return; // return to prevent potential incorrect outcome
}
$compareVersions = version_compare($this->rebootVersion, $this->currentVersion);
switch ($compareVersions) {
case -1:
$this->setRebootType('downgrade');
break;
case 0:
// we should never get here, but if we do, then no reboot is required and just return
return;
case 1:
$this->setRebootType('update');
break;
}
// Detect if third-party drivers were part of the update process
$processWaitingThirdPartyDrivers = "inotifywait -q " . self::CURRENT_CHANGES_TXT_PATH . " -e move_self,delete_self";
// Run the ps command to list processes and check if the process is running
$ps_command = "ps aux | grep -E \"$processWaitingThirdPartyDrivers\" | grep -v \"grep -E\"";
$output = shell_exec($ps_command) ?? '';
if ($this->rebootType != '' && strpos($output, $processWaitingThirdPartyDrivers) !== false) {
$this->setRebootType('thirdPartyDriversDownloading');
}
}
/**
* Detects and retrieves the version information related to the system reboot based on the contents of the '/boot/changes.txt' file.
*
* @return string The system version information or 'Not found' if not found, or 'File not found' if the file is not present.
*/
private function readChangesTxt(string $file_path = self::CURRENT_CHANGES_TXT_PATH)
{
// Check if the file exists
if (file_exists($file_path)) {
exec("head -n4 $file_path", $rows);
foreach ($rows as $row) {
$i = stripos($row,'version');
if ($i !== false) {
[$version, $releaseDate] = explode(' ', trim(substr($row, $i+7)));
break;
}
}
return [
'releaseDate' => $releaseDate ?? 'Not found',
'version' => $version ?? 'Not found',
];
} else {
return 'File not found';
}
}
/**
* Sets the current version of the Unraid server for comparison with the reboot version.
*/
private function setCurrentVersion() {
// output ex: version="6.13.0-beta.2.1"
$raw = @file_get_contents(self::CURRENT_VERSION_PATH) ?: '';
// Regular expression to match the version between the quotes
$pattern = '/version="([^"]+)"/';
if (preg_match($pattern, $raw, $matches)) {
$this->currentVersion = $matches[1];
}
}
private function setRebootDetails()
{
$rebootDetails = $this->readChangesTxt();
$this->rebootReleaseDate = $rebootDetails['releaseDate'];
$this->rebootVersion = $rebootDetails['version'];
}
private function setRebootType($rebootType)
{
$this->rebootType = $rebootType;
}
/**
* If self::PREVIOUS_BZ_ROOT_PATH exists, then the user has the option to downgrade to the previous version.
* Parse the text file /boot/previous/changes.txt to get the version number of the previous version.
* Then we move some files around and reboot.
*/
public function setPrevious()
{
if (@file_exists(self::PREVIOUS_BZ_ROOT_PATH) && @file_exists(self::PREVIOUS_CHANGES_TXT_PATH)) {
$parseOutput = $this->readChangesTxt(self::PREVIOUS_CHANGES_TXT_PATH);
$this->previousVersion = $parseOutput['version'];
$this->previousReleaseDate = $parseOutput['releaseDate'];
}
}
}

View File

@@ -0,0 +1,342 @@
<?php
/* Copyright 2005-2023, Lime Technology
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
/**
* @todo refactor globals currently if you try to use $GLOBALS the class will break.
*/
$webguiGlobals = $GLOBALS;
$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
require_once "$docroot/plugins/dynamix.my.servers/include/reboot-details.php";
require_once "$docroot/plugins/dynamix.plugin.manager/include/UnraidCheck.php";
/**
* ServerState class encapsulates server-related information and settings.
*
* Usage:
* ```
* require_once "$docroot/plugins/dynamix.my.servers/include/state.php";
* $serverStateClass = new ServerState();
*
* $serverStateClass->getServerState();
* or
* $serverStateClass->getServerStateJson();
* ```
*/
class ServerState
{
protected $webguiGlobals;
private $var;
private $apiKey = '';
private $apiVersion = '';
private $avatar = '';
private $email = '';
private $extraOrigins = [];
private $flashBackupActivated = '';
private $hasRemoteApikey = false;
private $registeredTime = '';
private $username = '';
private $connectPluginInstalled = '';
private $connectPluginVersion;
private $configErrorEnum = [
"error" => 'UNKNOWN_ERROR',
"ineligible" => 'INELIGIBLE',
"invalid" => 'INVALID',
"nokeyserver" => 'NO_KEY_SERVER',
"withdrawn" => 'WITHDRAWN',
];
private $osVersion;
private $osVersionBranch;
private $rebootDetails;
private $caseModel = '';
private $keyfileBase64UrlSafe = '';
private $updateOsCheck;
private $updateOsNotificationsEnabled = false;
private $updateOsResponse;
private $updateOsIgnoredReleases = [];
public $myServersFlashCfg = [];
public $myServersMemoryCfg = [];
public $host = 'unknown';
public $combinedKnownOrigins = [];
public $nginxCfg = [];
public $flashbackupStatus = [];
public $registered = false;
public $myServersMiniGraphConnected = false;
public $keyfileBase64 = '';
/**
* Constructor to initialize class properties and gather server information.
*/
public function __construct()
{
/**
* @note necessary evil until full webgui is class based.
* @see - getWebguiGlobal() for usage
* */
global $webguiGlobals;
$this->webguiGlobals =& $webguiGlobals;
// echo "<pre>" . json_encode($this->webguiGlobals, JSON_PRETTY_PRINT) . "</pre>";
$this->var = (array)parse_ini_file('state/var.ini');
$this->nginxCfg = @parse_ini_file('/var/local/emhttp/nginx.ini') ?? [];
$this->osVersion = $this->var['version'];
$this->osVersionBranch = trim(@exec('plugin category /var/log/plugins/unRAIDServer.plg') ?? 'stable');
$caseModelFile = '/boot/config/plugins/dynamix/case-model.cfg';
$this->caseModel = file_exists($caseModelFile) ? htmlspecialchars(@file_get_contents($caseModelFile), ENT_HTML5, 'UTF-8') : '';
$this->rebootDetails = new RebootDetails();
$this->keyfileBase64 = empty($this->var['regFILE']) ? null : @file_get_contents($this->var['regFILE']);
if ($this->keyfileBase64 !== false) {
$this->keyfileBase64 = @base64_encode($this->keyfileBase64);
$this->keyfileBase64UrlSafe = str_replace(['+', '/', '='], ['-', '_', ''], trim($this->keyfileBase64));
}
$this->updateOsCheck = new UnraidOsCheck();
$this->updateOsIgnoredReleases = $this->updateOsCheck->getIgnoredReleases();
$this->updateOsNotificationsEnabled = !empty(@$this->getWebguiGlobal('notify', 'unraidos'));
$this->updateOsResponse = $this->updateOsCheck->getUnraidOSCheckResult();
$this->setConnectValues();
}
/**
* Retrieve the value of a webgui global setting.
*/
public function getWebguiGlobal(string $key, string $subkey = null) {
if (!$subkey) {
return _var($this->webguiGlobals, $key, '');
}
$keyArray = _var($this->webguiGlobals, $key, []);
return _var($keyArray, $subkey, '');
}
private function setConnectValues() {
if (file_exists('/var/lib/pkgtools/packages/dynamix.unraid.net')) {
$this->connectPluginInstalled = 'dynamix.unraid.net.plg';
}
if (file_exists('/var/lib/pkgtools/packages/dynamix.unraid.net.staging')) {
$this->connectPluginInstalled = 'dynamix.unraid.net.staging.plg';
}
if ($this->connectPluginInstalled && !file_exists('/usr/local/sbin/unraid-api')) {
$this->connectPluginInstalled .= '_installFailed';
}
// exit early if the plugin is not installed
if (!$this->connectPluginInstalled) {
return;
}
$this->connectPluginVersion = file_exists('/var/log/plugins/dynamix.unraid.net.plg')
? trim(@exec('/usr/local/sbin/plugin version /var/log/plugins/dynamix.unraid.net.plg 2>/dev/null'))
: (file_exists('/var/log/plugins/dynamix.unraid.net.staging.plg')
? trim(@exec('/usr/local/sbin/plugin version /var/log/plugins/dynamix.unraid.net.staging.plg 2>/dev/null'))
: 'base-' . $this->var['version']);
$this->getMyServersCfgValues();
$this->getConnectKnownOrigins();
$this->getFlashBackupStatus();
}
private function getFlashBackupStatus() {
$flashbackupCfg = '/var/local/emhttp/flashbackup.ini';
$this->flashbackupStatus = (file_exists($flashbackupCfg)) ? @parse_ini_file($flashbackupCfg) : [];
$this->flashBackupActivated = empty($this->flashbackupStatus['activated']) ? '' : 'true';
}
private function getMyServersCfgValues() {
/**
* @todo can we read this from somewhere other than the flash? Connect page uses this path and /boot/config/plugins/dynamix.my.servers/myservers.cfg…
* - $myservers_memory_cfg_path ='/var/local/emhttp/myservers.cfg';
* - $mystatus = (file_exists($myservers_memory_cfg_path)) ? @parse_ini_file($myservers_memory_cfg_path) : [];
*/
$flashCfgPath = '/boot/config/plugins/dynamix.my.servers/myservers.cfg';
$this->myServersFlashCfg = file_exists($flashCfgPath) ? @parse_ini_file($flashCfgPath, true) : [];
// ensure some vars are defined here so we don't have to test them later
if (empty($this->myServersFlashCfg['remote']['apikey'])) {
$this->myServersFlashCfg['remote']['apikey'] = "";
}
if (empty($this->myServersFlashCfg['remote']['wanaccess'])) {
$this->myServersFlashCfg['remote']['wanaccess'] = "no";
}
if (empty($this->myServersFlashCfg['remote']['wanport'])) {
$this->myServersFlashCfg['remote']['wanport'] = 33443;
}
if (empty($this->myServersFlashCfg['remote']['upnpEnabled'])) {
$this->myServersFlashCfg['remote']['upnpEnabled'] = "no";
}
if (empty($this->myServersFlashCfg['remote']['dynamicRemoteAccessType'])) {
$this->myServersFlashCfg['remote']['dynamicRemoteAccessType'] = "DISABLED";
}
$this->apiKey = $this->myServersFlashCfg['upc']['apikey'] ?? '';
$this->apiVersion = $this->myServersFlashCfg['api']['version'] ?? '';
$this->avatar = (!empty($this->myServersFlashCfg['remote']['avatar']) && $this->connectPluginInstalled) ? $this->myServersFlashCfg['remote']['avatar'] : '';
$this->email = $this->myServersFlashCfg['remote']['email'] ?? '';
$this->hasRemoteApikey = !empty($this->myServersFlashCfg['remote']['apikey']);
$this->registered = !empty($this->myServersFlashCfg['remote']['apikey']) && $this->connectPluginInstalled;
$this->registeredTime = $this->myServersFlashCfg['remote']['regWizTime'] ?? '';
$this->username = $this->myServersFlashCfg['remote']['username'] ?? '';
}
private function getConnectKnownOrigins() {
/**
* Allowed origins warning displayed when the current webGUI URL is NOT included in the known lists of allowed origins.
* Include localhost in the test, but only display HTTP(S) URLs that do not include localhost.
*/
$this->host = $_SERVER['HTTP_HOST'] ?? "unknown";
$memoryCfgPath = '/var/local/emhttp/myservers.cfg';
$this->myServersMemoryCfg = (file_exists($memoryCfgPath)) ? @parse_ini_file($memoryCfgPath) : [];
$this->myServersMiniGraphConnected = (($this->myServersMemoryCfg['minigraph']??'') === 'CONNECTED');
$allowedOrigins = $this->myServersMemoryCfg['allowedOrigins'] ?? "";
$extraOrigins = $this->myServersFlashCfg['api']['extraOrigins'] ?? "";
$combinedOrigins = $allowedOrigins . "," . $extraOrigins; // combine the two strings for easier searching
$combinedOrigins = str_replace(" ", "", $combinedOrigins); // replace any spaces with nothing
$hostNotKnown = stripos($combinedOrigins, $this->host) === false; // check if the current host is in the combined list of origins
if ($extraOrigins) {
$this->extraOrigins = explode(",", $extraOrigins);
}
if ($hostNotKnown) {
$this->combinedKnownOrigins = explode(",", $combinedOrigins);
if ($this->combinedKnownOrigins) {
foreach($this->combinedKnownOrigins as $key => $origin) {
if ( (strpos($origin, "http") === false) || (strpos($origin, "localhost") !== false) ) {
// clean up $this->combinedKnownOrigins, only display warning if origins still remain to display
unset($this->combinedKnownOrigins[$key]);
}
}
// for some reason the unset creates an associative array, so reindex the array with just the values. Otherwise we get an object passed to the UPC JS instead of an array.
if ($this->combinedKnownOrigins) {
$this->combinedKnownOrigins = array_values($this->combinedKnownOrigins);
}
}
}
}
/**
* Retrieve the server information as an associative array
*
* @return array An array containing server information.
*/
public function getServerState()
{
$serverState = [
"array" => [
"state" => @$this->getWebguiGlobal('var', 'fsState'),
"progress" => @$this->getWebguiGlobal('var', 'fsProgress'),
],
"apiKey" => $this->apiKey,
"apiVersion" => $this->apiVersion,
"avatar" => $this->avatar,
"caseModel" => $this->caseModel,
"config" => [
'valid' => ($this->var['configValid'] === 'yes'),
'error' => isset($this->configErrorEnum[$this->var['configValid']]) ? $this->configErrorEnum[$this->var['configValid']] : null,
],
"connectPluginInstalled" => $this->connectPluginInstalled,
"connectPluginVersion" => $this->connectPluginVersion,
"csrf" => $this->var['csrf_token'],
"dateTimeFormat" => [
"date" => @$this->getWebguiGlobal('display', 'date') ?? '',
"time" => @$this->getWebguiGlobal('display', 'time') ?? '',
],
"description" => $this->var['COMMENT'] ? htmlspecialchars($this->var['COMMENT'], ENT_HTML5, 'UTF-8') : '',
"deviceCount" => $this->var['deviceCount'],
"email" => $this->email,
"expireTime" => 1000 * (($this->var['regTy'] === 'Trial' || strstr($this->var['regTy'], 'expired')) ? $this->var['regTm2'] : 0),
"extraOrigins" => $this->extraOrigins,
"flashProduct" => $this->var['flashProduct'],
"flashVendor" => $this->var['flashVendor'],
"flashBackupActivated" => $this->flashBackupActivated,
"guid" => $this->var['flashGUID'],
"hasRemoteApikey" => $this->hasRemoteApikey,
"internalPort" => _var($_SERVER, 'SERVER_PORT'),
"keyfile" => $this->keyfileBase64UrlSafe,
"lanIp" => ipaddr(),
"locale" => (!empty($_SESSION) && $_SESSION['locale']) ? $_SESSION['locale'] : 'en_US',
"model" => $this->var['SYS_MODEL'] ? htmlspecialchars($this->var['SYS_MODEL'], ENT_HTML5, 'UTF-8') : '',
"name" => htmlspecialchars($this->var['NAME'], ENT_HTML5, 'UTF-8'),
"osVersion" => $this->osVersion,
"osVersionBranch" => $this->osVersionBranch,
"protocol" => _var($_SERVER, 'REQUEST_SCHEME'),
"rebootType" => $this->rebootDetails->rebootType,
"rebootVersion" => $this->rebootDetails->rebootVersion,
"regDevs" => @(int)$this->var['regDevs'] ?? 0,
"regGen" => @(int)$this->var['regGen'],
"regGuid" => @$this->var['regGUID'] ?? '',
"regTo" => @htmlspecialchars($this->var['regTo'], ENT_HTML5, 'UTF-8') ?? '',
"regTm" => $this->var['regTm'] ? @$this->var['regTm'] * 1000 : '', // JS expects milliseconds
"regTy" => @$this->var['regTy'] ?? '',
"regExp" => $this->var['regExp'] ? @$this->var['regExp'] * 1000 : '', // JS expects milliseconds
"registered" => $this->registered,
"registeredTime" => $this->registeredTime,
"site" => _var($_SERVER, 'REQUEST_SCHEME') . "://" . _var($_SERVER, 'HTTP_HOST'),
"state" => strtoupper(empty($this->var['regCheck']) ? $this->var['regTy'] : $this->var['regCheck']),
"theme" => [
"banner" => !empty($this->getWebguiGlobal('display', 'banner')),
"bannerGradient" => $this->getWebguiGlobal('display', 'showBannerGradient') === 'yes' ?? false,
"bgColor" => ($this->getWebguiGlobal('display', 'background')) ? '#' . $this->getWebguiGlobal('display', 'background') : '',
"descriptionShow" => (!empty($this->getWebguiGlobal('display', 'headerdescription')) && $this->getWebguiGlobal('display', 'headerdescription') !== 'no'),
"metaColor" => ($this->getWebguiGlobal('display', 'headermetacolor') ?? '') ? '#' . $this->getWebguiGlobal('display', 'headermetacolor') : '',
"name" => $this->getWebguiGlobal('display', 'theme'),
"textColor" => ($this->getWebguiGlobal('display', 'header')) ? '#' . $this->getWebguiGlobal('display', 'header') : '',
],
"ts" => time(),
"uptime" => 1000 * (time() - round(strtok(exec("cat /proc/uptime"), ' '))),
"username" => $this->username,
"wanFQDN" => @$this->nginxCfg['NGINX_WANFQDN'] ?? '',
];
if ($this->combinedKnownOrigins) {
$serverState['combinedKnownOrigins'] = $this->combinedKnownOrigins;
}
if ($this->updateOsIgnoredReleases) {
$serverState['updateOsIgnoredReleases'] = $this->updateOsIgnoredReleases;
}
if ($this->updateOsNotificationsEnabled) {
$serverState['updateOsNotificationsEnabled'] = $this->updateOsNotificationsEnabled;
}
if ($this->updateOsResponse) {
$serverState['updateOsResponse'] = $this->updateOsResponse;
}
return $serverState;
}
/**
* Retrieve the server information as JSON
*
* @return string
*/
public function getServerStateJson() {
return json_encode($this->getServerState());
}
/**
* Retrieve the server information as JSON string with converted special characters to HTML entities
*
* @return string
*/
public function getServerStateJsonForHtmlAttr() {
$json = json_encode($this->getServerState());
return htmlspecialchars($json, ENT_QUOTES, 'UTF-8');
}
}

View File

@@ -0,0 +1,410 @@
<?php
/* Copyright 2005-2023, Lime Technology
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
/**
* Welcome to the Thunderdome. A place where you can get lost in a sea of translations.
*
* This file is used to generate the translations for the Vue3 based web components.
*
* These key value pairs are derived from web/locales/en_US.json.
* We use the en_US.json file as the source of truth for the translations.
* This file is then used to generate the translations for the web components and delivered to them via PHP as a JSON object in myservers2.php (my favorite file name).
* The web components then use the translations to display the appropriate text to the user.
*
* Workflow is as follows:
* 1. Create a new translation in en_US.json
* 2. Create a new translation in this file
* 3. Open unraid/lang-en_US and add the new translation to the appropriate file typically translations.txt.
* 3a. This is done so that the translation is available to the rest of the Unraid webgui.
* 3b. Unfortunately there are numerous "special characters" that aren't allowed in Unraid's translation keys as they're automatically stripped out.
* 3c. This means that we have to create a new translation key that is a "safe" version of the translation key used in the web components.
* 3d. Special characters that are not allowed are: ? { } | & ~ ! [ ] ( ) / : * ^ . " '
* 3e. There are likely more but I'm unable to find the documentation PDF - updated list of invalid characters above as mentioned in the language guide document.
*
* Usage example:
* ```
* $wCTranslations = new WebComponentTranslations();
* $wCTranslations->getTranslations();
* ```
*/
$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Translations.php";
class WebComponentTranslations
{
private $translations = [];
public function __construct()
{
$this->initializeTranslations();
}
private function initializeTranslations()
{
$this->translations[$_SESSION['locale'] ?? 'en_US'] = [
'{0} {1} Key…' => sprintf(_('%1s %2s Key…'), '{0}', '{1}'),
'{0} devices' => sprintf(_('%s devices'), '{0}'),
'{0} out of {1} allowed devices upgrade your key to support more devices' => sprintf(_('%1s out of %2s allowed devices upgrade your key to support more devices'), '{0}', '{1}'),
'{0} out of {1} devices' => sprintf(_('%1s out of %2s devices'), '{0}', '{1}'),
'{0} Release Notes' => sprintf(_('%s Release Notes'), '{0}'),
'{0} Signed In Successfully' => sprintf(_('%s Signed In Successfully'), '{0}'),
'{0} Signed Out Successfully' => sprintf(_('%s Signed Out Successfully'), '{0}'),
'{0} Update Available' => sprintf(_('%s Update Available'), '{0}'),
'{1} Key {0} Successfully' => sprintf(_('%2s Key %1s Successfully'), '{0}', '{1}'),
'<p>It is not possible to use a Trial key with an existing Unraid OS installation.</p><p>You may purchase a license key corresponding to this USB Flash device to continue using this installation.</p>' => '<p>' . _('It is not possible to use a Trial key with an existing Unraid OS installation') . '</p><p>' . _('You may purchase a license key corresponding to this USB Flash device to continue using this installation.') . '</p>',
'<p>Please refresh the page to ensure you load your latest configuration</p>' => '<p>' . _('Please refresh the page to ensure you load your latest configuration') . '</p>',
'<p>Register for Connect by signing in to your Unraid.net account</p>' => '<p>' . _('Register for Connect by signing in to your Unraid.net account') . '</p>',
'<p>The license key file does not correspond to the USB Flash boot device. Please copy the correct key file to the /config directory on your USB Flash boot device or choose Purchase Key.</p><p>Your Unraid registration key is ineligible for replacement as it has been replaced within the last 12 months.</p>' => '<p>' . _('The license key file does not correspond to the USB Flash boot device.') . ' ' . _('Please copy the correct key file to the /config directory on your USB Flash boot device or choose Purchase Key') . '</p><p>' . _('Your Unraid registration key is ineligible for replacement as it has been replaced within the last 12 months.') . '</p>',
'<p>The license key file does not correspond to the USB Flash boot device. Please copy the correct key file to the /config directory on your USB Flash boot device or choose Purchase Key.</p><p>Your Unraid registration key is ineligible for replacement as it is blacklisted.</p>' => '<p>' . _('The license key file does not correspond to the USB Flash boot device.') . ' ' . _('Please copy the correct key file to the /config directory on your USB Flash boot device or choose Purchase Key') . '</p><p>' . _('Your Unraid registration key is ineligible for replacement as it is blacklisted.') . '</p>',
'<p>The license key file does not correspond to the USB Flash boot device. Please copy the correct key file to the /config directory on your USB Flash boot device.</p><p>You may also attempt to Purchase or Replace your key.</p>' => '<p>' . _('The license key file does not correspond to the USB Flash boot device.') . ' ' . _('Please copy the correct key file to the /config directory on your USB Flash boot device') . '</p><p>' . _('You may also attempt to Purchase or Replace your key.') . '</p>',
'<p>There are multiple license key files present on your USB flash device and none of them correspond to the USB Flash boot device. Please remove all key files, except the one you want to replace, from the /config directory on your USB Flash boot device.</p><p>Alternately you may purchase a license key for this USB flash device.</p><p>If you want to replace one of your license keys with a new key bound to this USB Flash device, please first remove all other key files first.</p>' => '<p>' . _('There are multiple license key files present on your USB flash device and none of them correspond to the USB Flash boot device.') . ' ' . _('Please remove all key files, except the one you want to replace, from the /config directory on your USB Flash boot device') . '</p><p>' . _('Alternately you may purchase a license key for this USB flash device') . '</p><p>' . _('If you want to replace one of your license keys with a new key bound to this USB Flash device, please first remove all other key files first.') . '</p>',
'<p>There is a physical problem accessing your USB Flash boot device</p>' => '<p>' . _('There is a physical problem accessing your USB Flash boot device') . '</p>',
'<p>There is a problem with your USB Flash device</p>' => '<p>' . _('There is a problem with your USB Flash device') . '</p>',
'<p>This USB Flash boot device has been blacklisted. This can occur as a result of transferring your license key to a replacement USB Flash device, and you are currently booted from your old USB Flash device.</p><p>A USB Flash device may also be blacklisted if we discover the serial number is not unique this is common with USB card readers.</p>' => '<p>' . _('This USB Flash boot device has been blacklisted.') . ' ' . _('This can occur as a result of transferring your license key to a replacement USB Flash device, and you are currently booted from your old USB Flash device.') . '</p><p>' . _('A USB Flash device may also be blacklisted if we discover the serial number is not unique this is common with USB card readers.') . '</p>',
'<p>This USB Flash device has an invalid GUID. Please try a different USB Flash device</p>' => '<p>' . _('This USB Flash device has an invalid GUID. Please try a different USB Flash device') . '</p>',
'<p>To continue using Unraid OS you may purchase a license key. Alternately, you may request a Trial extension.</p>' => '<p>' . _('To continue using Unraid OS you may purchase a license key.') . ' ' . _('Alternately, you may request a Trial extension.') . '</p>',
'<p>To support more storage devices as your server grows, click Upgrade Key.</p>' => '<p>' . _('To support more storage devices as your server grows, click Upgrade Key.') . '</p>',
'<p>You have used all your Trial extensions. To continue using Unraid OS you may purchase a license key.</p>' => '<p>' . _('You have used all your Trial extensions.') . ' ' . _('To continue using Unraid OS you may purchase a license key.') . '</p>',
'<p>Your <em>Trial</em> key includes all the functionality and device support of an <em>Unleashed</em> key.</p><p>After your <em>Trial</em> has reached expiration, your server <strong>still functions normally</strong> until the next time you Stop the array or reboot your server.</p><p>At that point you may either purchase a license key or request a <em>Trial</em> extension.</p>' => '<p>' . _('Your **Trial** key includes all the functionality and device support of an **Unleashed** key') . '</p><p>' . _('After your **Trial** has reached expiration, your server *still functions normally* until the next time you Stop the array or reboot your server') . '</p><p>' . _('At that point you may either purchase a license key or request a *Trial* extension.') . '</p>',
'<p>Your license key file is corrupted or missing. The key file should be located in the /config directory on your USB Flash boot device.</p><p>If you do not have a backup copy of your license key file you may attempt to recover your key.</p><p>If this was an expired Trial installation, you may purchase a license key.</p>' => '<p>' . _('Your license key file is corrupted or missing.') . ' ' . _('The key file should be located in the /config directory on your USB Flash boot device') . '</p><p>' . _('If you do not have a backup copy of your license key file you may attempt to recover your key with your Unraid.net account') . '</p><p>' . _('If this was an expired Trial installation, you may purchase a license key.') . '</p>',
'<p>Your license key file is corrupted or missing. The key file should be located in the /config directory on your USB Flash boot device.</p><p>You may attempt to recover your key with your Unraid.net account.</p><p>If this was an expired Trial installation, you may purchase a license key.</p>' => '<p>' . _('Your license key file is corrupted or missing.') . ' ' . _('The key file should be located in the /config directory on your USB Flash boot device') . '</p><p>' . _('If you do not have a backup copy of your license key file you may attempt to recover your key with your Unraid.net account') . '</p><p>' . _('If this was an expired Trial installation, you may purchase a license key.') . '</p>',
'<p>Your server will not be usable until you purchase a Registration key or install a free 30 day <em>Trial</em> key. A <em>Trial</em> key provides all the functionality of an Unleashed Registration key.</p><p>Registration keys are bound to your USB Flash boot device serial number (GUID). Please use a high quality name brand device at least 1GB in size.</p><p>Note: USB memory card readers are generally not supported because most do not present unique serial numbers.</p><p><strong>Important:</strong></p><ul class="list-disc pl-16px"><li>Please make sure your server time is accurate to within 5 minutes</li><li>Please make sure there is a DNS server specified</li></ul>' => '<p>' . _('Your server will not be usable until you purchase a Registration key or install a free 30 day <em>Trial</em> key.') . ' ' . _('A <em>Trial</em> key provides all the functionality of an Unleashed Registration key.') . '</p><p>' . _('Registration keys are bound to your USB Flash boot device serial number (GUID).') . ' ' . _('Please use a high quality name brand device at least 1GB in size.') . '</p><p>' . _('Note: USB memory card readers are generally not supported because most do not present unique serial numbers.') . '</p><p>' . _('*Important:*') . '</p><ul class="list-disc pl-16px"><li>' . _('Please make sure your server time is accurate to within 5 minutes') . '</li><li>' . _('Please make sure there is a DNS server specified') . '</li>>' . '</ul>',
'<p>Your Trial key requires an internet connection.</p><p><a href="/Settings/NetworkSettings" class="underline">Please check Settings > Network</a></p>' => '<p>' . _('Your Trial key requires an internet connection') . '</p><p><a href="/Settings/NetworkSettings" class="underline">' . _('Please check Settings > Network') . '</a></p>',
'<p>Your Unraid registration key is ineligible for replacement as it has been replaced within the last 12 months.</p>' => '<p>' . _('Your Unraid registration key is ineligible for replacement as it has been replaced within the last 12 months.') . '</p>',
'A Trial key provides all the functionality of an Unleashed Registration key' => _('A Trial key provides all the functionality of an Unleashed Registration key'),
'Acklowledge that you have made a Flash Backup to enable this action' => _('Acklowledge that you have made a Flash Backup to enable this action'),
'ago' => _('ago'),
'All you need is an active internet connection, an Unraid.net account, and the Connect plugin. Get started by installing the plugin.' => _('All you need is an active internet connection, an Unraid.net account, and the Connect plugin.') . ' ' . _('Get started by installing the plugin.'),
'Attached Storage Devices' => _('Attached Storage Devices'),
'Backing up...this may take a few minutes' => _('Backing up...this may take a few minutes'),
'Basic' => _('Basic'),
'Begin downgrade to {0}' => sprintf(_('Begin downgrade to %s'), '{0}'),
'Beta' => _('Beta'),
'Blacklisted USB Flash GUID' => _('Blacklisted USB Flash GUID'),
'BLACKLISTED' => _('BLACKLISTED'),
'Calculating OS Update Eligibility…' => _('Calculating OS Update Eligibility…'),
'Calculating trial expiration…' => _('Calculating trial expiration…'),
'Callback redirect type not present or incorrect' => _('Callback redirect type not present or incorrect'),
'Cancel {0}' => sprintf(_('Cancel %s'), '{0}'),
'Cancel' => _('Cancel'),
'Cannot access your USB Flash boot device' => _('Cannot access your USB Flash boot device'),
'Cannot validate Unraid Trial key' => _('Cannot validate Unraid Trial key'),
'Check for OS Updates' => _('Check for OS Updates'),
'check for OS updates' => _('check for OS updates'),
'Check for Prereleases' => _('Check for Prereleases'),
'Checking WAN IPs…' => _('Checking WAN IPs…'),
'Checking...' => _('Checking...'),
'Checkout the Connect Documentation' => _('Checkout the Connect Documentation'),
'Click to close modal' => _('Click to close modal'),
'Click to Copy LAN IP {0}' => sprintf(_('Click to copy LAN IP %s'), '{0}'),
'Close Dropdown' => _('Close Dropdown'),
'Close Modal' => _('Close Modal'),
'Close' => _('Close'),
'Configure Connect Features' => _('Configure Connect Features'),
'Confirm and start update' => _('Confirm and start update'),
'Confirm to Install Unraid OS {0}' => sprintf(_('Confirm to Install Unraid OS %s'), '{0}'),
'Connected' => _('Connected'),
'Contact Support' => _('Contact Support'),
'Continue' => _('Continue'),
'Copied' => _('Copied'),
'Copy Key URL' => _('Copy Key URL'),
'Copy your Key URL: {0}' => sprintf(_('Copy your Key URL: %s'), '{0}'),
'Create Flash Backup' => _('Create Flash Backup'),
'Current Version {0}' => sprintf(_('Current Version %s'), '{0}'),
'Current Version: Unraid {0}' => sprintf(_('Current Version: Unraid %s'), '{0}'),
'Customizable Dashboard Tiles' => _('Customizable Dashboard Tiles'),
'day' => sprintf(_('%s day'), '{n}') . ' | ' . sprintf(_('%s days'), '{n}'),
'Deep Linking' => _('Deep Linking'),
'DNS issue, unable to resolve wanip4.unraid.net' => _('DNS issue, unable to resolve wanip4.unraid.net'),
'Downgrade Unraid OS to {0}' => sprintf(_('Downgrade Unraid OS to %s'), '{0}'),
'Downgrade Unraid OS' => _('Downgrade Unraid OS'),
'Downgrades are only recommended if you\'re unable to solve a critical issue.' => _('Downgrades are only recommended if you\'re unable to solve a critical issue.'),
'Download Diagnostics' => _('Download Diagnostics'),
'Download the Diagnostics zip then please open a bug report on our forums with a description of the issue along with your diagnostics.' => _('Download the Diagnostics zip then please open a bug report on our forums with a description of the issue along with your diagnostics.'),
'Download unraid-api Logs' => _('Download unraid-api Logs'),
'Dynamic Remote Access' => _('Dynamic Remote Access'),
'Enable update notifications' => _('Enable update notifications'),
'Enhance your experience with Unraid Connect' => _('Enhance your experience with Unraid Connect'),
'Enhance your Unraid experience with Connect' => _('Enhance your Unraid experience with Connect'),
'Enhance your Unraid experience' => _('Enhance your Unraid experience'),
'Error creating a trial key. Please try again later.' => _('Error creating a trial key. Please try again later.'),
'Error Parsing Changelog • {0}' => sprintf(_('Error Parsing Changelog • %s'), '{0}'),
'Error' => _('Error'),
'Expired {0}' => sprintf(_('Expired %s'), '{0}'),
'Expired' => _('Expired'),
'Expires at {0}' => sprintf(_('Expires at %s'), '{0}'),
'Expires in {0}' => sprintf(_('Expires in %s'), '{0}'),
'Extend License to Update' => _('Extend License to Update'),
'Extend License' => _('Extend License'),
'Extend Trial' => _('Extend Trial'),
'Extending your free trial by 15 days' => _('Extending your free trial by 15 days'),
'Extension Installed' => _('Extension Installed'),
'Failed to {0} {1} Key' => sprintf(_('Failed to %1s %2s Key'), '{0}', '{1}'),
'Failed to install key' => _('Failed to install key'),
'Failed to update Connect account configuration' => _('Failed to update Connect account configuration'),
'Fetching & parsing changelog…' => _('Fetching & parsing changelog…'),
'Fix Error' => _('Fix Error'),
'Flash Backup is not available. Navigate to {0}/Main/Settings/Flash to try again then come back to this page.' => sprintf(_('Flash Backup is not available. Navigate to %s/Main/Settings/Flash to try again then come back to this page.'), '{0}'),
'Flash GUID Error' => _('Flash GUID Error'),
'Flash GUID required to check replacement status' => _('Flash GUID required to check replacement status'),
'Flash GUID' => _('Flash GUID'),
'Flash Product' => _('Flash Product'),
'Flash Vendor' => _('Flash Vendor'),
'Get an overview of your server\'s state, storage space, apps and VMs status, and more.' => _('Get an overview of your server\'s state, storage space, apps and VMs status, and more.'),
'Get Started' => _('Get Started'),
'Go to Connect plugin settings' => _('Go to Connect plugin settings'),
'Go to Connect' => _('Go to Connect'),
'Go to Management Access Now' => _('Go to Management Access Now'),
'Go to Settings > Notifications to enable automatic OS update notifications for future releases.' => _('Go to Settings > Notifications to enable automatic OS update notifications for future releases.'),
'Go to Tools > Management Access to activate the Flash Backup feature and ensure your backup is up-to-date.' => _('Go to Tools > Management Access to activate the Flash Backup feature and ensure your backup is up-to-date.'),
'Go to Tools > Management Access to ensure your backup is up-to-date.' => _('Go to Tools > Management Access to ensure your backup is up-to-date.'),
'Go to Tools > Registration to fix' => _('Go to Tools > Registration to fix'),
'Go to Tools > Registration to Learn More' => _('Go to Tools > Registration to Learn More'),
'Go to Tools > Update OS for more options.' => _('Go to Tools > Update OS for more options.'),
'Go to Tools > Update' => _('Go to Tools > Update'),
'hour' => sprintf(_('%s hour'), '{n}') . ' | ' . sprintf(_('%s hours'), '{n}'),
'I have made a Flash Backup' => _('I have made a Flash Backup'),
'If you are asked to supply logs, please open a support request on our Contact Page and reply to the email message you receive with your logs attached.' => _('If you are asked to supply logs, please open a support request on our Contact Page and reply to the email message you receive with your logs attached.'),
'Ignore this message if you are currently connected via Remote Access or VPN.' => _('Ignore this message if you are currently connected via Remote Access or VPN.'),
'Ignore this release until next reboot' => _('Ignore this release until next reboot'),
'Ignored Releases' => _('Ignored Releases'),
'In the rare event you need to downgrade we ask that you please provide us with Diagnostics so we can investigate your issue.' => _('In the rare event you need to downgrade we ask that you please provide us with Diagnostics so we can investigate your issue.'),
'Install Connect' => _('Install Connect'),
'Install Recovered' => _('Install Recovered'),
'Install Replaced' => _('Install Replaced'),
'Install Unraid OS {0}' => sprintf(_('Install Unraid OS %s'), '{0}'),
'Install' => _('Install'),
'Installed' => _('Installed'),
'Installing Extended Trial' => _('Installing Extended Trial'),
'Installing Extended' => _('Installing Extended'),
'Installing Recovered' => _('Installing Recovered'),
'Installing Replaced' => _('Installing Replaced'),
'Installing' => _('Installing'),
'Introducing Unraid Connect' => _('Introducing Unraid Connect'),
'Invalid API Key Format' => _('Invalid API Key Format'),
'Invalid API Key' => _('Invalid API Key'),
'Invalid installation' => _('Invalid installation'),
'It\s highly recommended to review the changelog before continuing your update.' => _('It\'s highly recommended to review the changelog before continuing your update.'),
'Key ineligible for {0}' => sprintf(_('Key ineligible for %s'), '{0}'),
'Key ineligible for future releases' => _('Key ineligible for future releases'),
'Keyfile required to check replacement status' => _('Keyfile required to check replacement status'),
'LAN IP {0}' => sprintf(_('LAN IP %s'), '{0}'),
'LAN IP Copied' => _('LAN IP Copied'),
'LAN IP' => _('LAN IP'),
'Last checked: {0}' => sprintf(_('Last checked: %s'), '{0}'),
'Learn more about the error' => _('Learn more about the error'),
'Learn more and fix' => _('Learn more and fix'),
'Learn more and link your key to your account' => _('Learn more and link your key to your account'),
'Learn More' => _('Learn More'),
'Learn more' => _('Learn more'),
'Let\'s Unleash your Hardware!' => _('Let\'s Unleash your Hardware!'),
'License key actions' => _('License key actions'),
'License key type' => _('License key type'),
'License Management' => _('License Management'),
'Link Key' => _('Link Key'),
'Linked to Unraid.net account' => _('Linked to Unraidnet account'),
'Loading' => _('Loading'),
'Manage Unraid.net Account in new tab' => _('Manage Unraid.net Account in new tab'),
'Manage Unraid.net Account' => _('Manage Unraid.net Account'),
'Manage your license keys at any time via the My Keys section.' => _('Manage your license keys at any time via the My Keys section.'),
'Manage Your Server Within Connect' => _('Manage Your Server Within Connect'),
'minute' => sprintf(_('%s minute'), '{n}') . ' | ' . sprintf(_('%s minutes'), '{n}'),
'Missing key file' => _('Missing key file'),
'month' => sprintf(_('%s month'), '{n}') . ' | ' . sprintf(_('%s months'), '{n}'),
'More options' => _('More options'),
'Multiple License Keys Present' => _('Multiple License Keys Present'),
'Never ever be left without a backup of your config. If you need to change flash drives, generate a backup from Connect and be up and running in minutes.' => _('Never ever be left without a backup of your config.') . ' ' . _('If you need to change flash drives, generate a backup from Connect and be up and running in minutes.'),
'New Version: {0}' => sprintf(_('New Version: %s'), '{0}'),
'No downgrade available' => _('No downgrade available'),
'No Flash' => _('No Flash'),
'No Keyfile' => _('No Keyfile'),
'No thanks' => _('No thanks'),
'No USB flash configuration data' => _('No USB flash configuration data'),
'Not Linked' => _('Not Linked'),
'On January 1st, 2023 SSL certificates for unraid.net were deprecated. You MUST provision a new SSL certificate to use our new myunraid.net domain. You can do this on the Settings > Management Access page.' => _('On January 1st, 2023 SSL certificates for unraid.net were deprecated. You MUST provision a new SSL certificate to use our new myunraid.net domain. You can do this on the Settings > Management Access page.'),
'Online Flash Backup' => _('Online Flash Backup'),
'Open a bug report' => _('Open a bug report'),
'Open Dropdown' => _('Open Dropdown'),
'Opens Connect in new tab' => _('Opens Connect in new tab'),
'Original release date {0}' => sprintf(_('Original release date %s'), '{0}'),
'OS Update Eligibility Expired' => _('OS Update Eligibility Expired'),
'Performing actions' => _('Performing actions'),
'Please confirm the update details below' => _('Please confirm the update details below'),
'Please finish the initiated downgrade to enable updates.' => _('Please finish the initiated downgrade to enable updates.'),
'Please finish the initiated update to enable a downgrade.' => _('Please finish the initiated update to enable a downgrade.'),
'Please fix any errors and try again.' => _('Please fix any errors and try again.'),
'Please keep this window open while we perform some actions' => _('Please keep this window open while we perform some actions'),
'Please keep this window open' => _('Please keep this window open'),
'Please sign out then sign back in to refresh your API key.' => _('Please sign out then sign back in to refresh your API key.'),
'Please wait while the page reloads to install your trial key' => _('Please wait while the page reloads to install your trial key'),
'Plus more on the way' => _('Plus more on the way'),
'Plus' => _('Plus'),
'Pro' => _('Pro'),
'Purchase Key' => _('Purchase Key'),
'Purchase' => _('Purchase'),
'Ready to Install Key' => _('Ready to Install Key'),
'Ready to update Connect account configuration' => _('Ready to update Connect account configuration'),
'Real-time Monitoring' => _('Real-time Monitoring'),
'Reboot Now to Downgrade to {0}' => sprintf(_('Reboot Now to Downgrade to %s'), '{0}'),
'Reboot Now to Downgrade' => _('Reboot Now to Downgrade'),
'Reboot Now to Update to {0}' => sprintf(_('Reboot Now to Update to %s'), '{0}'),
'Reboot Now to Update' => _('Reboot Now to Update'),
'Reboot Required for Downgrade to {0}' => sprintf(_('Reboot Required for Downgrade to %s'), '{0}'),
'Reboot Required for Downgrade' => _('Reboot Required for Downgrade'),
'Reboot Required for Update to {0}' => sprintf(_('Reboot Required for Update to %s'), '{0}'),
'Reboot Required for Update' => _('Reboot Required for Update'),
'Rebooting will likely solve this.' => _('Rebooting will likely solve this.'),
'Receive the latest and greatest for Unraid OS. Whether it new features, security patches, or bug fixes keeping your server up-to-date ensures the best experience that Unraid has to offer.' => _('Receive the latest and greatest for Unraid OS.') . ' ' . _('Whether it new features, security patches, or bug fixes keeping your server up-to-date ensures the best experience that Unraid has to offer.'),
'Recover Key' => _('Recover Key'),
'Recovered' => _('Recovered'),
'Redeem Activation Code' => _('Redeem Activation Code'),
'Refresh' => _('Refresh'),
'Registered on' => _('Registered on'),
'Registered to' => _('Registered to'),
'Registration key / USB Flash GUID mismatch' => _('Registration key / USB Flash GUID mismatch'),
'Release date {0}' => sprintf(_('Release date %s'), '{0}'),
'Release requires verification to update' => _('Release requires verification to update'),
'Reload' => _('Reload'),
'Remark: Unraid\'s WAN IPv4 {0} does not match your client\'s WAN IPv4 {1}.' => sprintf(_('Remark: Unraid\'s WAN IPv4 %1s does not match your client\'s WAN IPv4 %2s.'), '{0}', '{1}'),
'Remark: your WAN IPv4 is {0}' => sprintf(_('Remark: your WAN IPv4 is %s'), '{0}'),
'Remove from ignore list' => _('Remove from ignore list'),
'Remove' => _('Remove'),
'Replace Key' => _('Replace Key'),
'Replaced' => _('Replaced'),
'Requires the local unraid-api to be running successfully' => _('Requires the local unraid-api to be running successfully'),
'Restarting unraid-api…' => _('Restarting unraid-api…'),
'second' => sprintf(_('%s second'), '{n}') . ' | ' . sprintf(_('%s seconds'), '{n}'),
'Server Up Since {0}' => sprintf(_('Server Up Since %s'), '{0}'),
'Servers equipped with a myunraid.net certificate can be managed directly from within the Connect web UI. Manage multiple servers from your phone, tablet, laptop, or PC in the same browser window.' => _('Servers equipped with a myunraid.net certificate can be managed directly from within the Connect web UI.') . ' ' . _('Manage multiple servers from your phone, tablet, laptop, or PC in the same browser window.'),
'Set custom server tiles how you like and automatically display your server\'s banner image on your Connect Dashboard.' => _('Set custom server tiles how you like and automatically display your server\'s banner image on your Connect Dashboard.'),
'Settings' => _('Settings'),
'Sign In Failed' => _('Sign In Failed'),
'Sign In requires the local unraid-api to be running' => _('Sign In requires the local unraid-api to be running'),
'Sign In to utilize Unraid Connect' => _('Sign In to utilize Unraid Connect'),
'Sign In to your Unraid.net account to get started' => _('Sign In to your Unraid.net account to get started'),
'Sign In with Unraid.net Account' => _('Sign In with Unraid.net Account'),
'Sign In' => _('Sign In'),
'Sign Out Failed' => _('Sign Out Failed'),
'Sign Out of Unraid.net' => _('Sign Out of Unraid.net'),
'Sign Out requires the local unraid-api to be running' => _('Sign Out requires the local unraid-api to be running'),
'Signing in {0}…' => sprintf(_('Signing in %s…'), '{0}'),
'Signing In' => _('Signing In'),
'Signing out {0}…' => sprintf(_('Signing out %s…'), '{0}'),
'Signing Out' => _('Signing Out'),
'Something went wrong' => _('Something went wrong'),
'SSL certificates for unraid.net deprecated' => _('SSL certificates for unraid.net deprecated'),
'Stale Server' => _('Stale Server'),
'Stale' => _('Stale'),
'Start Free 30 Day Trial' => _('Start Free 30 Day Trial'),
'Starting your free 30 day trial' => _('Starting your free 30 day trial'),
'Success!' => _('Success!'),
'Thank you for choosing Unraid OS!' => _('Thank you for choosing Unraid OS!'),
'Thank you for installing Connect!' => _('Thank you for installing Connect!'),
'Thank you for purchasing an Unraid {0} Key!' => sprintf(_('Thank you for purchasing an Unraid %s Key!'), '{0}'),
'Thank you for upgrading to an Unraid {0} Key!' => sprintf(_('Thank you for upgrading to an Unraid %s Key!'), '{0}'),
'The Connect dashboard links to relevant sections of the webgui, allowing quick access to those settings and server sections.' => _('The Connect dashboard links to relevant sections of the webgui, allowing quick access to those settings and server sections.'),
'The logs may contain sensitive information so do not post them publicly.' => _('The logs may contain sensitive information so do not post them publicly.'),
'The primary method of support for Unraid Connect is through our forums and Discord.' => _('The primary method of support for Unraid Connect is through our forums and Discord.'),
'Then go to Tools > Registration to manually install it' => _('Then go to Tools > Registration to manually install it'),
'This may indicate a complex network that will not work with this Remote Access solution.' => _('This may indicate a complex network that will not work with this Remote Access solution.'),
'This update will require a reboot' => _('This update will require a reboot'),
'Toggle on/off server accessibility with dynamic remote access. Automatically turn on UPnP and open a random WAN port on your router at the click of a button and close off access in seconds.' => _('Toggle on/off server accessibility with dynamic remote access.') . ' ' . _('Automatically turn on UPnP and open a random WAN port on your router at the click of a button and close off access in seconds.'),
'Too Many Devices' => _('Too Many Devices'),
'Transfer License to New Flash' => _('Transfer License to New Flash'),
'Trial Expired, see options below' => _('Trial Expired, see options below'),
'Trial Expired' => _('Trial Expired'),
'Trial Key Created' => _('Trial Key Created'),
'Trial Key Creation Failed' => _('Trial Key Creation Failed'),
'Trial Key Expired {0}' => sprintf(_('Trial Key Expired %s'), '{0}'),
'Trial Key Expired at {0}' => sprintf(_('Trial Key Expired at %s'), '{0}'),
'Trial Key Expires at {0}' => sprintf(_('Trial Key Expires at %s'), '{0}'),
'Trial Key Expires in {0}' => sprintf(_('Trial Key Expires in %s'), '{0}'),
'Trial Requires Internet Connection' => _('Trial Requires Internet Connection'),
'Trial' => _('Trial'),
'Unable to check for OS updates' => _('Unable to check for OS updates'),
'Unable to fetch client WAN IPv4' => _('Unable to fetch client WAN IPv4'),
'Unable to open release notes' => _('Unable to open release notes'),
'Unknown error' => _('Unknown error'),
'Unknown' => _('Unknown'),
'unlimited' => _('unlimited'),
'Unraid {0} Available' => sprintf(_('Unraid %s Available'), '{0}'),
'Unraid {0} Update Available' => sprintf(_('Unraid %s Update Available'), '{0}'),
'Unraid {0}' => sprintf(_('Unraid %s'), '{0}'),
'Unraid Connect Error' => _('Unraid Connect Error'),
'Unraid Connect Forums' => _('Unraid Connect Forums'),
'Unraid Connect Install Failed' => _('Unraid Connect Install Failed'),
'Unraid Contact Page' => _('Unraid Contact Page'),
'Unraid Discord' => _('Unraid Discord'),
'Unraid logo animating with a wave like effect' => _('Unraid logo animating with a wave like effect'),
'Unraid OS {0} Released' => sprintf(_('Unraid OS %s Released'), '{0}'),
'Unraid OS {0} Update Available' => sprintf(_('Unraid OS %s Update Available'), '{0}'),
'Unraid OS is up-to-date' => _('Unraid OS is up-to-date'),
'Unraid OS Update Available' => _('Unraid OS Update Available'),
'unraid-api is offline' => _('unraid-api is offline'),
'Up-to-date with eligible releases' => _('Up-to-date with eligible releases'),
'Up-to-date' => _('Up-to-date'),
'Update Available' => _('Update Available'),
'Update Released' => _('Update Released'),
'Update Unraid OS confirmation required' => _('Update Unraid OS confirmation required'),
'Update Unraid OS' => _('Update Unraid OS'),
'Updating 3rd party drivers' => _('Updating 3rd party drivers'),
'Upgrade Key' => _('Upgrade Key'),
'Upgrade' => _('Upgrade'),
'Uptime {0}' => sprintf(_('Uptime %s'), '{0}'),
'USB Flash device error' => _('USB Flash device error'),
'USB Flash has no serial number' => _('USB Flash has no serial number'),
'Verify to Update' => _('Verify to Update'),
'Version available for restore {0}' => sprintf(_('Version available for restore %s'), '{0}'),
'Version: {0}' => sprintf(_('Version: %s'), '{0}'),
'View Available Updates' => _('View Available Updates'),
'View Changelog & Update' => _('View Changelog & Update'),
'View Changelog for {0}' => sprintf(_('View Changelog for %s'), '{0}'),
'View Changelog on Docs' => _('View Changelog on Docs'),
'View Changelog to Start Update' => _('View Changelog to Start Update'),
'View Changelog' => _('View Changelog'),
'View on Docs' => _('View on Docs'),
'View release notes' => _('View release notes'),
'We recommend backing up your USB Flash Boot Device before starting the update.' => _('We recommend backing up your USB Flash Boot Device before starting the update.'),
'year' => sprintf(_('%s year'), '{n}') . ' | ' . sprintf(_('%s years'), '{n}'),
'You are still eligible to access OS updates that were published on or before {1}.' => sprintf(_('You are still eligible to access OS updates that were published on or before %s.'), '{1}'),
'You can also manually create a new backup by clicking the Create Flash Backup button.' => _('You can also manually create a new backup by clicking the Create Flash Backup button.'),
'You can manually create a backup by clicking the Create Flash Backup button.' => _('You can manually create a backup by clicking the Create Flash Backup button.'),
'You have already activated the Flash Backup feature via the Unraid Connect plugin.' => _('You have already activated the Flash Backup feature via the Unraid Connect plugin.'),
'You have exceeded the number of devices allowed for your license. Please remove a device before adding another.' => _('You have exceeded the number of devices allowed for your license. Please remove a device before adding another.'),
'You have not activated the Flash Backup feature via the Unraid Connect plugin.' => _('You have not activated the Flash Backup feature via the Unraid Connect plugin.'),
'You may still update to releases dated prior to your update expiration date.' => _('You may still update to releases dated prior to your update expiration date.'),
'You\'re one step closer to enhancing your Unraid experience' => _('You\'re one step closer to enhancing your Unraid experience'),
'Your {0} Key has been replaced!' => sprintf(_('Your %s Key has been replaced!'), '{0}'),
'Your {0} license included one year of free updates at the time of purchase. You are now eligible to extend your license and access the latest OS updates. You are still eligible to access OS updates that were published on or before {1}.' => sprintf(_('Your %s license included one year of free updates at the time of purchase.'), '{0}') . ' ' . _('You are now eligible to extend your license and access the latest OS updates.') . ' ' . sprintf(_('You are still eligible to access OS updates that were published on or before %s.'), '{1}'),
'Your {0} license included one year of free updates at the time of purchase. You are now eligible to extend your license and access the latest OS updates.' => sprintf(_('Your %s license included one year of free updates at the time of purchase.'), '{0}') . ' ' . _('You are now eligible to extend your license and access the latest OS updates.'),
'Your free Trial key provides all the functionality of an Unleashed Registration key' => _('Your free Trial key provides all the functionality of an Unleashed Registration key'),
'Your license key is not eligible for Unraid OS {0}' => sprintf(_('Your license key is not eligible for Unraid OS %s'), '{0}'),
'Your Trial has expired' => _('Your Trial has expired'),
'Your Trial key has been extended!' => _('Your Trial key has been extended!'),
];
}
public function getTranslations()
{
return $this->translations ?? [];
}
/**
* @param $urlEncode {bool}
* @return string
*/
public function getTranslationsJson($urlEncode = false)
{
if ($urlEncode) {
return rawurlencode(json_encode($this->getTranslations(), JSON_UNESCAPED_SLASHES, JSON_UNESCAPED_UNICODE));
}
return json_encode($this->getTranslations(), JSON_UNESCAPED_SLASHES, JSON_UNESCAPED_UNICODE);
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,12 @@
{
".nuxt/nuxt-custom-elements/entries/unraid-components.client.mjs": {
"file": "_nuxt/unraid-components.client-CQOXNcK4.js",
"name": "unraid-components.client",
"src": ".nuxt/nuxt-custom-elements/entries/unraid-components.client.mjs",
"isEntry": true,
"css": [
"_nuxt/unraid-components-p_3YF86n.css"
]
},
"ts": 1723595088
}

View File

@@ -0,0 +1,153 @@
Menu="About:20"
Title="Downgrade OS"
Icon="icon-update"
Tag="upload"
---
<?php
/* Copyright 2005-2023, Lime Technology
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
/**
* @note icon-update is rotated via CSS in myservers1.php
*/
require_once "$docroot/plugins/dynamix.my.servers/include/reboot-details.php";
// Create an instance of the RebootDetails class
$rebootDetails = new RebootDetails();
// Get the current reboot details if there are any
$rebootDetails->setPrevious();
$serverNameEscaped = htmlspecialchars(str_replace(' ', '_', strtolower($var['NAME'])));
?>
<script>
const nchan_diagnostics = new NchanSubscriber('/sub/diagnostics', { subscriber: 'websocket' });
const reportUrl = new URL('https://forums.unraid.net/bug-reports/');
let diagnosticsFile = '';
nchan_diagnostics.on('message', function(data) {
if (data == '_DONE_') {
nchan_diagnostics.stop();
$('.sweet-alert').hide('fast').removeClass('nchan');
swal.close();
$('div.spinner').show('slow');
location = diagnosticsFile;
setTimeout(() => {
cleanupDiagnostics();
reportAfterDiagnosticsDownload();
}, 2000);
} else if (data) {
let box = $('pre#swaltext');
box.html(box.html() + '<br>' + data).scrollTop(box[0].scrollHeight);
}
});
function downloadDiagnostics() {
const tzoffset = (new Date()).getTimezoneOffset() * 60000; // offset in milliseconds
const localISOTime = (new Date(Date.now() - tzoffset));
const year = localISOTime.getFullYear();
const month = String(localISOTime.getMonth() + 1).padStart(2, '0');
const day = String(localISOTime.getDate()).padStart(2, '0');
const hours = String(localISOTime.getHours()).padStart(2, '0');
const minutes = String(localISOTime.getMinutes()).padStart(2, '0');
const dateOutput = `${year}${month}${day}_${hours}${minutes}`;
const zipName = '<?=$serverNameEscaped?>-diagnostics-' + dateOutput + '.zip';
nchan_diagnostics.start();
$.post(
'/webGui/include/Download.php',
{
cmd: 'diag',
file: zipName,
anonymize: '',
},
function(zip) {
if (!zip) {
return nchan_diagnostics.stop();
}
diagnosticsFile = zip;
swal({
title: "_(Downloading)_...",
text: "/boot/logs" + zip + "<hr><pre id='swaltext'></pre>",
html: true,
animation: 'none',
showConfirmButton: false,
});
$('.sweet-alert').addClass('nchan');
$('button.confirm').prop('disabled', true);
},
);
}
function reportAfterDiagnosticsDownload() {
$('div.spinner').hide('fast');
swal({
title: "_(Open a bug report)_",
text: "_(Create a bug report on our forums with a description of the issue along with your diagsnotics)_",
html: true,
type: 'warning',
showCancelButton: true,
confirmButtonText: "<?= _('Create Bug Report') ?>",
cancelButtonText: "<?= _('Close') ?>",
}, function(confirm) {
if (!confirm) {
return false;
}
window.open(reportUrl, '_blank');
});
}
function cleanupDiagnostics() {
if (document.hasFocus()) {
return $.post('/webGui/include/Download.php', { cmd: 'delete', file: diagnosticsFile });
}
setTimeout(cleanupDiagnostics, 2000);
}
function startDowngrade() {
$('div.spinner').show('slow');
$.get(
'/plugins/dynamix.plugin.manager/include/Downgrade.php',
{
version: '<?= $rebootDetails->previousVersion ?>',
},
function() {
refresh();
}
);
}
function confirmDowngrade() {
swal({
title: "_(Confirm Downgrade)_",
text: "<?= $rebootDetails->previousVersion ?><br>_(A reboot will be required)_",
html: true,
type: 'warning',
showCancelButton: true,
confirmButtonText: "<?= _('Confirm') ?>",
cancelButtonText: "<?= _('Cancel') ?>",
}, function(confirm) {
if (!confirm) {
return false;
}
startDowngrade();
});
}
</script>
<unraid-i18n-host>
<unraid-downgrade-os
reboot-version="<?= $rebootDetails->rebootVersion ?>"
restore-version="<?= $rebootDetails->previousVersion ?>"
restore-release-date="<?= $rebootDetails->previousReleaseDate ?>"></unraid-downgrade-os>
</unraid-i18n-host>

View File

@@ -0,0 +1,90 @@
Menu='Buttons'
Link='nav-user'
---
<?
/* Copyright 2023, Lime Technology
* Copyright 2023, Andrew Zawadzki.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
?>
<script>
const ca_args = {};
function ca_refresh() {
<?if ($task == 'Plugins'):?>
loadlist();
<?else:?>
refresh();
<?endif;?>
}
function ca_hidePluginUpdate(plugin,version,element) {
$.cookie(plugin,version);
$(element).hide();
}
function ca_pluginUpdateInstall(plugin) {
if (plugin == null) {
openPlugin(ca_args.cmd,ca_args.title,'','ca_refresh');
return;
}
ca_args.cmd = 'plugin update '+plugin;
ca_args.title = "_(Installing Update)_";
$.get('/plugins/dynamix.plugin.manager/include/ShowPlugins.php',{cmd:'alert'},function(data) {
if (data==0) {
// no alert message - proceed with update
setTimeout(ca_pluginUpdateInstall);
} else {
// show alert message and ask for confirmation
openAlert("showchanges <?=$alerts?>","_(Alert Message)_","ca_pluginUpdateInstall");
}
});
}
function caPluginUpdateCheck(plugin,options=[],callback) {
var pluginFilename = plugin.substr(0, plugin.lastIndexOf("."));
console.time("checkPlugin "+plugin);
console.log("checkPlugin "+plugin);
$.post("/plugins/dynamix.plugin.manager/scripts/PluginAPI.php",{action:'checkPlugin',options:{plugin:plugin,name:options.name}},function(caAPIresult) {
console.groupCollapsed("Result checkPlugin "+plugin);
console.log(caAPIresult);
console.timeEnd("checkPlugin "+plugin);
console.groupEnd();
var result = JSON.parse(caAPIresult);
if ( options.debug == true ) result.updateAvailable = true;
if ( ! options.element && ! options.dontShow ) {
if ( result.updateAvailable ) {
var HTML = result.updateMessage+"<span class='bannerInfo fa fa-info-circle big' title=\"_(View Release Notes)_\" onclick='openChanges(\"showchanges /tmp/plugins/"+pluginFilename+".txt\",\"_(Release Notes)_\")'></span><a class='ca_PluginUpdateInstall' onclick='ca_pluginUpdateInstall(\""+plugin+"\")'>"+result.linkMessage+"</a>";
addBannerWarning(HTML,false,options.noDismiss);
}
} else {
if ( $.cookie(plugin) != result.version ) {
if ( result.updateAvailable ) {
var HTML = result.updateMessage+"<span class='bannerInfo fa fa-info-circle big' title=\"_(View Release Notes)_\" onclick='openChanges(\"showchanges /tmp/plugins/"+pluginFilename+".txt\",\"_(Release Notes)_\")'></span><a class='ca_PluginUpdateInstall' onclick='ca_pluginUpdateInstall(\""+plugin+"\")'>"+result.linkMessage+"</a>";
if ( ! options.noDismiss ) {
HTML = HTML.concat("<span class='ca_PluginUpdateDismiss'><i class='fa fa-close' onclick='ca_hidePluginUpdate(\""+plugin+"\",\""+result.version+"\",\""+options.element+"\")'></i></span>");
}
result.HTML = HTML;
if ( ! options.dontShow ) {
$(options.element).html(HTML);
$(options.element).addClass("ca_element_notice");
}
}
}
}
if ( typeof options === "function" ) {
callback = options;
}
if ( typeof callback === "function" ) {
callback(JSON.stringify(result));
}
});
}
</script>

View File

@@ -3,8 +3,8 @@ Title="Install Plugin"
Tag="download"
---
<?PHP
/* Copyright 2005-2022, Lime Technology
* Copyright 2012-2022, Bergware International.
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
@@ -15,17 +15,31 @@ Tag="download"
*/
?>
<script>
function installPlugin(name) {
var file = name.trim();
var plugin = file.replace(/^.*(\\|\/|\:)/,'').replace('.plg','')+':install';
var func = plugin.includes('dynamix.unraid.net') ? 'reloadToList' : 'loadlist'; // conditionally reload on closure of shadboxbox for My Servers plugin
if (file) openBox("/plugins/dynamix.plugin.manager/scripts/plugin&arg1=install&arg2="+file,"_(Install Plugin)_",600,900,true,func,plugin);
const my = {};
function installPlugin(file) {
if (file == null) {
$('#plugin_file').val('');
openPlugin(my.cmd,my.title,my.plg);
return;
}
file = file.trim();
if (!file) return;
$.get('/plugins/dynamix.plugin.manager/include/ShowPlugins.php',{cmd:'alert'},function(data) {
my.cmd = 'plugin install '+file;
my.title = "_(Install Plugin)_";
my.plg = file.replace(/^.*(\\|\/|\:)/,'').replace('.plg','')+':install';
if (data==0) {
// no alert message - proceed with install
setTimeout(installPlugin);
} else {
// show alert message and ask for confirmation
openAlert("showchanges <?=$alerts?>","<?=_('Alert Message')?>",'installPlugin');
}
});
}
function reloadToList() {
$.removeCookie('tab');
window.location.href = '/Plugins';
};
</script>
**_(Enter URL of remote plugin file or local plugin file)_**
<form name="plugin_install" method="POST" target="progressFrame">

View File

@@ -6,8 +6,8 @@ Tabs="true"
Code="e944"
---
<?PHP
/* Copyright 2005-2022, Lime Technology
* Copyright 2012-2022, Bergware International.
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
@@ -18,17 +18,37 @@ Code="e944"
*/
?>
<?
// Remove stale /tmp/plugin/*.plg entries
foreach (glob("/tmp/plugins/*.{plg,txt}", GLOB_NOSORT+GLOB_BRACE) as $entry) if (!file_exists("/var/log/plugins/".basename($entry))) @unlink($entry);
// Remove stale /tmp/plugin/*.plg entries (check that script 'plugin' is not running to avoid clashes)
if (!exec('pgrep --ns $$ -f '."$docroot/plugins/dynamix.plugin.manager/scripts/plugin")) {
foreach (glob("/tmp/plugins/*.{plg,txt}", GLOB_NOSORT+GLOB_BRACE) as $entry) if (!file_exists("/var/log/plugins/".basename($entry))) @unlink($entry);
}
$check = $notify['version'] ? 0 : 1;
?>
<link type="text/css" rel="stylesheet" href="<?autov('/webGui/styles/jquery.filetree.css')?>">
<style>
#plugin_tree{width:33%;height:200px;overflow-y:scroll}
table tbody td{line-height:normal}
</style>
<script src="<?autov('/webGui/javascript/jquery.filetree.js')?>" charset="utf-8"></script>
<script>
const args = {};
function openInstall(cmd,title,plg,func) {
if (cmd == null) {
openPlugin(args.cmd,args.title,args.plg,args.func,1);
return;
}
args.cmd = cmd;
args.title = title;
args.plg = plg;
args.func = func;
$.get('/plugins/dynamix.plugin.manager/include/ShowPlugins.php',{cmd:'alert'},function(data) {
if (data==0) {
// no alert message - proceed with update
setTimeout(openInstall);
} else {
// show alert message and ask for confirmation
openAlert("showchanges <?=$alerts?>","_(Alert Message)_",'openInstall');
}
});
}
<?if ($display['resize']):?>
function resize(bind) {
var width = [];
@@ -42,6 +62,27 @@ function resize(bind) {
}
}
<?endif;?>
function multiRemove() {
if ($('input.remove:checked').length > 1) $('#removeall').show(); else $('#removeall').hide();
}
function updateList() {
var plugin = [];
$('input.update').each(function(){plugin.push($(this).attr('data'));});
var plugins = plugin.join('*');
$('#updateall').hide();
$.get('/plugins/dynamix.plugin.manager/include/ShowPlugins.php',{cmd:'pending',plugin:plugins},function() {
openPlugin("multiplugin update "+plugins,"_(Update All Plugins)_",":return","loadlist",1);
});
}
function removeList() {
var plugin = [];
$('input.remove:checked').each(function(){plugin.push($(this).attr('data'));});
var plugins = plugin.join('*');
$('#removeall').hide();
$.get('/plugins/dynamix.plugin.manager/include/ShowPlugins.php',{cmd:'pending',plugin:plugins},function() {
openPlugin("multiplugin remove "+plugins,"_(Remove Selected Plugins)_","","refresh",1);
});
}
function updateInfo(data) {
var updates = data.split('\n');
for (var n=0,update; update=updates[n]; n++) {
@@ -49,12 +90,11 @@ function updateInfo(data) {
for (var i=0,field; field=fields[i]; i++) {
var row = field.split('::');
$('#'+row[0]).attr('data',row[1]).html(row[2]);
var removeButton = $('input[data="'+row[0].substr(4).replace(/-/g,'.')+'.plg'+'"]');
if (row[2].indexOf('hourglass') >= 0) removeButton.hide(); else removeButton.show();
}
}
}
function disableButton() {
$('#plugin_list').find('input[type=button]').prop('disabled',true);
}
function initlist() {
timers.plugins = setTimeout(function(){$('div.spinner.fixed').show('slow');},500);
$.get('/plugins/dynamix.plugin.manager/include/ShowPlugins.php',{init:true,check:<?=$check?>},function(data) {
@@ -83,28 +123,35 @@ function loadlist(id,check) {
var cmd = id.split(':');
var tr = 'tr#'+cmd[0].replace(/[\. _]/g,'');
switch (cmd[1]) {
case 'update' :
case 'return' : updateInfo(data[0]); break;
case 'remove' : list.find(tr).remove(); break;
case 'install': if (!list.find(tr).length) list.append(data[0]); loadlist(null,1); break;
case 'update':
case 'return':
updateInfo(data[0]);
if (data[1] > 1) $('#updateall').show(); else $('#updateall').hide();
break;
case 'remove':
list.find(tr).remove();
break;
case 'install':
if (!list.find(tr).length) list.append(data[0]); loadlist(null,1);
break;
}
} else {
updateInfo(data[0]);
if (data[1] > 1) $('#updateall').show(); else $('#updateall').hide();
}
$('#plugin_table').trigger('update');
$('#checkall').find('input').prop('disabled',false);
if (data[1] > 1) $('#updateall').show(); else $('#updateall').hide();
if (data[2] != null) openBox('/plugins/dynamix.plugin.manager/include/ShowChanges.php?file='+data[2],"_(Alert Message)_",600,900);
});
}
$(function() {
initlist();
$('#plugin_tree').fileTree({root:'/boot/',top:'/boot/',filter:'plg'}, function(file) {$('#plugin_file').val(file);});
$('.tabs').append("<span id='updateall' class='status vhshift' style='display:none;margin-left:12px'><input type='button' value='<?=_('Update All Plugins')?>' onclick='disableButton();openBox(\"/plugins/dynamix.plugin.manager/scripts/plugin&arg1=updateall\",\"<?=_('Update All Plugins')?>\",600,600,true,\"loadlist\",\":return\")'></span>");
$('.tabs').append("<span id='checkall' class='status vhshift'><input type='button' value='<?=_('Check For Updates')?>' onclick='openBox(\"/plugins/dynamix.plugin.manager/scripts/checkall\",\"<?=_('Plugin Update Check')?>\",600,600,true,\"loadlist\",\":return\")' disabled></span>");
$('.tabs').append("<span id='checkall' class='status vhshift'><input type='button' value=\"_(Check For Updates)_\" onclick='openPlugin(\"checkall\",\"_(Plugin Update Check)_\",\":return\")' disabled></span>");
$('.tabs').append("<span id='updateall' class='status vhshift' style='display:none;margin-left:12px'><input type='button' value=\"_(Update All Plugins)_\" onclick='updateList()'></span>");
$('.tabs').append("<span id='removeall' class='status vhshift' style='display:none;margin-left:12px'><input type='button' value=\"_(Remove Selected Plugins)_\" onclick='removeList()'></span>");
});
</script>
<table class='tablesorter plugins shift' id='plugin_table'>
<table class='unraid tablesorter plugins shift' id='plugin_table'>
<thead><tr><th></th><th>_(Plugin)_</th><th>_(Author)_</th><th>_(Version)_</th><th>_(Status)_</th><th>_(Uninstall)_</th></tr></thead>
<tbody id="plugin_list"><tr><td colspan="6"></td><tr></tbody>
</table>

View File

@@ -4,8 +4,8 @@ Tag="puzzle-piece"
Cond="glob('/boot/config/plugins-error/*.plg')"
---
<?PHP
/* Copyright 2005-2021, Lime Technology
* Copyright 2012-2021, Bergware International.
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,

View File

@@ -4,8 +4,8 @@ Tag="puzzle-piece"
Cond="glob('/boot/config/plugins-stale/*.plg')"
---
<?PHP
/* Copyright 2005-2021, Lime Technology
* Copyright 2012-2021, Bergware International.
/* Copyright 2005-2023, Lime Technology
* Copyright 2012-2023, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,

View File

@@ -0,0 +1,50 @@
Menu="About:10"
Title="Update OS"
Icon="icon-update"
Tag="upload"
---
<?php
/* Copyright 2005-2023, Lime Technology
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
require_once "$docroot/plugins/dynamix.my.servers/include/reboot-details.php";
$rebootDetails = new RebootDetails();
?>
<script>
function cleanUpFlashBackup(zip) {
if (document.hasFocus()) {
$('input[value="_(Creating Flash backup)_..."]').val("_(Flash backup)_").prop('disabled',false);
$('div.spinner').hide('slow');
$('#pleaseWait').hide('slow');
$.post('/webGui/include/Download.php',{cmd:'unlink',file:zip});
} else {
setTimeout(function(){cleanUpFlashBackup(zip);},2000);
}
}
function flashBackup() {
$('input[value="_(Flash backup)_"]').val('_(Creating Flash backup)_...').prop('disabled',true);
$('div.spinner').show('slow');
$('#pleaseWait').show('slow');
$.post('/webGui/include/Download.php',{cmd:'backup'},function(zip) {
if (zip) {
location = '/'+zip;
setTimeout(function(){cleanUpFlashBackup(zip);},6000);
} else {
$('input[value="_(Creating Flash backup)_..."]').val("_(Flash backup)_");
$('div.spinner').hide('slow');
$('#pleaseWait').hide('slow');
swal({title:"_(Creation error)_",text:"_(Insufficient free disk space available)_",type:'error',html:true,confirmButtonText:"_(Ok)_"});
}
});
}
</script>
<unraid-i18n-host>
<unraid-update-os reboot-version="<?= $rebootDetails->rebootVersion ?>"></unraid-update-os>
</unraid-i18n-host>

Some files were not shown because too many files have changed in this diff Show More