Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion api/dev/Unraid.net/myservers.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[api]
version="4.1.3"
version="4.4.1"
extraOrigins="https://google.com,https://test.com"
[local]
sandbox="yes"
Expand Down
4 changes: 2 additions & 2 deletions api/dev/states/myservers.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[api]
version="4.1.3"
version="4.4.1"
extraOrigins="https://google.com,https://test.com"
[local]
sandbox="yes"
Expand All @@ -20,5 +20,5 @@ dynamicRemoteAccessType="DISABLED"
ssoSubIds=""
allowedOrigins="/var/run/unraid-notifications.sock, /var/run/unraid-php.sock, /var/run/unraid-cli.sock, http://localhost:8080, https://localhost:4443, https://tower.local:4443, https://192.168.1.150:4443, https://tower:4443, https://192-168-1-150.thisisfourtyrandomcharacters012345678900.myunraid.net:4443, https://85-121-123-122.thisisfourtyrandomcharacters012345678900.myunraid.net:8443, https://10-252-0-1.hash.myunraid.net:4443, https://10-252-1-1.hash.myunraid.net:4443, https://10-253-3-1.hash.myunraid.net:4443, https://10-253-4-1.hash.myunraid.net:4443, https://10-253-5-1.hash.myunraid.net:4443, https://10-100-0-1.hash.myunraid.net:4443, https://10-100-0-2.hash.myunraid.net:4443, https://10-123-1-2.hash.myunraid.net:4443, https://221-123-121-112.hash.myunraid.net:4443, https://google.com, https://test.com, https://connect.myunraid.net, https://connect-staging.myunraid.net, https://dev-my.myunraid.net:4000, https://studio.apollographql.com"
[connectionStatus]
minigraph="PRE_INIT"
minigraph="ERROR_RETRYING"
upnpStatus=""
1 change: 0 additions & 1 deletion api/src/core/modules/array/get-array-data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import { GraphQLError } from 'graphql';
import { sum } from 'lodash-es';

import type { ArrayCapacity, ArrayType } from '@app/graphql/generated/api/types.js';
import { getServerIdentifier } from '@app/core/utils/server-identifier.js';
import { ArrayDiskType } from '@app/graphql/generated/api/types.js';
import { store } from '@app/store/index.js';
import { FileLoadStatus } from '@app/store/types.js';
Expand Down
17 changes: 11 additions & 6 deletions api/src/core/utils/clients/emcmd.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { got } from 'got';

import { AppError } from '@app/core/errors/app-error.js';
import { logger } from '@app/core/log.js';
import { type LooseObject } from '@app/core/types/index.js';
import { catchHandlers } from '@app/core/utils/misc/catch-handlers.js';
import { DRY_RUN } from '@app/environment.js';
import { getters } from '@app/store/index.js';

Expand All @@ -27,10 +27,15 @@ export const emcmd = async (commands: LooseObject) => {
// Ensure we only log on dry-run
return;
}
// Untested, this code is unused right now so going to assume it's probably not working well anyway, swapped
// to got to remove this request-promise dependency
return got
.get(url, { searchParams: { ...commands, csrf_token: csrfToken } })
.catch(catchHandlers.emhttpd);
// return request.get(url, options).catch(catchHandlers.emhttpd);
.get(url, {
enableUnixSockets: true,
searchParams: { ...commands, csrf_token: csrfToken },
})
.catch((error: NodeJS.ErrnoException) => {
if (error.code === 'ENOENT') {
throw new AppError('emhttpd socket unavailable.');
}
throw error;
});
};
72 changes: 64 additions & 8 deletions api/src/graphql/generated/api/operations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import * as Types from '@app/graphql/generated/api/types.js';

import { z } from 'zod'
import { AccessUrl, AccessUrlInput, AddPermissionInput, AddRoleForApiKeyInput, AddRoleForUserInput, AllowedOriginInput, ApiKey, ApiKeyResponse, ApiKeyWithSecret, ApiSettingsInput, ArrayType, ArrayCapacity, ArrayDisk, ArrayDiskFsColor, ArrayDiskStatus, ArrayDiskType, ArrayPendingState, ArrayState, Baseboard, Capacity, Case, Cloud, CloudResponse, Config, ConfigErrorState, Connect, ConnectSettings, ConnectSettingsValues, ConnectSignInInput, ConnectUserInfoInput, ContainerHostConfig, ContainerMount, ContainerPort, ContainerPortType, ContainerState, CreateApiKeyInput, Devices, Disk, DiskFsType, DiskInterfaceType, DiskPartition, DiskSmartStatus, Display, Docker, DockerContainer, DockerNetwork, DynamicRemoteAccessStatus, DynamicRemoteAccessType, EnableDynamicRemoteAccessInput, Flash, Gpu, Importance, Info, InfoApps, InfoCpu, InfoMemory, KeyFile, LogFile, LogFileContent, Me, MemoryFormFactor, MemoryLayout, MemoryType, MinigraphStatus, MinigraphqlResponse, Mount, Network, Node, Notification, NotificationCounts, NotificationData, NotificationFilter, NotificationOverview, NotificationType, Notifications, NotificationslistArgs, Os, Owner, ParityCheck, Partition, Pci, Permission, ProfileModel, Registration, RegistrationState, RelayResponse, RemoteAccess, RemoveRoleFromApiKeyInput, Resource, Role, Server, ServerStatus, Service, SetupRemoteAccessInput, Share, System, Temperature, Theme, URL_TYPE, UnassignedDevice, Uptime, Usb, User, UserAccount, Vars, Versions, VmDomain, VmState, Vms, WAN_ACCESS_TYPE, WAN_FORWARD_TYPE, Welcome, addUserInput, arrayDiskInput, deleteUserInput, mdState, registrationType, usersInput } from '@app/graphql/generated/api/types.js'
import { AccessUrl, AccessUrlInput, AddPermissionInput, AddRoleForApiKeyInput, AddRoleForUserInput, AllowedOriginInput, ApiKey, ApiKeyResponse, ApiKeyWithSecret, ApiSettingsInput, ArrayType, ArrayCapacity, ArrayDisk, ArrayDiskFsColor, ArrayDiskInput, ArrayDiskStatus, ArrayDiskType, ArrayMutations, ArrayMutationsaddDiskToArrayArgs, ArrayMutationsclearArrayDiskStatisticsArgs, ArrayMutationsmountArrayDiskArgs, ArrayMutationsremoveDiskFromArrayArgs, ArrayMutationssetStateArgs, ArrayMutationsunmountArrayDiskArgs, ArrayPendingState, ArrayState, ArrayStateInput, ArrayStateInputState, Baseboard, Capacity, Case, Cloud, CloudResponse, Config, ConfigErrorState, Connect, ConnectSettings, ConnectSettingsValues, ConnectSignInInput, ConnectUserInfoInput, ContainerHostConfig, ContainerMount, ContainerPort, ContainerPortType, ContainerState, CreateApiKeyInput, Devices, Disk, DiskFsType, DiskInterfaceType, DiskPartition, DiskSmartStatus, Display, Docker, DockerContainer, DockerNetwork, DynamicRemoteAccessStatus, DynamicRemoteAccessType, EnableDynamicRemoteAccessInput, Flash, Gpu, Importance, Info, InfoApps, InfoCpu, InfoMemory, KeyFile, LogFile, LogFileContent, Me, MemoryFormFactor, MemoryLayout, MemoryType, MinigraphStatus, MinigraphqlResponse, Mount, Network, Node, Notification, NotificationCounts, NotificationData, NotificationFilter, NotificationOverview, NotificationType, Notifications, NotificationslistArgs, Os, Owner, ParityCheck, Partition, Pci, Permission, ProfileModel, Registration, RegistrationState, RelayResponse, RemoteAccess, RemoveRoleFromApiKeyInput, Resource, Role, Server, ServerStatus, Service, SetupRemoteAccessInput, Share, System, Temperature, Theme, URL_TYPE, UnassignedDevice, Uptime, Usb, User, UserAccount, Vars, Versions, VmDomain, VmState, Vms, WAN_ACCESS_TYPE, WAN_FORWARD_TYPE, Welcome, addUserInput, deleteUserInput, mdState, registrationType, usersInput } from '@app/graphql/generated/api/types.js'
import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';

type Properties<T> = Required<{
Expand All @@ -25,6 +25,8 @@ export const ArrayPendingStateSchema = z.nativeEnum(ArrayPendingState);

export const ArrayStateSchema = z.nativeEnum(ArrayState);

export const ArrayStateInputStateSchema = z.nativeEnum(ArrayStateInputState);

export const ConfigErrorStateSchema = z.nativeEnum(ConfigErrorState);

export const ContainerPortTypeSchema = z.nativeEnum(ContainerPortType);
Expand Down Expand Up @@ -213,6 +215,67 @@ export function ArrayDiskSchema(): z.ZodObject<Properties<ArrayDisk>> {
})
}

export function ArrayDiskInputSchema(): z.ZodObject<Properties<ArrayDiskInput>> {
return z.object({
id: z.string(),
slot: z.number().nullish()
})
}

export function ArrayMutationsSchema(): z.ZodObject<Properties<ArrayMutations>> {
return z.object({
__typename: z.literal('ArrayMutations').optional(),
addDiskToArray: ArrayTypeSchema().nullish(),
clearArrayDiskStatistics: z.record(z.string(), z.any()).nullish(),
mountArrayDisk: DiskSchema().nullish(),
removeDiskFromArray: ArrayTypeSchema().nullish(),
setState: ArrayTypeSchema().nullish(),
unmountArrayDisk: DiskSchema().nullish()
})
}

export function ArrayMutationsaddDiskToArrayArgsSchema(): z.ZodObject<Properties<ArrayMutationsaddDiskToArrayArgs>> {
return z.object({
input: z.lazy(() => ArrayDiskInputSchema().nullish())
})
}

export function ArrayMutationsclearArrayDiskStatisticsArgsSchema(): z.ZodObject<Properties<ArrayMutationsclearArrayDiskStatisticsArgs>> {
return z.object({
id: z.string()
})
}

export function ArrayMutationsmountArrayDiskArgsSchema(): z.ZodObject<Properties<ArrayMutationsmountArrayDiskArgs>> {
return z.object({
id: z.string()
})
}

export function ArrayMutationsremoveDiskFromArrayArgsSchema(): z.ZodObject<Properties<ArrayMutationsremoveDiskFromArrayArgs>> {
return z.object({
input: z.lazy(() => ArrayDiskInputSchema().nullish())
})
}

export function ArrayMutationssetStateArgsSchema(): z.ZodObject<Properties<ArrayMutationssetStateArgs>> {
return z.object({
input: z.lazy(() => ArrayStateInputSchema().nullish())
})
}

export function ArrayMutationsunmountArrayDiskArgsSchema(): z.ZodObject<Properties<ArrayMutationsunmountArrayDiskArgs>> {
return z.object({
id: z.string()
})
}

export function ArrayStateInputSchema(): z.ZodObject<Properties<ArrayStateInput>> {
return z.object({
desiredState: z.lazy(() => ArrayStateInputStateSchema)
})
}

export function BaseboardSchema(): z.ZodObject<Properties<Baseboard>> {
return z.object({
__typename: z.literal('Baseboard').optional(),
Expand Down Expand Up @@ -1303,13 +1366,6 @@ export function addUserInputSchema(): z.ZodObject<Properties<addUserInput>> {
})
}

export function arrayDiskInputSchema(): z.ZodObject<Properties<arrayDiskInput>> {
return z.object({
id: z.string(),
slot: z.number().nullish()
})
}

export function deleteUserInputSchema(): z.ZodObject<Properties<deleteUserInput>> {
return z.object({
name: z.string()
Expand Down
Loading
Loading