1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-11-28 11:18:11 +00:00
Commit Graph

3991 Commits

Author SHA1 Message Date
grossmj
0a14a08d54 Use recent OVMF firmware (stable-202305) and use flash drives to configure Qemu command line 2023-07-04 13:06:34 +10:00
Raizo62
bbb68cb148 - remove the useless executable permissions to the file gns3server/disks/empty8G.qcow2
https://github.com/GNS3/gns3-gui/issues/3491
2023-06-28 08:30:13 +02:00
grossmj
d5cfb85de5 Backport UEFI boot mode support for Qemu VMs 2023-06-23 11:18:25 +09:30
grossmj
3dbc714f37 Developement on v2.2.41.dev2 2023-06-10 21:40:39 +09:30
grossmj
60f1d76eab Release v2.2.40.1 2023-06-10 20:06:40 +09:30
grossmj
d44038305f Add missing web-ui files. Fixes #2239 2023-06-10 15:50:28 +09:30
grossmj
3641742930 Development on v2.2.41.dev1 2023-06-06 12:43:20 +09:30
grossmj
aa79f4cb25 Release v2.2.40 2023-06-06 10:23:42 +09:30
grossmj
2602602193 Merge branch 'master' into 2.2 2023-06-06 10:20:07 +09:30
grossmj
8d969349c8 Bundle web-ui v2.2.40 2023-06-06 10:18:18 +09:30
grossmj
bf67fec242 Sync appliances 2023-06-06 10:07:50 +09:30
Raizo62
0b6436d2cb qemu : with network adapter_type equal to "virtio-net-pci", fix the speed to 10000 and duplex to full.
The values are actually fake.
	(https://github.com/GNS3/gns3-gui/issues/3476)
2023-06-03 11:48:55 +02:00
Jeremy Grossmann
088ae699de
Merge pull request #2223 from GNS3/fix/2214
Use proc.communicate() when checking for subprocess output
2023-06-02 20:29:40 +09:30
grossmj
cc4ead40e2 Fix unexpected indent 2023-06-02 20:08:21 +09:30
Mlastawi
045c0c4c14
Add missing comma 2023-06-02 10:38:42 +02:00
Maciej Łastawiecki
a0943b0b5a Parse name for request to node creation from template 2023-06-02 09:39:08 +02:00
grossmj
84c886b058 Remove left over Xvfb related code 2023-05-31 21:33:39 +09:30
grossmj
e59b5fb95b Remove Xvfb + x11vnc support 2023-05-31 21:28:06 +09:30
grossmj
e45467af57 Use the correct VirtualBox host-only type 2023-05-31 20:39:25 +09:30
grossmj
c6d6fcfe66 Search for correct VirtualBox network type 2023-05-31 20:19:13 +09:30
grossmj
73bcd019cc Require a Host-Only Network to start the VirtualBox GNS3 VM on macOS with VirtualBox 7 2023-05-30 21:22:57 +09:30
grossmj
2361e138ec Properly catch aiohttp client exception. Ref #2228 2023-05-30 16:17:12 +09:30
grossmj
0f02cff5f2 Catch ConnectionResetError when waiting for the wrap console 2023-05-25 18:29:19 +08:00
grossmj
72af145a23 Fix open IPv6 address for HTTP consoles on controller. Fixes https://github.com/GNS3/gns3-gui/issues/3448 2023-05-22 19:42:01 +08:00
grossmj
af2fc8c111 Use proc.communicate() when checking for subprocess output
As recommended in https://docs.python.org/3/library/asyncio-subprocess.html#asyncio.subprocess.Process.stderr
2023-05-14 13:58:50 +08:00
grossmj
b4bfb24a80 Development on v2.2.40.dev1 2023-05-08 20:26:40 +08:00
grossmj
d6ea546ff7 Release v2.2.39 2023-05-08 19:17:02 +08:00
grossmj
68f9c55f3d Install web-ui v2.2.39 2023-05-08 19:10:22 +08:00
Jeremy Grossmann
9868c28bc6
Merge pull request #2219 from GNS3/install-qemu-empty-disks
Install empty Qemu disks
2023-05-08 16:58:26 +08:00
grossmj
f3f7921525 Add generic function to install resource files 2023-05-07 21:57:44 +08:00
grossmj
65cc12c850 Sync appliance files 2023-05-05 22:46:42 +08:00
grossmj
161f62d083 Install empty Qemu disks on first start 2023-05-05 22:40:58 +08:00
grossmj
d6141d4652 Fix checking for ":" in project dir on Windows for Docker containers 2023-03-23 22:17:29 -10:00
grossmj
f08ce9d3f1 Check for colon in project name. Fixes #2203 2023-03-19 18:26:26 +10:00
grossmj
42767eff56 Development on 2.2.39.dev1 2023-02-28 17:09:39 +10:00
grossmj
91dba66800 Release v2.2.38 2023-02-28 15:35:17 +10:00
grossmj
69b741a01e Sync appliance files 2023-02-28 15:31:02 +10:00
grossmj
8903ab8a47 Bundle web-ui v2.2.38 2023-02-28 15:29:17 +10:00
grossmj
2a66f67b5f Merge remote-tracking branch 'origin/2.2' into 2.2 2023-02-27 22:59:08 +10:00
grossmj
8ef59c7832 Fix c7200_i0_log.txt is created in the current directory. Fixes #2191 2023-02-27 22:58:52 +10:00
grossmj
7968ee7ff2 Check swtpm version and start swtpm before qemu 2023-02-26 20:51:24 +10:00
grossmj
1f85abb036 Fix broken websocket console with Python 3.11 2023-02-18 15:32:57 +08:00
grossmj
30c85703c8 Attempt to fix "cannot reopen console". Ref #2182 2023-02-13 19:32:44 +08:00
grossmj
0f49911432 Fix Qemu binary not set when adding appliance from template 2023-02-04 12:18:52 +08:00
grossmj
e5ecdd270d Development 2.2.38.dev1 2023-01-25 18:36:39 +08:00
grossmj
260ac44e87 Release v2.2.37 2023-01-25 15:06:12 +08:00
grossmj
a0cf711634 Bump version to 2.2.37.dev3 2023-01-25 14:13:07 +08:00
grossmj
b83645c531 Add web-ui v2.2.37 2023-01-24 15:06:21 +08:00
grossmj
a7daae1c6a Sync appliances 2023-01-24 14:57:58 +08:00
grossmj
a7d19fd89a Fix StreamWriter doesn't have the wait_closed() method in Python3.6. Fixes #2170 2023-01-20 13:14:57 +08:00
grossmj
3c2ae5363c Install built-in appliances when no previous version has been detected. Fixes #2168 2023-01-17 13:39:01 +08:00
grossmj
24d1aeee32 Bump version to 2.2.37.dev2 2023-01-17 13:30:09 +08:00
grossmj
90d7478679 Sync appliances 2023-01-17 13:11:18 +08:00
grossmj
c57b0cbb53 Find Dynamips version before hypervisor launch and do not require Dynamips v0.2.23 2023-01-16 18:04:46 +08:00
grossmj
535f89e29e Give udhcpc executable right. Fixes #2159 2023-01-06 20:09:17 +08:00
grossmj
f8f5d7ec07 Development on 2.2.37.dev1 2023-01-05 09:13:30 +08:00
grossmj
8e2992fbc7 Release v2.2.36 2023-01-04 19:46:30 +08:00
grossmj
8986f10506 Install web-ui v2.2.36 2023-01-04 19:05:24 +08:00
grossmj
10f3adcb60 Sync appliance files 2023-01-04 18:28:14 +08:00
grossmj
5459543eb5 Fix issue when detecting Dynamips version (version is not set until after Dynamips has started) 2023-01-04 18:21:17 +08:00
grossmj
e15c36f05c Merge remote-tracking branch 'origin/2.2' into 2.2 2023-01-04 15:12:26 +08:00
grossmj
da7c7d16e4 Fix starting Dynamips on Windows 2023-01-04 15:12:09 +08:00
grossmj
297ada529c Prevent TPM to run on Windows 2023-01-04 12:57:48 +08:00
grossmj
ae200d9add Add Trusted Platform Module (TPM) support for Qemu VMs 2023-01-04 12:13:19 +08:00
grossmj
9132002b80 Fix typos 2023-01-04 09:08:40 +08:00
grossmj
771a9a5ddb Require Dynamips 0.2.23 and bind Dynamips hypervisor on 127.0.0.1 2023-01-02 15:26:59 +08:00
Jeremy Grossmann
04ba3b6549
Merge pull request #2154 from GNS3/fix/2069
Use a stock BusyBox for the Docker integration
2023-01-01 16:18:37 +05:45
grossmj
d2ad9dc5e2 Delete the built-in appliance directory before installing updated files 2023-01-01 17:49:00 +08:00
grossmj
e5c8ae4bde Use a stock BusyBox for the Docker integration 2023-01-01 17:04:48 +08:00
grossmj
5bccf4841d Overwrite built-in appliance files when starting a more recent version of the server 2023-01-01 15:57:41 +08:00
grossmj
b3a6b9173b Fix reset console. Fixes #1619 2022-12-31 09:43:17 +08:00
grossmj
1148dbc48e Fix issue when calling reset_console with running VPCS and Qemu nodes. Ref #1619 2022-12-30 20:54:37 +08:00
grossmj
85679aaa94 Try importlib-resources for Python 3.9 2022-12-30 11:44:29 +08:00
grossmj
5bcc247881 Make gns3server.appliances a package 2022-12-30 11:37:34 +08:00
grossmj
b8d595928b Try to fix tests 2022-12-30 10:35:29 +08:00
grossmj
3804249d89 Fix tests 2022-12-30 10:01:43 +08:00
grossmj
c56a8ef8f7 Only use importlib_resources for Python < 3.9. Fixes #2147 2022-12-30 09:15:40 +08:00
grossmj
2550fb3495 Support when the user field defined in Docker container is an ID. Fixes #2134 2022-12-28 11:05:22 +08:00
grossmj
5ba526e175 Development on v2.2.36.dev2 2022-11-11 00:36:47 +08:00
grossmj
d17c243b13 Release v2.2.35.1 2022-11-10 22:21:13 +08:00
grossmj
9e4ae6bc24 Sync appliance files 2022-11-10 22:10:21 +08:00
grossmj
b9e415b6fe Push missing file for Web-Ui v2.2.35 2022-11-10 13:09:10 +08:00
grossmj
d2d327cc76 Re-release Web-Ui v2.2.35 2022-11-10 12:38:33 +08:00
grossmj
0a046e43d7 Development on 2.2.36.dev1 2022-11-09 20:02:20 +08:00
grossmj
1aca7dbe04 Release v2.2.35 2022-11-08 23:40:25 +08:00
grossmj
c80a55b18c Install appliances and configs without importlib_resources for Windows only 2022-11-08 23:07:45 +08:00
grossmj
284a4b62fb Fix copying appliances and configs when app is frozen 2022-11-08 22:50:59 +08:00
grossmj
d33fefa183 Merge branch 'master' into 2.2 2022-11-08 19:29:39 +08:00
grossmj
dfb48c884b Release web-ui v2.2.35 2022-11-08 19:29:21 +08:00
grossmj
f80aca7633 Sync appliance files 2022-11-08 18:40:27 +08:00
grossmj
84914ecfa4 Add debug messages to fix VMnet interface list refresh. Ref https://github.com/GNS3/gns3-gui/issues/3381 2022-11-08 12:54:47 +08:00
grossmj
5696d1ccb7 Fix issues with VMnet interface on macOS >= 11.0. Ref #3381 2022-11-07 23:59:33 +08:00
grossmj
a4b24eaceb Use importlib_resources instead of pkg_resources and install built-in appliances in config dir. 2022-11-07 20:12:03 +08:00
grossmj
f04702d607 Fix console vnc don't use configured ports in some case. Fixes #2111 2022-11-06 19:36:31 +08:00
grossmj
9cf2e4f5a6 Make version PEP 440 compliant 2022-11-06 17:51:31 +08:00
grossmj
f3b8f43689 Fix creating asyncio task in Python 3.6 2022-10-30 22:21:28 +08:00
grossmj
2d74d1ad94 Fix tests for Python 3.11 2022-10-30 22:07:44 +08:00
grossmj
6b3d4feab8 Replace deprecated distro.linux_distribution() call 2022-10-11 23:28:11 +08:00
grossmj
40c22e389e Merge branch 'master' into 2.2 2022-09-29 14:56:35 +02:00
Jeremy Grossmann
0419c081fe
Merge pull request #2083 from a60814billy/fix/binding-on-wrong-interface-in-windows
fix: binding to wrong interface in windows
2022-09-28 17:36:31 +02:00
grossmj
0d0a06799d Development on 2.2.35dev1 2022-08-29 11:14:44 +02:00
grossmj
8d4df08150 Release v2.2.34 2022-08-28 23:28:12 +02:00
grossmj
fd1d8d9d86 Update appliance files 2022-08-28 22:51:26 +02:00
Jeremy Grossmann
e96d8ae497
Merge pull request #2089 from SpikefishSolutions/spikefishjohn-patch-3
Update compute.py
2022-08-28 22:09:44 +02:00
grossmj
129f0a631c Use original $PATH in init.sh for Docker containers. Ref #2069 2022-08-28 12:06:56 +02:00
grossmj
d1c8f33fc5 Upgrade dev dependencies and fix issues after upgrading to pytest-aiohttp v1.0.4 2022-08-27 19:16:02 +02:00
John Fleming
7277d526e3
Update compute.py
Remove check for open project. Without this check a remote can be rebooted and will be usable once the main server polls it again. Without this the main server would need to open a project that already uses the remote server or restart the main server's gns3 process.
2022-07-18 18:43:57 -04:00
BoHong Li
790bf4521d fix: use exact match to find interface in windows to avoid get wrong interface 2022-07-06 14:22:11 +08:00
grossmj
9e5ca50302 Bump version to v2.2.34dev2 2022-06-23 10:55:19 +02:00
grossmj
35ec8bed6e Back to development on v2.2.34dev2 2022-06-21 11:52:58 +02:00
grossmj
0433065b8b Revert "Development on v2.2.34dev2"
This reverts commit 7c5a5a9001.
2022-06-21 11:51:01 +02:00
grossmj
7c5a5a9001 Development on v2.2.34dev2 2022-06-21 11:38:09 +02:00
grossmj
1b32ef7854 Release v2.2.33.1 2022-06-21 10:48:02 +02:00
grossmj
f5b1920f8c Add missing web-ui file 2022-06-21 10:24:19 +02:00
grossmj
4341db0ff3 Development on v2.2.34dev1 2022-06-20 21:47:42 +02:00
grossmj
162a8baf7b Release v2.2.33 2022-06-20 20:53:21 +02:00
grossmj
d47e546fce Release web-ui v2.2.33 2022-06-20 20:37:51 +02:00
grossmj
3c901a84bf Sync appliance files. 2022-06-20 20:02:04 +02:00
grossmj
908911e764 Remove parameter "Name" not useful to create a Docker container 2022-06-18 19:41:20 +02:00
grossmj
bdd703a0dc Support to reset all console connections. Ref https://github.com/GNS3/gns3-server/issues/1619 2022-06-15 15:30:44 +02:00
grossmj
67bf14776f Config option to disable built-in templates 2022-06-15 14:48:52 +02:00
grossmj
2eb64200a4 Add spaces before hostname for Docker network config. Ref #2039 2022-06-12 19:32:34 +08:00
grossmj
988ca7574c Add hostname entry to sample network config for Docker nodes. Fixes #2039 2022-06-08 01:07:31 +08:00
grossmj
527d4bb3ea Run Xtigervnc with MIT-SHM extension disabled for Docker VNC console support. Fixes #2071 2022-06-08 00:05:24 +08:00
grossmj
bccfb64958 Development on 2.2.33dev1 2022-04-27 19:51:24 +07:00
grossmj
99813b3cfa Release v2.2.32 2022-04-27 18:47:20 +07:00
grossmj
1837850894 Docker: load custom interface files from /etc/network/interfaces (commented by default). Ref #2052 2022-04-27 18:37:09 +07:00
grossmj
fe037a5f1c Merge branch 'master' into 2.2 2022-04-27 18:25:31 +07:00
grossmj
b03ec6e3fe Release web Ui 2.2.32 with correct version displayed 2022-04-27 18:24:36 +07:00
grossmj
732c5deeff Revert "Release web UI 2.2.32"
This reverts commit db1443dd08.
2022-04-27 18:19:44 +07:00
grossmj
db1443dd08 Release web UI 2.2.32 2022-04-27 18:11:26 +07:00
grossmj
54e638f3ea Update appliance files 2022-04-27 17:26:36 +07:00
grossmj
890dbd9f77 Create /etc/network/interfaces.d in Docker container. Fixes #2052 2022-04-20 22:59:51 +07:00
grossmj
460fe5ed95 Prettify Docker '/etc/network/interfaces' file. Ref #2040 2022-04-20 19:29:56 +07:00
grossmj
653539d2b0 Use public DSNs for Sentry 2022-04-20 18:41:18 +07:00
grossmj
56b5c1d237 Fix VMware Fusion VM does not start on macOS >= 11. Fixes #2027 2022-04-20 18:26:45 +07:00
Kai Vogelgesang
73dff4b9c6
Fix typo 2022-03-23 08:38:14 +01:00
grossmj
53f89a7fe5 Development on 2.2.32dev1 2022-02-26 20:39:26 +10:30
grossmj
22c16e3608 Release v2.2.31 2022-02-26 18:22:29 +10:30
grossmj
bb26ef2c3d Development on 2.2.31dev1 2022-02-25 15:59:40 +10:30
grossmj
74018fae7b Release v2.2.30 2022-02-25 14:52:27 +10:30
grossmj
f963e63d16 Merge branch 'master' into 2.2 2022-02-25 14:45:47 +10:30
grossmj
7490be6d5e Support GNS3 variables in Docker environment variables. Fixes #2033 2022-02-23 14:33:30 +10:30
piotrpekala7
fa96c1845c Release web UI 2.2.30 2022-02-16 01:08:59 +01:00
John Fleming
511ac73d4f
qemu_vm.py Linked node test.
Include project name in error. This should help identify which project the none linked node is located in.
2022-01-17 14:19:49 -05:00
grossmj
6544f2e8e4 Development on 2.2.30dev1 2022-01-08 22:53:27 +10:30
grossmj
aff06572d4 Release v2.2.29 2022-01-08 22:15:15 +10:30
grossmj
35781e9b39 Sync appliance files 2022-01-08 22:11:32 +10:30
grossmj
3251badfa5 Merge branch 'master' into 2.2 2022-01-08 22:02:37 +10:30
piotrpekala7
9559741d1f Release web UI 2.2.29 2022-01-07 21:03:19 +01:00
grossmj
ef36b340b0 Development on 2.2.29dev1 2021-12-15 21:38:06 +10:30
grossmj
bbcc28bbfc Release v2.2.28 2021-12-15 13:54:14 +10:30
grossmj
d96d11746e Merge branch 'master' into 2.2
# Conflicts:
#	init/gns3.service.systemd
2021-12-15 13:36:04 +10:30
grossmj
b400ae240d Sync appliance files 2021-12-15 13:23:48 +10:30
piotrpekala7
466584f074 Release web UI 2.2.28 2021-12-13 23:49:42 +01:00
grossmj
8d5d480077 Development on 2.2.28dev1 2021-11-13 16:31:21 +10:30
grossmj
2469468c5d Release v2.2.27 2021-11-12 15:33:53 +10:30
grossmj
02a19b230f Sync appliance files 2021-11-12 15:12:15 +10:30
grossmj
c077a15137 Merge branch 'master' into 2.2 2021-11-12 14:46:30 +10:30
piotrpekala7
ce08b8914f Release web UI 2.2.27 fixed version 2021-11-10 00:14:25 +01:00
piotrpekala7
f7b7b1e59f Release web UI 2.2.27 2021-11-08 18:13:12 +01:00
grossmj
b1a62dfdc2 Fix unhandled KeyError exception when starting Docker container. Ref #1991 2021-11-04 16:59:35 +10:30
grossmj
1067e60284 Development on 2.2.27dev1 2021-10-08 21:49:11 +10:30
grossmj
6cb8b9a75e Release v2.2.26 2021-10-08 21:02:04 +10:30
grossmj
7009459b0c Merge branch 'master' into 2.2 2021-10-08 20:14:09 +10:30
grossmj
03c94c0bc5 Sync appliance files. 2021-10-08 20:13:32 +10:30
piotrpekala7
482b46d343 Release web UI 2.2.26 2021-10-06 17:53:00 +02:00
grossmj
5ece48500c Sort symbols by theme. Fixes https://github.com/GNS3/gns3-gui/issues/3230 2021-09-20 20:09:58 +09:30
grossmj
5eb5658a74 Fix memory percentage left warning. Fixes #1966 2021-09-20 18:08:02 +09:30
grossmj
3286348a95 Update affinity symbols. Fixes https://github.com/GNS3/gns3-gui/issues/3232 2021-09-20 17:46:19 +09:30
grossmj
67661616cf Development on v2.2.26dev1 2021-09-14 21:13:04 +09:30
grossmj
6beab9433b Release v2.2.25 2021-09-14 19:20:10 +09:30
grossmj
e59e051961 Merge branch 'master' into 2.2 2021-09-14 18:42:39 +09:30
piotrpekala7
6b3f703f94 Release web UI 2.2.25 2021-09-14 10:35:10 +02:00
grossmj
d44a6756c1 Sync appliance files 2021-09-12 18:13:21 +09:30
grossmj
6d10d92af2 Fix images_path -> symbols_path 2021-09-09 16:58:42 +09:30
grossmj
a8aeb63c91 No need to find the mountpoint first for disk usage. 2021-09-09 16:58:02 +09:30
grossmj
6f1feed265 Fix issue preventing to use custom nested symbols. Fixes #1969 2021-09-08 15:13:51 +09:30
grossmj
5162ef2e22 Updated affinity symbols 2021-09-08 01:08:01 +09:30
grossmj
611570a863 Fix qemu-img rebase code to support Qemu 6.1. Ref https://github.com/GNS3/gns3-server/pull/1962 2021-09-05 22:18:46 +09:30
grossmj
99d7d0c769 Merge branch 'master' into 2.2
# Conflicts:
#	gns3server/compute/qemu/qemu_vm.py
2021-09-05 21:53:36 +09:30
grossmj
ed336da304 Qemu 6.1 support
Handle the deprecated use of backing file without explicit backing format issue.
2021-09-05 18:34:37 +09:30
Brian Candler
21e9f38437 Reinstate qemu-img rebase
This allows importing portable projects with images and/or snapshots,
regression introduced by #1927.

Fixes #1955
2021-09-04 12:34:22 +01:00
grossmj
a55c9a5c6a Return disk usage for partition that contains the default project directory. Fixes #1947 2021-09-03 12:04:10 +09:30
Jeremy Grossmann
51c6f3fa31
Revert "List disk usage for all mount points" 2021-09-02 21:59:09 +09:30
grossmj
b1224ce9f6 Update schema description for disk_usage_percent. 2021-09-02 15:48:13 +09:30
grossmj
a2367d3c04 List disk usage for all mount points. 2021-09-02 15:43:38 +09:30
grossmj
945e3e3e8e Development on 2.2.25dev1 2021-08-25 21:23:19 +09:30
grossmj
59a89c5f88 Release v2.2.24 2021-08-25 20:31:25 +09:30
grossmj
78c2ded2aa Merge branch 'master' into 2.2 2021-08-25 20:08:26 +09:30
piotrpekala7
6ba40bd5fb Release web UI 2.2.24 2021-08-25 11:57:52 +02:00
grossmj
6005e89181 Fix issue when searching for image with relative path. Fixes #1925 2021-08-25 17:23:21 +09:30
grossmj
27bcb60580 Sync appliance files. 2021-08-24 21:21:18 +09:30
grossmj
363fdb7d10 Fix wrong error when NAT interface is not allowed. Fixes #1943 2021-08-24 20:40:06 +09:30
grossmj
92150fba71 Fix incorrect Qemu binary selected when importing template. Fixes https://github.com/GNS3/gns3-gui/issues/3216 2021-08-24 17:26:06 +09:30
grossmj
c4c71cc838 Fix error when updating a link style. Fixes https://github.com/GNS3/gns3-gui/issues/2461 2021-08-24 11:35:33 +09:30
grossmj
8aada49414 Some fixes for early support for Python3.10
The loop parameter has been removed from most of asyncio‘s high-level API following deprecation in Python 3.8.
2021-08-15 15:25:33 +09:30
grossmj
496170b4e5 Early support for Python3.10 Fixes #1940 2021-08-15 15:09:48 +09:30
grossmj
8c0899d086 Development on 2.2.24dev1 2021-08-05 21:16:10 +09:30
grossmj
d5c73f4ba4 Release v2.2.23 2021-08-05 15:58:54 +09:30