mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 02:11:53 +00:00
* better transfer progress * frontend for calculating transfer size * fixes from testing * improve internal api --------- Co-authored-by: Matt Hill <mattnine@protonmail.com>
185 lines
5.1 KiB
TypeScript
185 lines
5.1 KiB
TypeScript
import { Injectable } from '@angular/core'
|
|
import { encodeBase64, pauseFor } from '@start9labs/shared'
|
|
import {
|
|
ApiService,
|
|
CifsRecoverySource,
|
|
AttachReq,
|
|
ExecuteReq,
|
|
CompleteRes,
|
|
} from './api.service'
|
|
import * as jose from 'node-jose'
|
|
|
|
let tries: number
|
|
|
|
@Injectable({
|
|
providedIn: 'root',
|
|
})
|
|
export class MockApiService extends ApiService {
|
|
async getStatus() {
|
|
const restoreOrMigrate = true
|
|
await pauseFor(1000)
|
|
|
|
if (tries === undefined) {
|
|
tries = 0
|
|
return null
|
|
}
|
|
|
|
tries++
|
|
|
|
const total = tries <= 4 ? tries * 268435456 : 1073741824
|
|
const progress = tries > 4 ? (tries - 4) * 268435456 : 0
|
|
|
|
return {
|
|
'bytes-transferred': restoreOrMigrate ? progress : 0,
|
|
'total-bytes': restoreOrMigrate ? total : null,
|
|
complete: progress === total,
|
|
}
|
|
}
|
|
|
|
async getPubKey() {
|
|
await pauseFor(1000)
|
|
|
|
// randomly generated
|
|
// const keystore = jose.JWK.createKeyStore()
|
|
// this.pubkey = await keystore.generate('EC', 'P-256')
|
|
|
|
// generated from backend
|
|
this.pubkey = await jose.JWK.asKey({
|
|
kty: 'EC',
|
|
crv: 'P-256',
|
|
x: 'yHTDYSfjU809fkSv9MmN4wuojf5c3cnD7ZDN13n-jz4',
|
|
y: '8Mpkn744A5KDag0DmX2YivB63srjbugYZzWc3JOpQXI',
|
|
})
|
|
}
|
|
|
|
async getDrives() {
|
|
await pauseFor(1000)
|
|
return [
|
|
{
|
|
logicalname: 'abcd',
|
|
vendor: 'Samsung',
|
|
model: 'T5',
|
|
partitions: [
|
|
{
|
|
logicalname: 'pabcd',
|
|
label: null,
|
|
capacity: 73264762332,
|
|
used: null,
|
|
'embassy-os': {
|
|
version: '0.2.17',
|
|
full: true,
|
|
'password-hash':
|
|
'$argon2d$v=19$m=1024,t=1,p=1$YXNkZmFzZGZhc2RmYXNkZg$Ceev1I901G6UwU+hY0sHrFZ56D+o+LNJ',
|
|
'wrapped-key': null,
|
|
},
|
|
guid: null,
|
|
},
|
|
],
|
|
capacity: 123456789123,
|
|
guid: 'uuid-uuid-uuid-uuid',
|
|
},
|
|
{
|
|
logicalname: 'dcba',
|
|
vendor: 'Crucial',
|
|
model: 'MX500',
|
|
partitions: [
|
|
{
|
|
logicalname: 'pbcba',
|
|
label: null,
|
|
capacity: 73264762332,
|
|
used: null,
|
|
'embassy-os': {
|
|
version: '0.3.3',
|
|
full: true,
|
|
'password-hash':
|
|
'$argon2d$v=19$m=1024,t=1,p=1$YXNkZmFzZGZhc2RmYXNkZg$Ceev1I901G6UwU+hY0sHrFZ56D+o+LNJ',
|
|
'wrapped-key': null,
|
|
},
|
|
guid: null,
|
|
},
|
|
],
|
|
capacity: 124456789123,
|
|
guid: null,
|
|
},
|
|
{
|
|
logicalname: 'wxyz',
|
|
vendor: 'SanDisk',
|
|
model: 'Specialness',
|
|
partitions: [
|
|
{
|
|
logicalname: 'pbcba',
|
|
label: null,
|
|
capacity: 73264762332,
|
|
used: null,
|
|
'embassy-os': {
|
|
version: '0.3.2',
|
|
full: true,
|
|
'password-hash':
|
|
'$argon2d$v=19$m=1024,t=1,p=1$YXNkZmFzZGZhc2RmYXNkZg$Ceev1I901G6UwU+hY0sHrFZ56D+o+LNJ',
|
|
'wrapped-key': null,
|
|
},
|
|
guid: 'guid-guid-guid-guid',
|
|
},
|
|
],
|
|
capacity: 123459789123,
|
|
guid: null,
|
|
},
|
|
]
|
|
}
|
|
|
|
async verifyCifs(params: CifsRecoverySource) {
|
|
await pauseFor(1000)
|
|
return {
|
|
version: '0.3.0',
|
|
full: true,
|
|
'password-hash':
|
|
'$argon2d$v=19$m=1024,t=1,p=1$YXNkZmFzZGZhc2RmYXNkZg$Ceev1I901G6UwU+hY0sHrFZ56D+o+LNJ',
|
|
'wrapped-key': '',
|
|
}
|
|
}
|
|
|
|
async attach(params: AttachReq) {
|
|
await pauseFor(1000)
|
|
}
|
|
|
|
async execute(setupInfo: ExecuteReq) {
|
|
await pauseFor(1000)
|
|
}
|
|
|
|
async complete(): Promise<CompleteRes> {
|
|
await pauseFor(1000)
|
|
return {
|
|
'tor-address': 'http://asdafsadasdasasdasdfasdfasdf.onion',
|
|
'lan-address': 'https://adjective-noun.local',
|
|
'root-ca': encodeBase64(rootCA),
|
|
}
|
|
}
|
|
|
|
async exit() {
|
|
await pauseFor(1000)
|
|
}
|
|
}
|
|
|
|
const rootCA = `-----BEGIN CERTIFICATE-----
|
|
MIIDpzCCAo+gAwIBAgIRAIIuOarlQETlUQEOZJGZYdIwDQYJKoZIhvcNAQELBQAw
|
|
bTELMAkGA1UEBhMCVVMxFTATBgNVBAoMDEV4YW1wbGUgQ29ycDEOMAwGA1UECwwF
|
|
U2FsZXMxCzAJBgNVBAgMAldBMRgwFgYDVQQDDA93d3cuZXhhbXBsZS5jb20xEDAO
|
|
BgNVBAcMB1NlYXR0bGUwHhcNMjEwMzA4MTU0NjI3WhcNMjIwMzA4MTY0NjI3WjBt
|
|
MQswCQYDVQQGEwJVUzEVMBMGA1UECgwMRXhhbXBsZSBDb3JwMQ4wDAYDVQQLDAVT
|
|
YWxlczELMAkGA1UECAwCV0ExGDAWBgNVBAMMD3d3dy5leGFtcGxlLmNvbTEQMA4G
|
|
A1UEBwwHU2VhdHRsZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMP7
|
|
t5AKFZQ7abqkeyUjsBVIWRa9tCh8oge9u/LvCbxU738G4jssT+Oud3WMajIjuNow
|
|
cpc+0Q/e42ULO/6gTNrTs6OCOo9lV6G0Dprf/e91DWoKgPatem/pUjNyraifHZfu
|
|
b5mLHCfahjWXUQtc/sjmDQaZRK3Kar6ljlUBE/Le9NEyOAIkSLPzDtW8LXm4iwcU
|
|
BZrb828rKd1Aw9oI1+3bfzB6xXmzZxc5RLXveOCEhKGD32jKZ/RNFSC8AZAwJe+x
|
|
bTsys/lUOYFTuT8Bn0TGxR8x7Y4H75+F9BavY3v+WkLj4M+olN9dMR7Et9FMt4u4
|
|
YRokv5zp8zIb5iTne1kCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
|
|
FgQUaW3+r328uTLokog2TklmoBK+yt4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3
|
|
DQEBCwUAA4IBAQAXjd/7UZ8RDE+PLWSDNGQdLemOBTcawF+tK+PzA4Evlmn9VuNc
|
|
g+x3oZvVZSDQBANUz0b9oPeo54aE38dW1zQm2qfTab8822aqeWMLyJ1dMsAgqYX2
|
|
t9+u6w3NzRCw8Pvz18V69+dFE5AeXmNP0Z5/gdz8H/NSpctjlzopbScRZKCSlPid
|
|
Rf3ZOPm9QP92YpWyYDkfAU04xdDo1vR0MYjKPkl4LjRqSU/tcCJnPMbJiwq+bWpX
|
|
2WJoEBXB/p15Kn6JxjI0ze2SnSI48JZ8it4fvxrhOo0VoLNIuCuNXJOwU17Rdl1W
|
|
YJidaq7je6k18AdgPA0Kh8y1XtfUH3fTaVw4
|
|
-----END CERTIFICATE-----`
|