Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
filex
command
client.go wires the `filex client` subcommand family — a CLI consumer of a REMOTE filex server's REST API (the rest of the binary manages a local instance).
|
client.go wires the `filex client` subcommand family — a CLI consumer of a REMOTE filex server's REST API (the rest of the binary manages a local instance). |
|
db
|
|
|
migrations/mysql
Package mysql_migrations exposes the MySQL migration files.
|
Package mysql_migrations exposes the MySQL migration files. |
|
migrations/postgres
Package postgres_migrations exposes the Postgres migration files.
|
Package postgres_migrations exposes the Postgres migration files. |
|
migrations/sqlite
Package sqlite_migrations exposes the SQLite migration files as an embed.FS.
|
Package sqlite_migrations exposes the SQLite migration files as an embed.FS. |
|
Package embedded re-exports the bundled web/dist + admin assets via embed.FS so that other packages can mount them without colliding with //go:embed's "no parent paths" rule.
|
Package embedded re-exports the bundled web/dist + admin assets via embed.FS so that other packages can mount them without colliding with //go:embed's "no parent paths" rule. |
|
examples
|
|
|
app-pkglist
command
Command app-pkglist is a complete filex app that draws THUMBNAILS: the contents of a package - a Java archive, an Android package, a Python wheel, a VS Code extension, a NuGet package, a browser add-on - as a card that lists what is inside, the way filex draws its own .zip and .tar files.
|
Command app-pkglist is a complete filex app that draws THUMBNAILS: the contents of a package - a Java archive, an Android package, a Python wheel, a VS Code extension, a NuGet package, a browser add-on - as a card that lists what is inside, the way filex draws its own .zip and .tar files. |
|
plugin-memfs
command
Command plugin-memfs is a complete, runnable filex storage plugin in about a hundred lines — a storage that keeps its files in memory.
|
Command plugin-memfs is a complete, runnable filex storage plugin in about a hundred lines — a storage that keeps its files in memory. |
|
internal
|
|
|
acl
Package acl implements per-user / per-file&folder access control for filex.
|
Package acl implements per-user / per-file&folder access control for filex. |
|
antivirus
Package antivirus wraps ClamAV behind a small Scan API ("Koru" v0.4).
|
Package antivirus wraps ClamAV behind a small Scan API ("Koru" v0.4). |
|
api
Package api — demo_guard.go
|
Package api — demo_guard.go |
|
api/handlers
Package handlers — account_rules.go
|
Package handlers — account_rules.go |
|
apierr
Package apierr is the one shape of a failure filex tells somebody about: a stable CODE a program branches on, the values its sentence takes, and the sentence itself, written by the SERVER in the reader's language.
|
Package apierr is the one shape of a failure filex tells somebody about: a stable CODE a program branches on, the values its sentence takes, and the sentence itself, written by the SERVER in the reader's language. |
|
appstore
Package appstore is filex's side of an app store (docs/APP-PLUGINS.md → Installing from a store, Paid apps; docs/APP-PLUGINS-API.md → The store contract): the stores an administrator trusts, the install links a store hands out, and the licenses of paid apps, which the store issues, keeps and is asked about.
|
Package appstore is filex's side of an app store (docs/APP-PLUGINS.md → Installing from a store, Paid apps; docs/APP-PLUGINS-API.md → The store contract): the stores an administrator trusts, the install links a store hands out, and the licenses of paid apps, which the store issues, keeps and is asked about. |
|
appstore/storetest
Package storetest is a fake app store for tests: the `/v1/` paths a filex reads (docs/APP-PLUGINS-API.md → The store contract), signing exactly as a store must - ed25519 over the lower-hex sha256 of the canonical payload - and every answer adjustable mid-test (a tampered signature, a 410, a key that changes, a store that cannot be reached).
|
Package storetest is a fake app store for tests: the `/v1/` paths a filex reads (docs/APP-PLUGINS-API.md → The store contract), signing exactly as a store must - ed25519 over the lower-hex sha256 of the canonical payload - and every answer adjustable mid-test (a tampered signature, a 410, a key that changes, a store that cannot be reached). |
|
archivecli
Package archivecli runs operator-provided archive tools behind a small, fixed interface.
|
Package archivecli runs operator-provided archive tools behind a small, fixed interface. |
|
assoc
Package assoc decides which handler opens a kind of file and which draws its thumbnail (filex 0.50, docs/APP-PLUGINS.md → Default apps).
|
Package assoc decides which handler opens a kind of file and which draws its thumbnail (filex 0.50, docs/APP-PLUGINS.md → Default apps). |
|
auth
Package auth — audit_middleware.go
|
Package auth — audit_middleware.go |
|
auth/drivers/apitoken
Package apitoken implements bearer-token authentication for non-interactive callers: AI agents, the work.example.com FilexClient, and the embedded MCP server.
|
Package apitoken implements bearer-token authentication for non-interactive callers: AI agents, the work.example.com FilexClient, and the embedded MCP server. |
|
auth/drivers/ldap
Package ldap implements simple-bind LDAP/Active Directory authentication.
|
Package ldap implements simple-bind LDAP/Active Directory authentication. |
|
auth/drivers/local
Package local implements username + password authentication backed by the users table.
|
Package local implements username + password authentication backed by the users table. |
|
auth/drivers/multioidc
Package multioidc dispatches OIDC flows to per-tenant IdP realms (docs/MULTI-TENANCY.md §5,§7).
|
Package multioidc dispatches OIDC flows to per-tenant IdP realms (docs/MULTI-TENANCY.md §5,§7). |
|
auth/drivers/oidc
Package oidc implements OpenID Connect authentication.
|
Package oidc implements OpenID Connect authentication. |
|
auth/drivers/pam
Package pam is the Linux operating-system sign-in provider: a person signs in to filex with the login they use on the machine filex runs on, and PAM — the same door SSH and su use — judges the password.
|
Package pam is the Linux operating-system sign-in provider: a person signs in to filex with the login they use on the machine filex runs on, and PAM — the same door SSH and su use — judges the password. |
|
auth/drivers/proxyheader
Package proxyheader implements authentication via headers injected by a trusted upstream reverse proxy (nginx, Caddy, oauth2-proxy, Cloudflare Access, Authelia, …).
|
Package proxyheader implements authentication via headers injected by a trusted upstream reverse proxy (nginx, Caddy, oauth2-proxy, Cloudflare Access, Authelia, …). |
|
auth/drivers/windows
Package windows signs people in with their Windows account: a local account of the machine filex runs on, or a domain account of the domain it is joined to.
|
Package windows signs people in with their Windows account: a local account of the machine filex runs on, or a domain account of the domain it is joined to. |
|
authsetup
Package authsetup builds the instance's sign-in providers and keeps the live set of them — the ONE place a provider is constructed, whether the environment/config file or the Admin → Identity providers page asked for it.
|
Package authsetup builds the instance's sign-in providers and keeps the live set of them — the ONE place a provider is constructed, whether the environment/config file or the Admin → Identity providers page asked for it. |
|
basepath
Package basepath serves filex under a path prefix — a "sub-path deployment", `https://example.com/filex/` behind a reverse proxy — and answers, for the code that builds browser-facing URLs, "what is this install's base?".
|
Package basepath serves filex under a path prefix — a "sub-path deployment", `https://example.com/filex/` behind a reverse proxy — and answers, for the code that builds browser-facing URLs, "what is this install's base?". |
|
capability
Package capability probes runtime feature availability — both binary tools (ffmpeg, gs, imagemagick, rsvg) and external HTTP services (OnlyOffice, Drawio).
|
Package capability probes runtime feature availability — both binary tools (ffmpeg, gs, imagemagick, rsvg) and external HTTP services (OnlyOffice, Drawio). |
|
cliclient
Package cliclient implements the HTTP client behind `filex client` — the subcommand family that talks to a REMOTE filex server over its public REST API.
|
Package cliclient implements the HTTP client behind `filex client` — the subcommand family that talks to a REMOTE filex server over its public REST API. |
|
clientip
Package clientip is the ONE answer to "which address is this request from?".
|
Package clientip is the ONE answer to "which address is this request from?". |
|
cloud
Package cloud is the self-serve cloud/SaaS PREPARATION skeleton (v0.7 "Kimlik" E3 — docs/CLOUD.md).
|
Package cloud is the self-serve cloud/SaaS PREPARATION skeleton (v0.7 "Kimlik" E3 — docs/CLOUD.md). |
|
coedit
Package coedit is filex's relay for editing a file together (task #189): the server half of the app SDK's `coedit.*` bridge methods, for an app granted `files:co-edit` (docs/APP-PLUGINS-API.md → Editing together).
|
Package coedit is filex's relay for editing a file together (task #189): the server half of the app SDK's `coedit.*` bridge methods, for an app granted `files:co-edit` (docs/APP-PLUGINS-API.md → Editing together). |
|
comments
Package comments implements flat, chronological comment threads on file/folder nodes (v0.6 "Çalışma" (Work) wave, migration 00020).
|
Package comments implements flat, chronological comment threads on file/folder nodes (v0.6 "Çalışma" (Work) wave, migration 00020). |
|
compat
Package compat is filex's compatibility window for what storage plugins and apps send it.
|
Package compat is filex's compatibility window for what storage plugins and apps send it. |
|
config
Package config loads filex configuration from a YAML file with environment variable overrides (FILEX_*).
|
Package config loads filex configuration from a YAML file with environment variable overrides (FILEX_*). |
|
confine
Package confine implements per-request root confinement for the /api/files surface.
|
Package confine implements per-request root confinement for the /api/files surface. |
|
dailycheck
Package dailycheck is the daily beat the update checks run on — the app plugins' (wasmplugin/updates.go) and the storage plugins' (plugin/updates.go): a check a day after the last one, never sooner than a short wait after start, with the time of the last run kept in the settings table so a restart neither skips a day nor checks at every boot.
|
Package dailycheck is the daily beat the update checks run on — the app plugins' (wasmplugin/updates.go) and the storage plugins' (plugin/updates.go): a check a day after the last one, never sooner than a short wait after start, with the time of the last run kept in the settings table so a restart neither skips a day nor checks at every boot. |
|
dav
Package dav exposes filex storages as a WebDAV server under /dav.
|
Package dav exposes filex storages as a WebDAV server under /dav. |
|
davlock
Package davlock is the WebDAV lock system, and it exists because the one filex shipped with was a lie.
|
Package davlock is the WebDAV lock system, and it exists because the one filex shipped with was a lie. |
|
db
Package db defines a Driver interface that wraps a *sql.DB and exposes the typed Store interface used by the rest of the codebase.
|
Package db defines a Driver interface that wraps a *sql.DB and exposes the typed Store interface used by the rest of the codebase. |
|
db/drivers/mysql
Package mysql is the MySQL/MariaDB DB driver.
|
Package mysql is the MySQL/MariaDB DB driver. |
|
db/drivers/postgres
Package postgres is the PostgreSQL DB driver.
|
Package postgres is the PostgreSQL DB driver. |
|
db/drivers/sqlite
Package sqlite is the SQLite DB driver.
|
Package sqlite is the SQLite DB driver. |
|
dbsetting
Package dbsetting — bool.go
|
Package dbsetting — bool.go |
|
diskfree
Package diskfree probes the free space on the filesystem holding a directory.
|
Package diskfree probes the free space on the filesystem holding a directory. |
|
drafts
Package drafts holds what the draft feature (issue #71) keeps outside the HTTP layer: the per-person limit, and the key a draft is filed under.
|
Package drafts holds what the draft feature (issue #71) keeps outside the HTTP layer: the per-person limit, and the key a draft is filed under. |
|
e2e
Package e2e carries the server-side AWARENESS of client-side (E2E) encrypted folders — nothing more.
|
Package e2e carries the server-side AWARENESS of client-side (E2E) encrypted folders — nothing more. |
|
e2e/fxewatch
Package fxewatch is the server's own record of a rewritten single encrypted file (`.fxe`): an audit row for every rewrite of one, and — when the rewrite changed its password or recovery slot — the deletion of the older versions that still open the file with the old secret.
|
Package fxewatch is the server's own record of a rewritten single encrypted file (`.fxe`): an audit row for every rewrite of one, and — when the rewrite changed its password or recovery slot — the deletion of the older versions that still open the file with the old secret. |
|
e2e/slotchange
Package slotchange is what the server does when a write changed a KEY SLOT of something end-to-end encrypted - the password or the recovery slot of an encrypted folder's key file (`.filex-e2e.json`, e2e/keyfilewatch) or of a single encrypted file's header (`.fxe`, e2e/fxewatch): who may retire the old copies that still open it with the old secret, and who is told.
|
Package slotchange is what the server does when a write changed a KEY SLOT of something end-to-end encrypted - the password or the recovery slot of an encrypted folder's key file (`.filex-e2e.json`, e2e/keyfilewatch) or of a single encrypted file's header (`.fxe`, e2e/fxewatch): who may retire the old copies that still open it with the old secret, and who is told. |
|
e2epolicy
Package e2epolicy — audit.go
|
Package e2epolicy — audit.go |
|
editkind
Package editkind is the server's one answer to "how is this file edited": as text (the built-in editor, saved through save-text), in the document server (ONLYOFFICE), or not at all here.
|
Package editkind is the server's one answer to "how is this file edited": as text (the built-in editor, saved through save-text), in the document server (ONLYOFFICE), or not at all here. |
|
enginebin
Package enginebin answers one question for the whole server: which of the heavy conversion programs - ffmpeg, ImageMagick, Ghostscript, poppler, rsvg - are installed here, and which binary each one is.
|
Package enginebin answers one question for the whole server: which of the heavy conversion programs - ffmpeg, ImageMagick, Ghostscript, poppler, rsvg - are installed here, and which binary each one is. |
|
external
Package external is the one place the runtime asks "how is OnlyOffice / drawio configured right now?".
|
Package external is the one place the runtime asks "how is OnlyOffice / drawio configured right now?". |
|
filebody
Package filebody answers the one question every surface that serves file bytes has had to ask since uploads became staged: where are this file's bytes RIGHT NOW?
|
Package filebody answers the one question every surface that serves file bytes has had to ask since uploads became staged: where are this file's bytes RIGHT NOW? |
|
filecache
Package filecache keeps a local copy of a big file that lives on a slow backend, so that the request which pays for the transfer is honest about it ("preparing… 40 %") and every request after it is served at local-disk speed.
|
Package filecache keeps a local copy of a big file that lives on a slow backend, so that the request which pays for the transfer is honest about it ("preparing… 40 %") and every request after it is served at local-disk speed. |
|
filesync
Package filesync keeps a local folder and a remote filex folder in step.
|
Package filesync keeps a local folder and a remote filex folder in step. |
|
ftpsrv
Package ftpsrv serves FTPS: filex, reached by the equipment that only ever learned one protocol.
|
Package ftpsrv serves FTPS: filex, reached by the equipment that only ever learned one protocol. |
|
group
Package group is what groups of people (migration 00074, docs/GROUPS.md) do beyond storing rows: checking a group before it is stored, keeping the memberships an outside directory decides in step with it, and keeping each member's built-in level in step with the role their group gives them.
|
Package group is what groups of people (migration 00074, docs/GROUPS.md) do beyond storing rows: checking a group before it is stored, keeping the memberships an outside directory decides in step with it, and keeping each member's built-in level in step with the role their group gives them. |
|
httpx
Package httpx holds the small HTTP details that have to be identical everywhere filex writes a response.
|
Package httpx holds the small HTTP details that have to be identical everywhere filex writes a response. |
|
identity
Package identity owns the rules for account login names, and the single door that turns a typed identifier into a user.
|
Package identity owns the rules for account login names, and the single door that turns a typed identifier into a user. |
|
identitystore
Package identitystore guarantees that every account has a login name.
|
Package identitystore guarantees that every account has a login name. |
|
keylock
Package keylock serialises work per key: one holder of a key at a time, any number of keys at once.
|
Package keylock serialises work per key: one holder of a key at a time, any number of keys at once. |
|
listorder
Package listorder is the ONE order the server puts rows in: a folder's contents (from the catalogue, from the storage driver or merged), the MCP `file_list` tool, and the per-person views (Recent, Starred, Shared with me, a tag).
|
Package listorder is the ONE order the server puts rows in: a folder's contents (from the catalogue, from the storage driver or merged), the MCP `file_list` tool, and the per-person views (Recent, Starred, Shared with me, a tag). |
|
loginguard
Package loginguard limits how many wrong sign-in attempts an account and an address may make, for every door a password can be typed at: the web form, WebDAV, FTPS, SFTP.
|
Package loginguard limits how many wrong sign-in attempts an account and an address may make, for every door a password can be typed at: the web form, WebDAV, FTPS, SFTP. |
|
mailer
Package mailer sends transactional email (share/invite notices) over an operator-configured SMTP server.
|
Package mailer sends transactional email (share/invite notices) over an operator-configured SMTP server. |
|
memcache
Package memcache is filex's ONE in-process cache for small state and settings that live in the database: a bounded, expiring map (Cache), and the same map kept in front of a durable store, written through it in both directions (Through).
|
Package memcache is filex's ONE in-process cache for small state and settings that live in the database: a bounded, expiring map (Cache), and the same map kept in front of a durable store, written through it in both directions (Through). |
|
metrics
Package metrics is filex's Prometheus surface.
|
Package metrics is filex's Prometheus surface. |
|
mountfs
Package mountfs is the filesystem behind `filex mount` — a remote filex server, seen as a folder on the machine that runs the command.
|
Package mountfs is the filesystem behind `filex mount` — a remote filex server, seen as a folder on the machine that runs the command. |
|
namefold
Package namefold is the one rule for when two spellings of a name are the same text: what a search compares, and the part of a tag's identity that is about letters rather than whitespace.
|
Package namefold is the one rule for when two spellings of a name are the same text: what a search compares, and the part of a tag's identity that is about letters rather than whitespace. |
|
netguard
Package netguard is the one answer to "may filex dial this address?".
|
Package netguard is the one answer to "may filex dial this address?". |
|
newdoc
Package newdoc answers one question: what are the BYTES of a brand-new, empty document of type X?
|
Package newdoc answers one question: what are the BYTES of a brand-new, empty document of type X? |
|
nfssrv
Package nfssrv serves NFSv3: filex, mounted as a network drive by anything on the LAN that speaks the NAS protocol.
|
Package nfssrv serves NFSv3: filex, mounted as a network drive by anything on the LAN that speaks the NAS protocol. |
|
nodefilter
Package nodefilter is the server's rule for "which of these rows does a search's narrowing keep": the kind of file, its mime type, when it was modified, how big it is, which folder it is in, who owns it and whether it is a hidden (dot) name.
|
Package nodefilter is the server's rule for "which of these rows does a search's narrowing keep": the kind of file, its mime type, when it was modified, how big it is, which folder it is in, who owns it and whether it is a hidden (dot) name. |
|
notify
Package notify is filex' notification subsystem.
|
Package notify is filex' notification subsystem. |
|
observability
Package observability wires optional Sentry-wire error reporting (e.g.
|
Package observability wires optional Sentry-wire error reporting (e.g. |
|
onlyoffice
Package onlyoffice integrates a self-hosted OnlyOffice Document Server with filex storage backends.
|
Package onlyoffice integrates a self-hosted OnlyOffice Document Server with filex storage backends. |
|
ops
Package ops manages the async queue of long-running file operations (copy/move/delete) so the HTTP request can return promptly while the actual byte movement happens in a worker goroutine.
|
Package ops manages the async queue of long-running file operations (copy/move/delete) so the HTTP request can return promptly while the actual byte movement happens in a worker goroutine. |
|
originguard
Package originguard refuses a state-changing request that a browser sent from somewhere other than filex itself, on a person's behalf (cross-site request forgery).
|
Package originguard refuses a state-changing request that a browser sent from somewhere other than filex itself, on a person's behalf (cross-site request forgery). |
|
pathkey
Package pathkey derives the storage-scoped cache key (a node's path_hash) that addresses rows in the nodes table.
|
Package pathkey derives the storage-scoped cache key (a node's path_hash) that addresses rows in the nodes table. |
|
perm
Package perm is filex's per-user permission model: 29 named permissions, the presets built from them, and the resolver that turns an account's role, the install's defaults, the permission rules that match it and its own overrides into one answer per permission — with where that answer came from, so "why can't they do this?" has a reply.
|
Package perm is filex's per-user permission model: 29 named permissions, the presets built from them, and the resolver that turns an account's role, the install's defaults, the permission rules that match it and its own overrides into one answer per permission — with where that answer came from, so "why can't they do this?" has a reply. |
|
permgap
Package permgap tells administrators about the saved roles that allow a permission but not the one carved out of it (perm/gaps.go): adding files but not encrypting, as a save on a version without files.encrypt leaves them.
|
Package permgap tells administrators about the saved roles that allow a permission but not the one carved out of it (perm/gaps.go): adding files but not encrypting, as a save on a version without files.encrypt leaves them. |
|
plugin
Package plugin lets a storage driver live OUTSIDE the filex binary.
|
Package plugin lets a storage driver live OUTSIDE the filex binary. |
|
plugin/gen
command
Command gen writes driver_shapes.go: one concrete type per capability combination a plugin can declare.
|
Command gen writes driver_shapes.go: one concrete type per capability combination a plugin can declare. |
|
plugin/testplugin
Package testplugin runs a real filex storage plugin — the HTTP/JSON protocol of internal/plugin, served over httptest — so any package that consumes a storage.Driver can be exercised against a PLUGIN-backed storage without spawning a second process.
|
Package testplugin runs a real filex storage plugin — the HTTP/JSON protocol of internal/plugin, served over httptest — so any package that consumes a storage.Driver can be exercised against a PLUGIN-backed storage without spawning a second process. |
|
pluginlog
Package pluginlog is the log an administrator reads on a plugin's page - an app plugin's (internal/wasmplugin) and a storage plugin's (internal/plugin) alike - and the one rule that keeps it, and the server log behind it, from drowning in a single repeated line.
|
Package pluginlog is the log an administrator reads on a plugin's page - an app plugin's (internal/wasmplugin) and a storage plugin's (internal/plugin) alike - and the one rule that keeps it, and the server log behind it, from drowning in a single repeated line. |
|
pluginreq
Package pluginreq is the "leave a request" half of installing a plugin.
|
Package pluginreq is the "leave a request" half of installing a plugin. |
|
printframe
Package printframe serves the page filex prints an app's PDF from (`ui.print`, task #189).
|
Package printframe serves the page filex prints an app's PDF from (`ui.print`, task #189). |
|
protocolauth
Package protocolauth is the single door through which every non-HTTP protocol gets its caller.
|
Package protocolauth is the single door through which every non-HTTP protocol gets its caller. |
|
protocolsync
Package protocolsync keeps the DB node cache, the search index, the thumbnails and the write hooks in step with what a protocol server just did to the bytes.
|
Package protocolsync keeps the DB node cache, the search index, the thumbnails and the write hooks in step with what a protocol server just did to the bytes. |
|
protoperm
Package protoperm is the one place the protocol front ends (ftpsrv, sftpsrv, nfssrv, dav, s3api) ask per-user permissions (package perm) about a path.
|
Package protoperm is the one place the protocol front ends (ftpsrv, sftpsrv, nfssrv, dav, s3api) ask per-user permissions (package perm) about a path. |
|
queue
Package queue is filex' driver-based persistent operation queue.
|
Package queue is filex' driver-based persistent operation queue. |
|
queue/drivers/postgres
Package postgres is the production HA queue driver.
|
Package postgres is the production HA queue driver. |
|
queue/drivers/redis
Package redis is the Redis-backed queue driver.
|
Package redis is the Redis-backed queue driver. |
|
queue/drivers/sqlite
Package sqlite is the default queue driver, sharing the filex DB file with the metadata store.
|
Package sqlite is the default queue driver, sharing the filex DB file with the metadata store. |
|
quota
Package quota tracks per-user storage usage and enforces the users.quota_bytes ceiling at upload time.
|
Package quota tracks per-user storage usage and enforces the users.quota_bytes ceiling at upload time. |
|
quotastore
Package quotastore is the single place where per-user storage usage is accounted.
|
Package quotastore is the single place where per-user storage usage is accounted. |
|
realtime
Package realtime implements the WebSocket hub behind filex's live collaboration surface: per-folder "rooms" that broadcast (1) file-change events so every viewer's listing updates without a manual refresh and (2) presence so viewers can see who else is in the same folder and which file each is focused on.
|
Package realtime implements the WebSocket hub behind filex's live collaboration surface: per-folder "rooms" that broadcast (1) file-change events so every viewer's listing updates without a manual refresh and (2) presence so viewers can see who else is in the same folder and which file each is focused on. |
|
regfile
Package regfile opens files that are REGULAR files, and nothing else.
|
Package regfile opens files that are REGULAR files, and nothing else. |
|
replica
Package replica is the orchestration layer that ties the storage ReplicatedDriver to the DB (failure rows, rules, settings) and to the notify subsystem (webhook + bell events).
|
Package replica is the orchestration layer that ties the storage ReplicatedDriver to the DB (failure rows, rules, settings) and to the notify subsystem (webhook + bell events). |
|
rowgate
Package rowgate keeps a storage's catalogue judgements apart from the changes filex makes to that storage in two steps.
|
Package rowgate keeps a storage's catalogue judgements apart from the changes filex makes to that storage in two steps. |
|
s3api
Package s3api serves the S3 wire protocol on top of filex storages.
|
Package s3api serves the S3 wire protocol on top of filex storages. |
|
scanrule
Package scanrule is the ONE answer to "does the scan walk this path of this storage?" (issue #44).
|
Package scanrule is the ONE answer to "does the scan walk this path of this storage?" (issue #44). |
|
search
Package search wraps the embedded Bleve index used for fast filename (and optionally content) lookup across all storages.
|
Package search wraps the embedded Bleve index used for fast filename (and optionally content) lookup across all storages. |
|
search/extract
Package extract turns file bytes into plain text for the search index's `content` field ("Bul" wave, v0.2).
|
Package extract turns file bytes into plain text for the search index's `content` field ("Bul" wave, v0.2). |
|
secheaders
Package secheaders sets the response headers filex sends for the browser's sake on every answer, whatever serves it and wherever filex is deployed — so every self-hosted install has them, not only one whose reverse proxy adds them:
|
Package secheaders sets the response headers filex sends for the browser's sake on every answer, whatever serves it and wherever filex is deployed — so every self-hosted install has them, not only one whose reverse proxy adds them: |
|
secretbox
Package secretbox encrypts the secrets filex must be able to READ BACK.
|
Package secretbox encrypts the secrets filex must be able to READ BACK. |
|
server
Package server contains the HTTP server lifecycle, the first-run detector that bootstraps an admin user, and the boot banner.
|
Package server contains the HTTP server lifecycle, the first-run detector that bootstraps an admin user, and the boot banner. |
|
sftpsrv
Package sftpsrv serves SFTP: filex, seen by every client that already knows how to talk to a file server over SSH.
|
Package sftpsrv serves SFTP: filex, seen by every client that already knows how to talk to a file server over SSH. |
|
share
Package share manages public download tokens with optional PIN protection, expiry, and download caps.
|
Package share manages public download tokens with optional PIN protection, expiry, and download caps. |
|
sharezip
Package sharezip caches the ZIP archive produced when a shared FOLDER is downloaded ("download all").
|
Package sharezip caches the ZIP archive produced when a shared FOLDER is downloaded ("download all"). |
|
srvtext
Package srvtext is the catalogue of every sentence the SERVER writes to a person: e-mails, the no-JavaScript pages behind a share or drop link, the Apps install review's permission descriptions, the NOT.txt beside a drop.
|
Package srvtext is the catalogue of every sentence the SERVER writes to a person: e-mails, the no-JavaScript pages behind a share or drop link, the Apps install review's permission descriptions, the NOT.txt beside a drop. |
|
staging
Package staging is filex's own upload staging area: the bytes of an upload land here first, on local disk, and are transferred to the storage driver afterwards by a background op.
|
Package staging is filex's own upload staging area: the bytes of an upload land here first, on local disk, and are transferred to the storage driver afterwards by a background op. |
|
storage
Package storage provides the abstract Storage Driver interface used to front any byte-stream backend (local FS, S3, SFTP, WebDAV, …).
|
Package storage provides the abstract Storage Driver interface used to front any byte-stream backend (local FS, S3, SFTP, WebDAV, …). |
|
storage/drivers/ftp
Package ftp is a Storage Driver fronting a plain FTP (or FTPS) server.
|
Package ftp is a Storage Driver fronting a plain FTP (or FTPS) server. |
|
storage/drivers/local
Package local is a Storage Driver fronting an on-disk directory.
|
Package local is a Storage Driver fronting an on-disk directory. |
|
storage/drivers/s3
Package s3 is a Storage Driver fronting any S3-compatible object store.
|
Package s3 is a Storage Driver fronting any S3-compatible object store. |
|
storage/drivers/sftp
Package sftp is a Storage Driver fronting an SSH/SFTP server.
|
Package sftp is a Storage Driver fronting an SSH/SFTP server. |
|
storage/drivers/smb
Package smb is a Storage Driver fronting an SMB2/3 share — a NAS, a Windows file server, a Samba box.
|
Package smb is a Storage Driver fronting an SMB2/3 share — a NAS, a Windows file server, a Samba box. |
|
storage/drivers/webdav
Package webdav is a Storage Driver fronting a WebDAV server.
|
Package webdav is a Storage Driver fronting a WebDAV server. |
|
storage/stall
Package stall bounds how long a storage driver waits for a backend that does not answer, without ever cutting a transfer that keeps moving.
|
Package stall bounds how long a storage driver waits for a backend that does not answer, without ever cutting a transfer that keeps moving. |
|
storageref
Package storageref resolves the first path segment of a file-protocol address to a storage.
|
Package storageref resolves the first path segment of a file-protocol address to a storage. |
|
sync
Package sync implements the storage-to-DB sync worker.
|
Package sync implements the storage-to-DB sync worker. |
|
syspath
Package syspath is the ONE definition of the directories filex keeps for itself inside a storage, and of how a path is judged against them.
|
Package syspath is the ONE definition of the directories filex keeps for itself inside a storage, and of how a path is judged against them. |
|
tagname
Package tagname decides what a tag is CALLED and when two tags are the SAME.
|
Package tagname decides what a tag is CALLED and when two tags are the SAME. |
|
tenancy
Package tenancy is the multi-tenant mode switch: where the mode a server runs with comes from, and what turning it on or off would mean.
|
Package tenancy is the multi-tenant mode switch: where the mode a server runs with comes from, and what turning it on or off would mean. |
|
tenant
Package tenant carries the resolved tenant (provider) scope through a request.
|
Package tenant carries the resolved tenant (provider) scope through a request. |
|
tenantdomain
Package tenantdomain is a tenant's own domains (docs/TENANT-ADMIN.md, "Addresses and own domains"): adding one, proving it, keeping it proven.
|
Package tenantdomain is a tenant's own domains (docs/TENANT-ADMIN.md, "Addresses and own domains"): adding one, proving it, keeping it proven. |
|
tenantstore
Package tenantstore wraps a db.Store so storage listings are confined to the request's tenant scope (see docs/MULTI-TENANCY.md).
|
Package tenantstore wraps a db.Store so storage listings are confined to the request's tenant scope (see docs/MULTI-TENANCY.md). |
|
tenanturl
Package tenanturl answers one question for the whole server: which origin should an absolute URL that filex hands out be built on?
|
Package tenanturl answers one question for the whole server: which origin should an absolute URL that filex hands out be built on? |
|
testutil
Package testutil provides shared helpers for unit + integration tests across the filex codebase.
|
Package testutil provides shared helpers for unit + integration tests across the filex codebase. |
|
testutil/archivetest
Package archivetest builds hostile archives for tests.
|
Package archivetest builds hostile archives for tests. |
|
testutil/dbtest
Package dbtest provides minimal DB+model test helpers without depending on auth/capability/share — so it is safe to import from the test files of those packages without creating an import cycle.
|
Package dbtest provides minimal DB+model test helpers without depending on auth/capability/share — so it is safe to import from the test files of those packages without creating an import cycle. |
|
testutil/fakeidp
Package fakeidp is a minimal OpenID Connect provider for tests: discovery, a JWKS, an authorization endpoint that signs the current identity in at once, a token endpoint that answers with an RS256-signed id_token for that identity, and an end-session endpoint (RP-initiated logout) that records who asked.
|
Package fakeidp is a minimal OpenID Connect provider for tests: discovery, a JWKS, an authorization endpoint that signs the current identity in at once, a token endpoint that answers with an RS256-signed id_token for that identity, and an end-session endpoint (RP-initiated logout) that records who asked. |
|
testutil/fakemagick
Package fakemagick writes a stand-in for ImageMagick: a shell script that answers the way an ImageMagick of a given kind does, so the code that runs ImageMagick (enginebin.HEIC, thumb.generateHEIF) is tested through a real exec, on a machine that has no ImageMagick at all.
|
Package fakemagick writes a stand-in for ImageMagick: a shell script that answers the way an ImageMagick of a given kind does, so the code that runs ImageMagick (enginebin.HEIC, thumb.generateHEIF) is tested through a real exec, on a machine that has no ImageMagick at all. |
|
testutil/gatetest
Package gatetest catches a two-step change half way and asks whether the storage's row gate (internal/rowgate) is held there.
|
Package gatetest catches a two-step change half way and asks whether the storage's row gate (internal/rowgate) is held there. |
|
testutil/lives3
Package lives3 tells the suites that talk to a REAL S3 server which one: the FILEX_TEST_S3_* variables, read in one place.
|
Package lives3 tells the suites that talk to a REAL S3 server which one: the FILEX_TEST_S3_* variables, read in one place. |
|
testutil/wasmfixture
Package wasmfixture guards the tests that load the echo app fixture (internal/wasmplugin/testdata/echo/echo.wasm): the module is built, and it was built from the sources beside it.
|
Package wasmfixture guards the tests that load the echo app fixture (internal/wasmplugin/testdata/echo/echo.wasm): the module is built, and it was built from the sources beside it. |
|
throughput
Package throughput is the process-wide answer to one question: "how fast is this storage right now?"
|
Package throughput is the process-wide answer to one question: "how fast is this storage right now?" |
|
thumb
Package thumb generates and serves thumbnail images for nodes.
|
Package thumb generates and serves thumbnail images for nodes. |
|
thumb/svgwasm
Package svgwasm draws SVG files with resvg compiled to WebAssembly, run in the pure-Go wazero runtime: the SVG engine filex carries itself, so an SVG gets a thumbnail on every install (the full image, :slim, the bare binary) without rsvg-convert and without cgo.
|
Package svgwasm draws SVG files with resvg compiled to WebAssembly, run in the pure-Go wazero runtime: the SVG engine filex carries itself, so an SVG gets a thumbnail on every install (the full image, :slim, the bare binary) without rsvg-convert and without cgo. |
|
tokenperm
Package tokenperm is the catalogue of an API key's permissions that come in LEVELS: what a key may do with one kind of thing beside its files - read it, or read and write it.
|
Package tokenperm is the catalogue of an API key's permissions that come in LEVELS: what a key may do with one kind of thing beside its files - read it, or read and write it. |
|
trash
Package trash implements retention-based purging of soft-deleted nodes.
|
Package trash implements retention-based purging of soft-deleted nodes. |
|
update
Package update implements filex's release awareness: it learns which versions exist, decides what may be applied automatically, and (on installs that own their binary) applies them.
|
Package update implements filex's release awareness: it learns which versions exist, decides what may be applied automatically, and (on installs that own their binary) applies them. |
|
usage
Package usage answers a question filex could not answer at all: what does the storage behind it cost?
|
Package usage answers a question filex could not answer at all: what does the storage behind it cost? |
|
vaultlock
Package vaultlock is the vault's write lock (encryption level 3, docs/E2E-VAULT-FORMAT.md → The write lock): at most one session writes a vault, and the server is what says which.
|
Package vaultlock is the vault's write lock (encryption level 3, docs/E2E-VAULT-FORMAT.md → The write lock): at most one session writes a vault, and the server is what says which. |
|
version
Package version exposes build-time version metadata.
|
Package version exposes build-time version metadata. |
|
versioning
Package versioning persists historical snapshots of node contents inside the same storage backend, under a `.versions/<node_id>/<version_n>` prefix.
|
Package versioning persists historical snapshots of node contents inside the same storage backend, under a `.versions/<node_id>/<version_n>` prefix. |
|
wasmplugin
Package wasmplugin runs filex "app plugins": WebAssembly modules executed inside the filex process by wazero (through the Extism host SDK), with no access to the host's filesystem, network, environment or database — only to the host functions filex exposes, each gated by a permission the administrator granted at install.
|
Package wasmplugin runs filex "app plugins": WebAssembly modules executed inside the filex process by wazero (through the Extism host SDK), with no access to the host's filesystem, network, environment or database — only to the host functions filex exposes, each gated by a permission the administrator granted at install. |
|
webpush
Package webpush sends Web Push messages: RFC 8030 delivery, the payload encrypted for the receiving browser (RFC 8291, "aes128gcm") and every request signed with the application server's VAPID key (RFC 8292).
|
Package webpush sends Web Push messages: RFC 8030 delivery, the payload encrypted for the receiving browser (RFC 8291, "aes128gcm") and every request signed with the application server's VAPID key (RFC 8292). |
|
writegate
Package writegate is the one question every person-facing write asks before it touches a storage: may this path be changed?
|
Package writegate is the one question every person-facing write asks before it touches a storage: may this path be changed? |
|
writehook
Package writehook is the single post-write side-effect gate for every file-producing/mutating surface (manager, AI/MCP, ShareX, DAV, async ops worker).
|
Package writehook is the single post-write side-effect gate for every file-producing/mutating surface (manager, AI/MCP, ShareX, DAV, async ops worker). |
|
zipstream
Package zipstream is the one place filex turns a set of files into a ZIP that is written out as it is built.
|
Package zipstream is the one place filex turns a set of files into a ZIP that is written out as it is built. |
|
pkg
|
|
|
pluginkit
Package pluginkit is the guest SDK for filex app plugins written in Go.
|
Package pluginkit is the guest SDK for filex app plugins written in Go. |
|
pluginkit/humandate
Package humandate writes a date the way filex's own screens write it, for an app that has no browser to ask.
|
Package humandate writes a date the way filex's own screens write it, for an app that has no browser to ask. |
|
pluginkit/officecmd
Package officecmd reads the command line an app hands the office engine.
|
Package officecmd reads the command line an app hands the office engine. |
|
pluginkit/plugintest
Package plugintest is the test kit that ships with the filex plugin SDK.
|
Package plugintest is the test kit that ships with the filex plugin SDK. |
|
pluginkit/thumbkit
Package thumbkit helps an app draw thumbnails (filex 0.50 and later): the answer's encoding, and a card of lines in the look filex's own archive and text thumbnails have - what an app that lists a file's contents (an archive kind filex does not read, a package, a playlist) wants to draw.
|
Package thumbkit helps an app draw thumbnails (filex 0.50 and later): the answer's encoding, and a card of lines in the look filex's own archive and text thumbnails have - what an app that lists a file's contents (an archive kind filex does not read, a package, a playlist) wants to draw. |
|
pluginkit/wire
Package wire holds the JSON shapes that cross the host ↔ guest boundary of a filex app plugin.
|
Package wire holds the JSON shapes that cross the host ↔ guest boundary of a filex app plugin. |
|
pluginsdk
Package pluginsdk is the Go half of writing a filex storage plugin.
|
Package pluginsdk is the Go half of writing a filex storage plugin. |
Click to show internal directories.
Click to hide internal directories.