feature/1114 implement account interface (#1167)

- **refactor: move session-related code to middleware package**
- **refactor: update PKL build process and adjust related
configurations**
- **feat: integrate base.cosmos.v1 Genesis module**
- **refactor: pass session context to modal rendering functions**
- **refactor: move nebula package to app directory and update templ
version**
- **refactor: Move home section video view to dedicated directory**
- **refactor: remove unused views file**
- **refactor: move styles and UI components to global scope**
- **refactor: Rename images.go to cdn.go**
- **feat: Add Empty State Illustrations**
- **refactor: Consolidate Vault Index Logic**
- **fix: References to App.wasm and remove Vault Directory embedded CDN
files**
- **refactor: Move CDN types to Models**
- **fix: Correct line numbers in templ error messages for
arch_templ.go**
- **refactor: use common types for peer roles**
- **refactor: move common types and ORM to a shared package**
- **fix: Config import dwn**
- **refactor: move nebula directory to app**
- **feat: Rebuild nebula**
- **fix: correct file paths in panels templates**
- **feat: Remove duplicate types**
- **refactor: Move dwn to pkg/core**
- **refactor: Binary Structure**
- **feat: Introduce Crypto Pkg**
- **fix: Broken Process Start**
- **feat: Update pkg/* structure**
- **feat: Refactor PKL Structure**
- **build: update pkl build process**
- **chore: Remove Empty Files**
- **refactor: remove unused macaroon package**
- **feat: Add WebAwesome Components**
- **refactor: consolidate build and generation tasks into a single
taskfile, remove redundant makefile targets**
- **refactor: refactor server and move components to pkg/core/dwn**
- **build: update go modules**
- **refactor: move gateway logic into dedicated hway command**
- **feat: Add KSS (Krawczyk-Song-Song) MPC cryptography module**
- **feat: Implement MPC-based JWT signing and UCAN token generation**
- **feat: add support for MPC-based JWT signing**
- **feat: Implement MPC-based UCAN capabilities for smart accounts**
- **feat: add address field to keyshareSource**
- **feat: Add comprehensive MPC test suite for keyshares, UCAN tokens,
and token attenuations**
- **refactor: improve MPC keyshare management and signing process**
- **feat: enhance MPC capability hierarchy documentation**
- **refactor: rename GenerateKeyshares function to NewKeyshareSource for
clarity**
- **refactor: remove unused Ethereum address computation**
- **feat: Add HasHandle and IsAuthenticated methods to HTTPContext**
- **refactor: Add context.Context support to session HTTPContext**
- **refactor: Resolve context interface conflicts in HTTPContext**
- **feat: Add session ID context key and helper functions**
- **feat: Update WebApp Page Rendering**
- **refactor: Simplify context management by using single HTTPContext
key**
- **refactor: Simplify HTTPContext creation and context management in
session middleware**
- **refactor: refactor session middleware to use a single data
structure**
- **refactor: Simplify HTTPContext implementation and session data
handling**
- **refactor: Improve session context handling and prevent nil pointer
errors**
- **refactor: Improve session context handling with nil safety and type
support**
- **refactor: improve session data injection**
- **feat: add full-screen modal component and update registration flow**
- **chore: add .air.toml to .gitignore**
- **feat: add Air to devbox and update dependencies**
This commit is contained in:
Prad Nukala
2024-11-23 01:28:58 -05:00
committed by GitHub
parent bf94277b0f
commit 89989fa102
549 changed files with 74162 additions and 9856 deletions
+4
View File
@@ -0,0 +1,4 @@
# pkl
This is a project to generate a language-agnostic, type-safe, and idiomatic
Go code from a [Pkl](https://pkl-lang.org) file.
+36
View File
@@ -0,0 +1,36 @@
@go.Package { name = "github.com/onsonr/sonr/pkg/common/types" }
module common.types.Ctx
import "package://pkg.pkl-lang.org/pkl-go/pkl.golang@0.5.0#/go.pkl"
import "./DWN.pkl"
class JsonField extends go.Field {
structTags {
["json"] = "%{name},omitempty"
}
}
class Session {
@JsonField
id: String
@JsonField
challenge: String
@JsonField
browserName: String
@JsonField
browserVersion: String
@JsonField
userArchitecture: String
@JsonField
platform: String
@JsonField
platformVersion: String
@JsonField
deviceModel: String
@JsonField
isMobile: Boolean
@JsonField
vaultAddress: String
}
+82
View File
@@ -0,0 +1,82 @@
@go.Package { name = "github.com/onsonr/sonr/pkg/core/dwn" }
module common.types.DWN
import "package://pkg.pkl-lang.org/pkl-go/pkl.golang@0.5.0#/go.pkl"
typealias JSON = String
class JsonField extends go.Field {
structTags {
["json"] = "%{name},omitempty"
}
}
class Config {
@JsonField
ipfsGatewayUrl: String
@JsonField
motrKeyshare: String
@JsonField
motrAddress: String
@JsonField
sonrApiUrl: String
@JsonField
sonrRpcUrl: String
@JsonField
sonrChainId: String
@JsonField
vaultSchema: Schema
}
class Environment {
@JsonField
isDevelopment: Boolean
@JsonField
cacheVersion: String
@JsonField
httpserverPath: String
@JsonField
wasmExecPath: String
@JsonField
wasmPath: String
}
class Schema {
version: Int
@JsonField
account: String
@JsonField
asset: String
@JsonField
chain: String
@JsonField
credential: String
@JsonField
jwk: String
@JsonField
grant: String
@JsonField
keyshare: String
@JsonField
profile: String
}
+275
View File
@@ -0,0 +1,275 @@
@go.Package { name = "github.com/onsonr/sonr/pkg/common/models" }
module common.types.ORM
import "package://pkg.pkl-lang.org/pkl-go/pkl.golang@0.5.0#/go.pkl"
// Enums
typealias AssetType = "native"|"wrapped"|"staking"|"pool"|"ibc"|"cw20"
typealias DIDMethod = "ipfs"|"sonr"|"bitcoin"|"ethereum"|"ibc"|"webauthn"|"dwn"|"service"
typealias KeyAlgorithm = "es256"|"es384"|"es512"|"eddsa"|"es256k"|"ecdsa"
typealias KeyCurve = "p256"|"p384"|"p521"|"x25519"|"x448"|"ed25519"|"ed448"|"secp256k1"|"bls12381"|"keccak256"
typealias KeyEncoding = "raw"|"hex"|"multibase"
typealias KeyRole = "authentication"|"assertion"|"delegation"|"invocation"
typealias KeyType = "octet"|"elliptic"|"rsa"|"symmetric"|"hmac"|"mpc"|"zk"|"webauthn"|"bip32"
typealias KeyShareRole = "user"|"validator"
typealias PermissionGrant = "none"|"read"|"write"|"verify"|"broadcast"|"admin"
typealias PermissionScope = "profile"|"metadata"|"permissions"|"wallets"|"transactions"|"user"|"validator"
typealias Base58 = String
typealias Base64 = String
typealias Bech32 = String
typealias Keccak = String
typealias ChainCode = UInt
typealias Scope = String
typealias Hex = String
class PrimaryKey extends go.Field {
structTags {
["json"] = "%{name},omitempty"
["query"] = "%{name}"
}
}
class JsonField extends go.Field {
structTags {
["json"] = "%{name},omitempty"
}
}
class Account {
@PrimaryKey
id: String
@JsonField
name: String
@JsonField
address: Bech32|Keccak|String
@JsonField
publicKey: Base58
@JsonField
chainCode: ChainCode
@JsonField
index: Int
@JsonField
controller: Bech32
@JsonField
createdAt: String?
}
class Asset {
@PrimaryKey
id: String
@JsonField
name: String
@JsonField
symbol: String
@JsonField
decimals: Int
@JsonField
chainCode: ChainCode
@JsonField
createdAt: String?
}
class Chain {
@PrimaryKey
id: String
@JsonField
name: String
@JsonField
networkId: String
@JsonField
chainCode: ChainCode
@JsonField
createdAt: String?
}
class Credential {
@PrimaryKey
id: String
@JsonField
subject: String
@JsonField
controller: Bech32
@JsonField
attestationType: String
@JsonField
origin: String
@JsonField
label: String?
@JsonField
deviceId: String?
@JsonField
credentialId: Base64
@JsonField
publicKey: Base64
@JsonField
transport: List<String>
@JsonField
signCount: UInt
@JsonField
userPresent: Boolean
@JsonField
userVerified: Boolean
@JsonField
backupEligible: Boolean
@JsonField
backupState: Boolean
@JsonField
cloneWarning: Boolean
@JsonField
createdAt: String?
@JsonField
updatedAt: String?
}
class DID {
@PrimaryKey
id: String
role: KeyRole
algorithm: KeyAlgorithm
encoding: KeyEncoding
curve: KeyCurve
key_type: KeyType
raw: Base64
jwk: JWK
}
class JWK {
@JsonField
kty: String
@JsonField
crv: String
@JsonField
x: String
@JsonField
y: String
@JsonField
n: String
@JsonField
e: String
}
class Grant {
@PrimaryKey
id: UInt
@JsonField
subject: String
@JsonField
controller: Bech32
@JsonField
origin: String
@JsonField
token: String
@JsonField
scopes: List<String>
@JsonField
createdAt: String?
@JsonField
updatedAt: String?
}
class Keyshare {
@PrimaryKey
id: String
@JsonField
data: Base64
@JsonField
role: Int
@JsonField
createdAt: String?
@JsonField
lastRefreshed: String?
}
class Profile {
@PrimaryKey
id: String
@JsonField
subject: String
@JsonField
controller: Bech32
@JsonField
originUri: String?
@JsonField
publicMetadata: String?
@JsonField
privateMetadata: String?
@JsonField
createdAt: String?
@JsonField
updatedAt: String?
}
db_name: String = "vault"
db_version: Int = 1
+22
View File
@@ -0,0 +1,22 @@
//===----------------------------------------------------------------------===//
// Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//===----------------------------------------------------------------------===//
/// Common types for operations across the sonr ecosystem
amends "../basePklProject.pkl"
package {
name = "base.types"
version = "0.0.1"
}
+4
View File
@@ -0,0 +1,4 @@
{
"schemaVersion": 1,
"resolvedDependencies": {}
}
+44
View File
@@ -0,0 +1,44 @@
//===----------------------------------------------------------------------===//
// Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//===----------------------------------------------------------------------===//
module basePklProject
amends "pkl:Project"
import "pkl:reflect"
local myModule = reflect.Module(module)
local packageName: String =
findRootModule(reflect.Module(module))
.relativePathTo(module)
.last
local function findRootModule(mod: reflect.Module): Module =
let (supermodule = mod.supermodule)
if (supermodule == null || !supermodule.isAmend) mod.reflectee
else findRootModule(supermodule)
package {
baseUri = "package://pkl.sh/\(name)@\(version)"
packageZipUrl = "https://github.com/onsonr/sonr/releases/download/\(name)@\(version).zip"
license = "Apache-2.0"
authors {
"Prad N <prad@sonr.email>"
}
description = myModule.docComment
issueTracker = "https://github.com/onsonr/sonr/issues"
sourceCode = "https://github.com/onsonr/sonr/tree/third_party/pkl/packages/\(name)"
}
+89
View File
@@ -0,0 +1,89 @@
module config.sonr.App
import "package://pkg.pkl-lang.org/pkl-pantry/pkl.toml@1.0.0#/toml.pkl"
class Chain {
`minimum-gas-prices`: String = "0stake"
`query-gas-limit`: String = "0"
pruning: String = "default"
`pruning-keep-recent`: String = "0"
`pruning-interval`: String = "0"
`halt-height`: Int = 0
`halt-time`: Int = 0
`min-retain-blocks`: Int = 0
`inter-block-cache`: Boolean = true
`index-events`: Listing<String> = new {}
`iavl-cache-size`: Int = 781250
`iavl-disable-fastnode`: Boolean = false
`app-db-backend`: String = ""
telemetry: Telemetry = new {}
api: Api = new {}
grpc: Grpc = new {}
`grpc-web`: GrpcWeb = new {}
`state-sync`: StateSync = new {}
streaming: Streaming = new {}
mempool: Mempool = new {}
}
class Telemetry {
`service-name`: String = ""
enabled: Boolean = true
`enable-hostname`: Boolean = false
`enable-hostname-label`: Boolean = false
`enable-service-label`: Boolean = false
`prometheus-retention-time`: Int = 60
`global-labels`: Listing<Listing<String>> = new {
new {
"chain_id"
"chain-NKlMbx"
}
}
`metrics-sink`: String = ""
`statsd-addr`: String = ""
`datadog-hostname`: String = ""
}
class Api {
enable: Boolean = true
swagger: Boolean = false
address: String = "tcp://0.0.0.0:1317"
`max-open-connections`: Int = 1000
`rpc-read-timeout`: Int = 10
`rpc-write-timeout`: Int = 0
`rpc-max-body-bytes`: Int = 1000000
`enabled-unsafe-cors`: Boolean = false
}
class Grpc {
enable: Boolean = true
address: String = "0.0.0.0:9090"
`max-recv-msg-size`: String = "10485760"
`max-send-msg-size`: String = "2147483647"
}
class GrpcWeb {
enable: Boolean = true
}
class StateSync {
`snapshot-interval`: Int = 0
`snapshot-keep-recent`: Int = 2
}
class Streaming {
abci: Abci = new {}
}
class Abci {
keys: Listing<String> = new {}
plugin: String = ""
`stop-node-on-err`: Boolean = true
}
class Mempool {
`max-txs`: Int = 5000
}
output {
renderer = new toml.Renderer {}
}
+154
View File
@@ -0,0 +1,154 @@
module config.sonr.Chain
import "package://pkg.pkl-lang.org/pkl-pantry/pkl.toml@1.0.0#/toml.pkl"
class Chain {
version: String = "0.38.5"
proxy_app: String = "tcp://127.0.0.1:26658"
moniker: String = "node0"
db_backend: String = "goleveldb"
db_dir: String = "data"
log_level: String = "info"
log_format: String = "plain"
genesis_file: String = "config/genesis.json"
priv_validator_key_file: String = "config/priv_validator_key.json"
priv_validator_state_file: String = "data/priv_validator_state.json"
priv_validator_laddr: String = ""
node_key_file: String = "config/node_key.json"
abci: String = "socket"
filter_peers: Boolean = false
rpc: Rpc = new {}
p2p: P2p = new {}
mempool: Mempool = new {}
statesync: StateSync = new {}
blocksync: BlockSync = new {}
consensus: Consensus = new {}
storage: Storage = new {}
tx_index: TxIndex = new {}
instrumentation: Instrumentation = new {}
}
class Rpc {
laddr: String = "tcp://0.0.0.0:26657"
cors_allowed_origins: Listing<String> = new {}
cors_allowed_methods: Listing<String> = new {
"HEAD"
"GET"
"POST"
}
cors_allowed_headers: Listing<String> = new {
"Origin"
"Accept"
"Content-Type"
"X-Requested-With"
"X-Server-Time"
}
grpc_laddr: String = ""
grpc_max_open_connections: Int = 900
unsafe: Boolean = false
max_open_connections: Int = 900
max_subscription_clients: Int = 100
max_subscriptions_per_client: Int = 5
experimental_subscription_buffer_size: Int = 200
experimental_websocket_write_buffer_size: Int = 200
experimental_close_on_slow_client: Boolean = false
timeout_broadcast_tx_commit: String = "10s"
max_body_bytes: Int = 1000000
max_header_bytes: Int = 1048576
tls_cert_file: String = ""
tls_key_file: String = ""
pprof_laddr: String = "localhost:6060"
}
class P2p {
laddr: String = "tcp://0.0.0.0:26656"
external_address: String = ""
seeds: String = ""
persistent_peers: String = "7698b304905ac4459e8bf5fe8f8373aa46a528a5@192.168.0.2:26656,b1aee1db2ac83c57ffe561624ba169bdcd80dc1a@192.168.0.4:26656,cda55214016021246cd26f8991bd842a0c1dc3fb@192.168.0.3:26656"
addr_book_file: String = "config/addrbook.json"
addr_book_strict: Boolean = true
max_num_inbound_peers: Int = 40
max_num_outbound_peers: Int = 10
unconditional_peer_ids: String = ""
persistent_peers_max_dial_period: String = "0s"
flush_throttle_timeout: String = "100ms"
max_packet_msg_payload_size: Int = 1024
send_rate: Int = 5120000
recv_rate: Int = 5120000
pex: Boolean = true
seed_mode: Boolean = false
private_peer_ids: String = ""
allow_duplicate_ip: Boolean = false
handshake_timeout: String = "20s"
dial_timeout: String = "3s"
}
class Mempool {
type: String = "flood"
recheck: Boolean = true
broadcast: Boolean = true
wal_dir: String = ""
size: Int = 5000
max_txs_bytes: Int = 1073741824
cache_size: Int = 10000
`keep-invalid-txs-in-cache`: Boolean = false
max_tx_bytes: Int = 1048576
max_batch_bytes: Int = 0
experimental_max_gossip_connections_to_persistent_peers: Int = 0
experimental_max_gossip_connections_to_non_persistent_peers: Int = 0
}
class StateSync {
enable: Boolean = false
rpc_servers: String = ""
trust_height: Int = 0
trust_hash: String = ""
trust_period: String = "168h0m0s"
discovery_time: String = "15s"
temp_dir: String = ""
chunk_request_timeout: String = "10s"
chunk_fetchers: String = "4"
}
class BlockSync {
version: String = "v0"
}
class Consensus {
wal_file: String = "data/cs.wal/wal"
timeout_propose: String = "3s"
timeout_propose_delta: String = "500ms"
timeout_prevote: String = "1s"
timeout_prevote_delta: String = "500ms"
timeout_precommit: String = "1s"
timeout_precommit_delta: String = "500ms"
timeout_commit: String = "5s"
double_sign_check_height: Int = 0
skip_timeout_commit: Boolean = false
create_empty_blocks: Boolean = true
create_empty_blocks_interval: String = "0s"
peer_gossip_sleep_duration: String = "100ms"
peer_query_maj23_sleep_duration: String = "2s"
}
class Storage {
discard_abci_responses: Boolean = false
}
class TxIndex {
indexer: String = "kv"
`psql-conn`: String = ""
}
class Instrumentation {
prometheus: Boolean = false
prometheus_listen_addr: String = ":26660"
max_open_connections: Int = 3
namespace: String = "cometbft"
}
output {
renderer = new toml.Renderer {}
}
+3
View File
@@ -0,0 +1,3 @@
module config.sonr.Genesis
+22
View File
@@ -0,0 +1,22 @@
//===----------------------------------------------------------------------===//
// Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//===----------------------------------------------------------------------===//
/// Base configuration files for initializing a sonr chain
amends "../basePklProject.pkl"
package {
name = "chain.sonr"
version = "0.0.1"
}
+4
View File
@@ -0,0 +1,4 @@
{
"schemaVersion": 1,
"resolvedDependencies": {}
}
+198
View File
@@ -0,0 +1,198 @@
module net.svcs.Homeserver
version = 2
global = new {
server_name = read("env:MATRIX_SERVER_NAME") ?? ""
private_key = "matrix_key.pem"
old_private_keys = new Listing {}
key_validity_period = "168h0m0s"
}
database = new {
connection_string = read("env:MATRIX_PSQL_CONN") ?? ""
max_open_conns = 90
max_idle_conns = 5
conn_max_lifetime = -1
}
cache = new {
max_size_estimated = "1gb"
max_age = "1h"
}
well_known_server_name = ""
well_known_client_name = read("env:MATRIX_CLIENT_NAME") ?? ""
well_known_sliding_sync_proxy = ""
trusted_third_party_id_servers = new Listing {
"matrix.org"
"vector.im"
}
disable_federation = false
presence = new {
enable_inbound = false
enable_outbound = false
}
report_stats = new {
enabled = false
endpoint = "https://panopticon.matrix.org/push"
}
server_notices = new {
enabled = false
local_part = "_server"
display_name = "Server Alerts"
avatar_url = ""
room_name = "Server Alerts"
}
jetstream = new {
addresses = new Listing {}
disable_tls_validation = false
storage_path = "./"
topic_prefix = "Dendrite"
}
metrics = new {
enabled = false
basic_auth = new {
username = "metrics"
password = "metrics"
}
}
dns_cache = new {
enabled = false
cache_size = 256
cache_lifetime = "5m"
}
app_service_api = new {
disable_tls_validation = false
legacy_auth = false
legacy_paths = false
config_files = new Listing {
"/etc/dendrite/chat-service.yaml"
}
}
client_api = new {
registration_disabled = true
guests_disabled = true
registration_shared_secret = read("env:MATRIX_REGISTRATION_SHARED_SECRET") ?? ""
enable_registration_captcha = (read("env:MATRIX_ENABLE_RECATCHA") ?? "false").toBoolean()
recaptcha_public_key = read("env:MATRIX_RECATCHA_PUBLIC_KEY") ?? ""
recaptcha_private_key = read("env:MATRIX_RECATCHA_PRIVATE_KEY") ?? ""
recaptcha_bypass_secret = read("env:MATRIX_RECATCHA_BYPASS_SECRET") ?? ""
}
turn = new {
turn_user_lifetime = "5m"
turn_uris = new Listing {}
turn_shared_secret = ""
}
rate_limiting = new {
enabled = true
threshold = 20
cooloff_ms = 500
exempt_user_ids = new Listing {}
}
federation_api = new {
send_max_retries = 16
disable_tls_validation = false
disable_http_keepalives = false
key_perspectives = new Listing {
new {
server_name = "matrix.org"
keys = new Listing {
new {
key_id = "ed25519:auto"
public_key = "Noi6WqcDj0QmPxCNQqgezwTlBKrfqehY1u2FyWP9uYw"
}
new {
key_id = "ed25519:a_RXGa"
public_key = "l8Hft5qXKn1vfHrg3p4+W8gELQVo8N13JkluMfmn2sQ"
}
}
}
}
prefer_direct_fetch = false
}
media_api = new {
base_path = "./media_store"
max_file_size_bytes = 10485760
dynamic_thumbnails = false
max_thumbnail_generators = 10
thumbnail_sizes = new Listing {
new {
width = 32
height = 32
method = "crop"
}
new {
width = 96
height = 96
method = "crop"
}
new {
width = 640
height = 480
method = "scale"
}
}
}
mscs = new {
mscs = new Listing {}
}
sync_api = new Listing {}
search = new {
enabled = false
index_path = "./searchindex"
language = "en"
}
user_api = new {
bcrypt_cost = 10
auto_join_rooms = new Listing {
// - "#main:matrix.org"
}
}
tracing = new {
enabled = false
jaeger = new {
serviceName = ""
disabled = false
rpc_metrics = false
tags = new Listing {}
sampler = null
reporter = null
headers = null
baggage_restrictions = null
throttler = null
}
}
logging = new Listing {
new {
type = "std"
level = "info"
}
new {
type = "file"
level = "info"
params = new {
path = "./logs"
}
}
}
+22
View File
@@ -0,0 +1,22 @@
//===----------------------------------------------------------------------===//
// Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//===----------------------------------------------------------------------===//
/// Configuration files for integrating the Matrix service
amends "../basePklProject.pkl"
package {
name = "net.matrix"
version = "0.0.1"
}
+4
View File
@@ -0,0 +1,4 @@
{
"schemaVersion": 1,
"resolvedDependencies": {}
}
+198
View File
@@ -0,0 +1,198 @@
module net.svcs.Synapse
version = 2
global = new {
server_name = read("env:MATRIX_SERVER_NAME") ?? ""
private_key = "matrix_key.pem"
old_private_keys = new Listing {}
key_validity_period = "168h0m0s"
}
database = new {
connection_string = read("env:MATRIX_PSQL_CONN") ?? ""
max_open_conns = 90
max_idle_conns = 5
conn_max_lifetime = -1
}
cache = new {
max_size_estimated = "1gb"
max_age = "1h"
}
well_known_server_name = ""
well_known_client_name = read("env:MATRIX_CLIENT_NAME") ?? ""
well_known_sliding_sync_proxy = ""
trusted_third_party_id_servers = new Listing {
"matrix.org"
"vector.im"
}
disable_federation = false
presence = new {
enable_inbound = false
enable_outbound = false
}
report_stats = new {
enabled = false
endpoint = "https://panopticon.matrix.org/push"
}
server_notices = new {
enabled = false
local_part = "_server"
display_name = "Server Alerts"
avatar_url = ""
room_name = "Server Alerts"
}
jetstream = new {
addresses = new Listing {}
disable_tls_validation = false
storage_path = "./"
topic_prefix = "Dendrite"
}
metrics = new {
enabled = false
basic_auth = new {
username = "metrics"
password = "metrics"
}
}
dns_cache = new {
enabled = false
cache_size = 256
cache_lifetime = "5m"
}
app_service_api = new {
disable_tls_validation = false
legacy_auth = false
legacy_paths = false
config_files = new Listing {
"/etc/dendrite/chat-service.yaml"
}
}
client_api = new {
registration_disabled = true
guests_disabled = true
registration_shared_secret = read("env:MATRIX_REGISTRATION_SHARED_SECRET") ?? ""
enable_registration_captcha = (read("env:MATRIX_ENABLE_RECATCHA") ?? "false").toBoolean()
recaptcha_public_key = read("env:MATRIX_RECATCHA_PUBLIC_KEY") ?? ""
recaptcha_private_key = read("env:MATRIX_RECATCHA_PRIVATE_KEY") ?? ""
recaptcha_bypass_secret = read("env:MATRIX_RECATCHA_BYPASS_SECRET") ?? ""
}
turn = new {
turn_user_lifetime = "5m"
turn_uris = new Listing {}
turn_shared_secret = ""
}
rate_limiting = new {
enabled = true
threshold = 20
cooloff_ms = 500
exempt_user_ids = new Listing {}
}
federation_api = new {
send_max_retries = 16
disable_tls_validation = false
disable_http_keepalives = false
key_perspectives = new Listing {
new {
server_name = "matrix.org"
keys = new Listing {
new {
key_id = "ed25519:auto"
public_key = "Noi6WqcDj0QmPxCNQqgezwTlBKrfqehY1u2FyWP9uYw"
}
new {
key_id = "ed25519:a_RXGa"
public_key = "l8Hft5qXKn1vfHrg3p4+W8gELQVo8N13JkluMfmn2sQ"
}
}
}
}
prefer_direct_fetch = false
}
media_api = new {
base_path = "./media_store"
max_file_size_bytes = 10485760
dynamic_thumbnails = false
max_thumbnail_generators = 10
thumbnail_sizes = new Listing {
new {
width = 32
height = 32
method = "crop"
}
new {
width = 96
height = 96
method = "crop"
}
new {
width = 640
height = 480
method = "scale"
}
}
}
mscs = new {
mscs = new Listing {}
}
sync_api = new Listing {}
search = new {
enabled = false
index_path = "./searchindex"
language = "en"
}
user_api = new {
bcrypt_cost = 10
auto_join_rooms = new Listing {
// - "#main:matrix.org"
}
}
tracing = new {
enabled = false
jaeger = new {
serviceName = ""
disabled = false
rpc_metrics = false
tags = new Listing {}
sampler = null
reporter = null
headers = null
baggage_restrictions = null
throttler = null
}
}
logging = new Listing {
new {
type = "std"
level = "info"
}
new {
type = "file"
level = "info"
params = new {
path = "./logs"
}
}
}