feat: database
This commit is contained in:
		
							parent
							
								
									cd777af41c
								
							
						
					
					
						commit
						c2c18b4651
					
				
					 3 changed files with 311 additions and 5 deletions
				
			
		
							
								
								
									
										239
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										239
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							|  | @ -8,6 +8,16 @@ dependencies = [ | |||
|  "memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "arrayref" | ||||
| version = "0.3.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "arrayvec" | ||||
| version = "0.5.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "atty" | ||||
| version = "0.2.14" | ||||
|  | @ -18,6 +28,11 @@ dependencies = [ | |||
|  "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "autocfg" | ||||
| version = "0.1.7" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "autocfg" | ||||
| version = "1.0.0" | ||||
|  | @ -40,11 +55,26 @@ dependencies = [ | |||
|  "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "base64" | ||||
| version = "0.11.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "bitflags" | ||||
| version = "1.2.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "blake2b_simd" | ||||
| version = "0.5.10" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "byteorder" | ||||
| version = "1.3.4" | ||||
|  | @ -73,6 +103,19 @@ name = "cfg-if" | |||
| version = "0.1.10" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "cloudabi" | ||||
| version = "0.0.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "constant_time_eq" | ||||
| version = "0.1.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "cookie" | ||||
| version = "0.11.2" | ||||
|  | @ -84,6 +127,37 @@ dependencies = [ | |||
|  "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "crc32fast" | ||||
| version = "1.2.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "crossbeam-epoch" | ||||
| version = "0.8.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "crossbeam-utils" | ||||
| version = "0.7.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "devise" | ||||
| version = "0.2.0" | ||||
|  | @ -113,6 +187,26 @@ dependencies = [ | |||
|  "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "directories" | ||||
| version = "2.0.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "dirs-sys" | ||||
| version = "0.3.4" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "redox_users 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "dtoa" | ||||
| version = "0.4.5" | ||||
|  | @ -135,6 +229,23 @@ name = "fnv" | |||
| version = "1.0.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "fs2" | ||||
| version = "0.4.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "fxhash" | ||||
| version = "0.2.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "getrandom" | ||||
| version = "0.1.14" | ||||
|  | @ -258,6 +369,14 @@ name = "libc" | |||
| version = "0.2.66" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "lock_api" | ||||
| version = "0.3.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "log" | ||||
| version = "0.3.9" | ||||
|  | @ -283,11 +402,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| name = "matrixserver" | ||||
| version = "0.1.0" | ||||
| dependencies = [ | ||||
|  "directories 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "pretty_env_logger 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "rocket 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "ruma-client-api 0.6.0 (git+https://github.com/ruma/ruma-client-api)", | ||||
|  "ruma-identifiers 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "sled 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
|  | @ -300,6 +422,14 @@ name = "memchr" | |||
| version = "2.3.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "memoffset" | ||||
| version = "0.5.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "mime" | ||||
| version = "0.2.6" | ||||
|  | @ -317,6 +447,28 @@ dependencies = [ | |||
|  "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "parking_lot" | ||||
| version = "0.10.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "parking_lot_core 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "parking_lot_core" | ||||
| version = "0.7.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "pear" | ||||
| version = "0.1.2" | ||||
|  | @ -440,6 +592,16 @@ name = "redox_syscall" | |||
| version = "0.1.56" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "redox_users" | ||||
| version = "0.3.4" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "rust-argon2 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "regex" | ||||
| version = "1.3.4" | ||||
|  | @ -590,6 +752,25 @@ dependencies = [ | |||
|  "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "rust-argon2" | ||||
| version = "0.7.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "blake2b_simd 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "rustc_version" | ||||
| version = "0.2.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "ryu" | ||||
| version = "1.0.2" | ||||
|  | @ -600,6 +781,24 @@ name = "safemem" | |||
| version = "0.3.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "scopeguard" | ||||
| version = "1.1.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "semver" | ||||
| version = "0.9.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "semver-parser" | ||||
| version = "0.7.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "serde" | ||||
| version = "1.0.104" | ||||
|  | @ -639,6 +838,21 @@ dependencies = [ | |||
|  "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "sled" | ||||
| version = "0.31.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| dependencies = [ | ||||
|  "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "crossbeam-epoch 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "fs2 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
|  "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "smallvec" | ||||
| version = "0.6.13" | ||||
|  | @ -859,23 +1073,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 
 | ||||
| [metadata] | ||||
| "checksum aho-corasick 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)" = "743ad5a418686aad3b87fd14c43badd828cf26e214a00f92a384291cf22e1811" | ||||
| "checksum arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" | ||||
| "checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" | ||||
| "checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" | ||||
| "checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" | ||||
| "checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" | ||||
| "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" | ||||
| "checksum base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" | ||||
| "checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" | ||||
| "checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" | ||||
| "checksum blake2b_simd 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a" | ||||
| "checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" | ||||
| "checksum bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1" | ||||
| "checksum c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb" | ||||
| "checksum cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)" = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd" | ||||
| "checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" | ||||
| "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" | ||||
| "checksum constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" | ||||
| "checksum cookie 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d9fac5e7bdefb6160fb181ee0eaa6f96704b625c70e6d61c465cb35750a4ea12" | ||||
| "checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" | ||||
| "checksum crossbeam-epoch 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5064ebdbf05ce3cb95e45c8b086f72263f4166b29b97f6baff7ef7fe047b55ac" | ||||
| "checksum crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4" | ||||
| "checksum devise 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "74e04ba2d03c5fa0d954c061fc8c9c288badadffc272ebb87679a89846de3ed3" | ||||
| "checksum devise_codegen 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "066ceb7928ca93a9bedc6d0e612a8a0424048b0ab1f75971b203d01420c055d7" | ||||
| "checksum devise_core 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cf41c59b22b5e3ec0ea55c7847e5f358d340f3a8d6d53a5cf4f1564967f96487" | ||||
| "checksum directories 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "551a778172a450d7fc12e629ca3b0428d00f6afa9a43da1b630d54604e97371c" | ||||
| "checksum dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "afa0b23de8fd801745c471deffa6e12d248f962c9fd4b4c33787b055599bde7b" | ||||
| "checksum dtoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4358a9e11b9a09cf52383b451b49a169e8d797b68aa02301ff586d70d9661ea3" | ||||
| "checksum env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" | ||||
| "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" | ||||
| "checksum fs2 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" | ||||
| "checksum fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" | ||||
| "checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" | ||||
| "checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" | ||||
| "checksum hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "eff2656d88f158ce120947499e971d743c05dbcbed62e5bd2f38f1698bbc3772" | ||||
|  | @ -891,13 +1119,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" | ||||
| "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" | ||||
| "checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" | ||||
| "checksum lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "79b2de95ecb4691949fea4716ca53cdbcfccb2c612e19644a8bad05edcf9f47b" | ||||
| "checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" | ||||
| "checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" | ||||
| "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" | ||||
| "checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" | ||||
| "checksum memchr 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53445de381a1f436797497c61d851644d0e8e88e6140f22872ad33a704933978" | ||||
| "checksum memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9" | ||||
| "checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" | ||||
| "checksum num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46203554f085ff89c235cd12f7075f3233af9b11ed7c9e16dfe2560d03313ce6" | ||||
| "checksum parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "92e98c49ab0b7ce5b222f2cc9193fc4efe11c6d0bd4f648e374684a6857b1cfc" | ||||
| "checksum parking_lot_core 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7582838484df45743c8434fbff785e8edf260c28748353d44bc0da32e0ceabf1" | ||||
| "checksum pear 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c26d2b92e47063ffce70d3e3b1bd097af121a9e0db07ca38a6cc1cf0cc85ff25" | ||||
| "checksum pear_codegen 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "336db4a192cc7f54efeb0c4e11a9245394824cc3bcbd37ba3ff51240c35d7a6e" | ||||
| "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" | ||||
|  | @ -914,6 +1146,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| "checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" | ||||
| "checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" | ||||
| "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" | ||||
| "checksum redox_users 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "09b23093265f8d200fa7b4c2c76297f47e681c655f6f1285a8780d6a022f7431" | ||||
| "checksum regex 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "322cf97724bea3ee221b78fe25ac9c46114ebb51747ad5babd51a2fc6a8235a8" | ||||
| "checksum regex-syntax 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)" = "b28dfe3fe9badec5dbf0a79a9cccad2cfc2ab5484bdb3e44cbd1ae8b3ba2be06" | ||||
| "checksum ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2c4db68a2e35f3497146b7e4563df7d4773a2433230c5e4b448328e31740458a" | ||||
|  | @ -926,12 +1159,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| "checksum ruma-events 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4a196cbeaa7bffe3756448ee9cf142645790e2a0ece78dfaf10a311eaf5e2a5e" | ||||
| "checksum ruma-events-macros 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "962d93056619ed61826a9d8872c863560e4892ff6a69b70f593baa5ae8b19dc8" | ||||
| "checksum ruma-identifiers 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "07e442c700a3b33fc4dd4a1c4b463ebdd252d2c2db31b83da6bb3009307039b9" | ||||
| "checksum rust-argon2 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017" | ||||
| "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" | ||||
| "checksum ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8" | ||||
| "checksum safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" | ||||
| "checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" | ||||
| "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" | ||||
| "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" | ||||
| "checksum serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449" | ||||
| "checksum serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64" | ||||
| "checksum serde_json 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)" = "9371ade75d4c2d6cb154141b9752cf3781ec9c05e0e5cf35060e1e70ee7b9c25" | ||||
| "checksum serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97" | ||||
| "checksum sled 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb6824dde66ad33bf20c6e8476f5b82b871bc8bc3c129a10ea2f7dae5060fa3" | ||||
| "checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" | ||||
| "checksum smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5c2fb2ec9bcd216a5b0d0ccf31ab17b5ed1d627960edff65bbe95d3ce221cefc" | ||||
| "checksum state 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7345c971d1ef21ffdbd103a75990a15eb03604fc8b8852ca8cb418ee1a099028" | ||||
|  |  | |||
|  | @ -12,3 +12,6 @@ http = "0.2.0" | |||
| ruma-client-api = { git = "https://github.com/ruma/ruma-client-api" } | ||||
| pretty_env_logger = "0.4.0" | ||||
| log = "0.4.8" | ||||
| sled = "0.31.0" | ||||
| directories = "2.0.2" | ||||
| ruma-identifiers = "0.14.1" | ||||
|  |  | |||
							
								
								
									
										74
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										74
									
								
								src/main.rs
									
									
									
									
									
								
							|  | @ -2,16 +2,19 @@ | |||
| mod ruma_wrapper; | ||||
| 
 | ||||
| use { | ||||
|     rocket::{get, post, put, routes}, | ||||
|     directories::ProjectDirs, | ||||
|     rocket::{get, post, put, routes, State}, | ||||
|     ruma_client_api::{ | ||||
|         error::{Error, ErrorKind}, | ||||
|         r0::{ | ||||
|             account::register, alias::get_alias, membership::join_room_by_id, | ||||
|             message::create_message_event, | ||||
|             message::create_message_event, session::login, | ||||
|         }, | ||||
|         unversioned::get_supported_versions, | ||||
|     }, | ||||
|     ruma_identifiers::UserId, | ||||
|     ruma_wrapper::{MatrixResult, Ruma}, | ||||
|     sled::Db, | ||||
|     std::convert::TryInto, | ||||
| }; | ||||
| 
 | ||||
|  | @ -23,8 +26,13 @@ fn get_supported_versions_route() -> MatrixResult<get_supported_versions::Respon | |||
| } | ||||
| 
 | ||||
| #[post("/_matrix/client/r0/register", data = "<body>")] | ||||
| fn register_route(body: Ruma<register::Request>) -> MatrixResult<register::Response> { | ||||
|     let user_id = match (*format!( | ||||
| fn register_route( | ||||
|     db: State<Db>, | ||||
|     body: Ruma<register::Request>, | ||||
| ) -> MatrixResult<register::Response> { | ||||
|     let users = db.open_tree("users").unwrap(); | ||||
| 
 | ||||
|     let user_id: UserId = match (*format!( | ||||
|         "@{}:localhost", | ||||
|         body.username.clone().unwrap_or("randomname".to_owned()) | ||||
|     )) | ||||
|  | @ -33,13 +41,28 @@ fn register_route(body: Ruma<register::Request>) -> MatrixResult<register::Respo | |||
|         Err(_) => { | ||||
|             return MatrixResult(Err(Error { | ||||
|                 kind: ErrorKind::InvalidUsername, | ||||
|                 message: "Username was invalid. ".to_owned(), | ||||
|                 message: "Username was invalid.".to_owned(), | ||||
|                 status_code: http::StatusCode::BAD_REQUEST, | ||||
|             })) | ||||
|         } | ||||
|         Ok(user_id) => user_id, | ||||
|     }; | ||||
| 
 | ||||
|     if users.contains_key(user_id.to_string()).unwrap() { | ||||
|         return MatrixResult(Err(Error { | ||||
|             kind: ErrorKind::UserInUse, | ||||
|             message: "Desired user ID is already taken.".to_owned(), | ||||
|             status_code: http::StatusCode::BAD_REQUEST, | ||||
|         })); | ||||
|     } | ||||
| 
 | ||||
|     users | ||||
|         .insert( | ||||
|             user_id.to_string(), | ||||
|             &*body.password.clone().unwrap_or_default(), | ||||
|         ) | ||||
|         .unwrap(); | ||||
| 
 | ||||
|     MatrixResult(Ok(register::Response { | ||||
|         access_token: "randomtoken".to_owned(), | ||||
|         home_server: "localhost".to_owned(), | ||||
|  | @ -48,6 +71,38 @@ fn register_route(body: Ruma<register::Request>) -> MatrixResult<register::Respo | |||
|     })) | ||||
| } | ||||
| 
 | ||||
| #[post("/_matrix/client/r0/login", data = "<body>")] | ||||
| fn login_route(db: State<Db>, body: Ruma<login::Request>) -> MatrixResult<login::Response> { | ||||
|     let user_id = if let login::UserInfo::MatrixId(username) = &body.user { | ||||
|         let user_id = format!("@{}:localhost", username); | ||||
|         let users = db.open_tree("users").unwrap(); | ||||
|         if !users.contains_key(user_id.clone()).unwrap() { | ||||
|             dbg!(); | ||||
|             return MatrixResult(Err(Error { | ||||
|                 kind: ErrorKind::Forbidden, | ||||
|                 message: "UserId not found.".to_owned(), | ||||
|                 status_code: http::StatusCode::BAD_REQUEST, | ||||
|             })); | ||||
|         } | ||||
|         user_id | ||||
|     } else { | ||||
|         dbg!(); | ||||
|         return MatrixResult(Err(Error { | ||||
|             kind: ErrorKind::Unknown, | ||||
|             message: "Bad login type.".to_owned(), | ||||
|             status_code: http::StatusCode::BAD_REQUEST, | ||||
|         })); | ||||
|     }; | ||||
| 
 | ||||
|     return MatrixResult(Ok(login::Response { | ||||
|         user_id: (*user_id).try_into().unwrap(), // User id is correct because the user is already registered
 | ||||
|         access_token: "randomtoken".to_owned(), | ||||
|         home_server: Some("localhost".to_owned()), | ||||
|         device_id: body.device_id.clone().unwrap_or("randomid".to_owned()), | ||||
|         well_known: None, | ||||
|     })); | ||||
| } | ||||
| 
 | ||||
| #[get("/_matrix/client/r0/directory/room/<room_alias>")] | ||||
| fn get_alias_route(room_alias: String) -> MatrixResult<get_alias::Response> { | ||||
|     let room_id = match &*room_alias { | ||||
|  | @ -97,16 +152,25 @@ fn create_message_event_route( | |||
| 
 | ||||
| fn main() { | ||||
|     pretty_env_logger::init(); | ||||
|     let db = sled::open( | ||||
|         ProjectDirs::from("xyz", "koesters", "matrixserver") | ||||
|             .unwrap() | ||||
|             .data_dir(), | ||||
|     ) | ||||
|     .unwrap(); | ||||
| 
 | ||||
|     rocket::ignite() | ||||
|         .mount( | ||||
|             "/", | ||||
|             routes![ | ||||
|                 get_supported_versions_route, | ||||
|                 register_route, | ||||
|                 login_route, | ||||
|                 get_alias_route, | ||||
|                 join_room_by_id_route, | ||||
|                 create_message_event_route, | ||||
|             ], | ||||
|         ) | ||||
|         .manage(db) | ||||
|         .launch(); | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue