mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 10:21:52 +00:00
* add support for inbound proxies * backend changes * fix file type * proxy -> tunnel, implement backend apis * wip start-tunneld * add domains and gateways, remove routers, fix docs links * dont show hidden actions * show and test dns * edit instead of chnage acme and change gateway * refactor: domains page * refactor: gateways page * domains and acme refactor * certificate authorities * refactor public/private gateways * fix fe types * domains mostly finished * refactor: add file control to form service * add ip util to sdk * domains api + migration * start service interface page, WIP * different options for clearnet domains * refactor: styles for interfaces page * minor * better placeholder for no addresses * start sorting addresses * best address logic * comments * fix unnecessary export * MVP of service interface page * domains preferred * fix: address comments * only translations left * wip: start-tunnel & fix build * forms for adding domain, rework things based on new ideas * fix: dns testing * public domain, max width, descriptions for dns * nix StartOS domains, implement public and private domains at interface scope * restart tor instead of reset * better icon for restart tor * dns * fix sort functions for public and private domains * with todos * update types * clean up tech debt, bump dependencies * revert to ts-rs v9 * fix all types * fix dns form * add missing translations * it builds * fix: comments (#3009) * fix: comments * undo default --------- Co-authored-by: Matt Hill <mattnine@protonmail.com> * fix: refactor legacy components (#3010) * fix: comments * fix: refactor legacy components * remove default again --------- Co-authored-by: Matt Hill <mattnine@protonmail.com> * more translations * wip * fix deadlock * coukd work * simple renaming * placeholder for empty service interfaces table * honor hidden form values * remove logs * reason instead of description * fix dns * misc fixes * implement toggling gateways for service interface * fix showing dns records * move status column in service list * remove unnecessary truthy check * refactor: refactor forms components and remove legacy Taiga UI package (#3012) * handle wh file uploads * wip: debugging tor * socks5 proxy working * refactor: fix multiple comments (#3013) * refactor: fix multiple comments * styling changes, add documentation to sidebar * translations for dns page * refactor: subtle colors * rearrange service page --------- Co-authored-by: Matt Hill <mattnine@protonmail.com> * fix file_stream and remove non-terminating test * clean up logs * support for sccache * fix gha sccache * more marketplace translations * install wizard clarity * stub hostnameInfo in migration * fix address info after setup, fix styling on SI page, new 040 release notes * remove tor logs from os * misc fixes * reset tor still not functioning... * update ts * minor styling and wording * chore: some fixes (#3015) * fix gateway renames * different handling for public domains * styling fixes * whole navbar should not be clickable on service show page * timeout getState request * remove links from changelog * misc fixes from pairing * use custom name for gateway in more places * fix dns parsing * closes #3003 * closes #2999 * chore: some fixes (#3017) * small copy change * revert hardcoded error for testing * dont require port forward if gateway is public * use old wan ip when not available * fix .const hanging on undefined * fix test * fix doc test * fix renames * update deps * allow specifying dependency metadata directly * temporarily make dependencies not cliackable in marketplace listings * fix socks bind * fix test --------- Co-authored-by: Aiden McClelland <me@drbonez.dev> Co-authored-by: waterplea <alexander@inkin.ru>
170 lines
5.5 KiB
TypeScript
170 lines
5.5 KiB
TypeScript
import {
|
|
ActionId,
|
|
ActionInput,
|
|
ActionMetadata,
|
|
SetMainStatus,
|
|
DependencyRequirement,
|
|
CheckDependenciesResult,
|
|
SetHealth,
|
|
BindParams,
|
|
HostId,
|
|
NetInfo,
|
|
Host,
|
|
ExportServiceInterfaceParams,
|
|
ServiceInterface,
|
|
CreateTaskParams,
|
|
MainStatus,
|
|
MountParams,
|
|
} from "./osBindings"
|
|
import {
|
|
PackageId,
|
|
Dependencies,
|
|
ServiceInterfaceId,
|
|
SmtpValue,
|
|
ActionResult,
|
|
} from "./types"
|
|
|
|
/** Used to reach out from the pure js runtime */
|
|
|
|
export type Effects = {
|
|
readonly eventId: string | null
|
|
child: (name: string) => Effects
|
|
constRetry?: () => void
|
|
isInContext: boolean
|
|
onLeaveContext: (fn: () => void | null | undefined) => void
|
|
clearCallbacks: (
|
|
options: { only: number[] } | { except: number[] },
|
|
) => Promise<null>
|
|
|
|
// action
|
|
action: {
|
|
/** Define an action that can be invoked by a user or service */
|
|
export(options: { id: ActionId; metadata: ActionMetadata }): Promise<null>
|
|
/** Remove all exported actions */
|
|
clear(options: { except: ActionId[] }): Promise<null>
|
|
getInput(options: {
|
|
packageId?: PackageId
|
|
actionId: ActionId
|
|
}): Promise<ActionInput | null>
|
|
run<Input extends Record<string, unknown>>(options: {
|
|
packageId?: PackageId
|
|
actionId: ActionId
|
|
input?: Input
|
|
}): Promise<ActionResult | null>
|
|
createTask(options: CreateTaskParams): Promise<null>
|
|
clearTasks(
|
|
options: { only: string[] } | { except: string[] },
|
|
): Promise<null>
|
|
}
|
|
|
|
// control
|
|
/** restart this service's main function */
|
|
restart(): Promise<null>
|
|
/** stop this service's main function */
|
|
shutdown(): Promise<null>
|
|
/** ask the host os what the service's current status is */
|
|
getStatus(options: {
|
|
packageId?: PackageId
|
|
callback?: () => void
|
|
}): Promise<MainStatus>
|
|
/** indicate to the host os what runstate the service is in */
|
|
setMainStatus(options: SetMainStatus): Promise<null>
|
|
|
|
// dependency
|
|
/** Set the dependencies of what the service needs, usually run during the inputSpec action as a best practice */
|
|
setDependencies(options: { dependencies: Dependencies }): Promise<null>
|
|
/** Get the list of the dependencies, both the dynamic set by the effect of setDependencies and the end result any required in the manifest */
|
|
getDependencies(): Promise<DependencyRequirement[]>
|
|
/** Test whether current dependency requirements are satisfied */
|
|
checkDependencies(options: {
|
|
packageIds?: PackageId[]
|
|
}): Promise<CheckDependenciesResult[]>
|
|
/** mount a volume of a dependency */
|
|
mount(options: MountParams): Promise<string>
|
|
/** Returns a list of the ids of all installed packages */
|
|
getInstalledPackages(): Promise<string[]>
|
|
|
|
// health
|
|
/** sets the result of a health check */
|
|
setHealth(o: SetHealth): Promise<null>
|
|
|
|
// subcontainer
|
|
subcontainer: {
|
|
/** A low level api used by SubContainer */
|
|
createFs(options: {
|
|
imageId: string
|
|
name: string | null
|
|
}): Promise<[string, string]>
|
|
/** A low level api used by SubContainer */
|
|
destroyFs(options: { guid: string }): Promise<null>
|
|
}
|
|
|
|
// net
|
|
// bind
|
|
/** Creates a host connected to the specified port with the provided options */
|
|
bind(options: BindParams): Promise<null>
|
|
/** Get the port address for a service */
|
|
getServicePortForward(options: {
|
|
packageId?: PackageId
|
|
hostId: HostId
|
|
internalPort: number
|
|
}): Promise<NetInfo>
|
|
/** Removes all network bindings, called in the setupInputSpec */
|
|
clearBindings(options: {
|
|
except: { id: HostId; internalPort: number }[]
|
|
}): Promise<null>
|
|
// host
|
|
/** Returns information about the specified host, if it exists */
|
|
getHostInfo(options: {
|
|
packageId?: PackageId
|
|
hostId: HostId
|
|
callback?: () => void
|
|
}): Promise<Host | null>
|
|
/** Returns the IP address of the container */
|
|
getContainerIp(options: {
|
|
packageId?: PackageId
|
|
callback?: () => void
|
|
}): Promise<string>
|
|
/** Returns the IP address of StartOS */
|
|
getOsIp(): Promise<string>
|
|
// interface
|
|
/** Creates an interface bound to a specific host and port to show to the user */
|
|
exportServiceInterface(options: ExportServiceInterfaceParams): Promise<null>
|
|
/** Returns an exported service interface */
|
|
getServiceInterface(options: {
|
|
packageId?: PackageId
|
|
serviceInterfaceId: ServiceInterfaceId
|
|
callback?: () => void
|
|
}): Promise<ServiceInterface | null>
|
|
/** Returns all exported service interfaces for a package */
|
|
listServiceInterfaces(options: {
|
|
packageId?: PackageId
|
|
callback?: () => void
|
|
}): Promise<Record<ServiceInterfaceId, ServiceInterface>>
|
|
/** Removes all service interfaces */
|
|
clearServiceInterfaces(options: {
|
|
except: ServiceInterfaceId[]
|
|
}): Promise<null>
|
|
// ssl
|
|
/** Returns a PEM encoded fullchain for the hostnames specified */
|
|
getSslCertificate: (options: {
|
|
hostnames: string[]
|
|
algorithm?: "ecdsa" | "ed25519"
|
|
callback?: () => void
|
|
}) => Promise<[string, string, string]>
|
|
/** Returns a PEM encoded private key corresponding to the certificate for the hostnames specified */
|
|
getSslKey: (options: {
|
|
hostnames: string[]
|
|
algorithm?: "ecdsa" | "ed25519"
|
|
}) => Promise<string>
|
|
|
|
/** sets the version that this service's data has been migrated to */
|
|
setDataVersion(options: { version: string | null }): Promise<null>
|
|
/** returns the version that this service's data has been migrated to */
|
|
getDataVersion(): Promise<string | null>
|
|
|
|
// system
|
|
/** Returns globally configured SMTP settings, if they exist */
|
|
getSystemSmtp(options: { callback?: () => void }): Promise<SmtpValue | null>
|
|
}
|