|
|
|
|
@ -1,4 +1,3 @@
@@ -1,4 +1,3 @@
|
|
|
|
|
import * as program from 'commander'; |
|
|
|
|
|
|
|
|
|
import { AuthService } from 'jslib/services/auth.service'; |
|
|
|
|
|
|
|
|
|
@ -15,80 +14,90 @@ import { EnvironmentService } from 'jslib/services/environment.service';
@@ -15,80 +14,90 @@ import { EnvironmentService } from 'jslib/services/environment.service';
|
|
|
|
|
import { UserService } from 'jslib/services/user.service'; |
|
|
|
|
import { ContainerService } from 'jslib/services/container.service'; |
|
|
|
|
import { NodeMessagingService } from './services/nodeMessaging.service'; |
|
|
|
|
import { SyncCommand } from './commands/sync.command'; |
|
|
|
|
import { SyncService } from 'jslib/services/sync.service'; |
|
|
|
|
import { SettingsService } from 'jslib/services/settings.service'; |
|
|
|
|
import { CipherService } from 'jslib/services/cipher.service'; |
|
|
|
|
import { FolderService } from 'jslib/services/folder.service'; |
|
|
|
|
import { CollectionService } from 'jslib/services/collection.service'; |
|
|
|
|
import { LockService } from 'jslib/services/lock.service'; |
|
|
|
|
import { I18nService } from './services/i18n.service'; |
|
|
|
|
import { ConstantsService } from 'jslib/services/constants.service'; |
|
|
|
|
import { PasswordGenerationService } from 'jslib/services/passwordGeneration.service'; |
|
|
|
|
import { TotpService } from 'jslib/services/totp.service'; |
|
|
|
|
import { AuditService } from 'jslib/services/audit.service'; |
|
|
|
|
|
|
|
|
|
const platformUtilsService = new NodePlatformUtilsService(); |
|
|
|
|
const cryptoFunctionService = new NodeCryptoFunctionService(); |
|
|
|
|
const storageService = new NodeStorageService('Bitwarden CLI'); |
|
|
|
|
const cryptoService = new CryptoService(storageService, storageService, cryptoFunctionService); |
|
|
|
|
const appIdService = new AppIdService(storageService); |
|
|
|
|
const tokenService = new TokenService(storageService); |
|
|
|
|
const messagingService = new NodeMessagingService(); |
|
|
|
|
const apiService = new ApiService(tokenService, platformUtilsService, (expired: boolean) => { }); |
|
|
|
|
const environmentService = new EnvironmentService(apiService, storageService); |
|
|
|
|
const userService = new UserService(tokenService, storageService); |
|
|
|
|
const containerService = new ContainerService(cryptoService, platformUtilsService); |
|
|
|
|
const authService = new AuthService(cryptoService, apiService, userService, tokenService, appIdService, |
|
|
|
|
null, platformUtilsService, messagingService, true); |
|
|
|
|
import { Program } from './program'; |
|
|
|
|
|
|
|
|
|
containerService.attachToWindow(global); |
|
|
|
|
environmentService.setUrlsFromStorage().then(() => { |
|
|
|
|
// Do nothing
|
|
|
|
|
}); |
|
|
|
|
export class Main { |
|
|
|
|
messagingService: NodeMessagingService; |
|
|
|
|
storageService: NodeStorageService; |
|
|
|
|
secureStorageService: NodeStorageService; |
|
|
|
|
i18nService: I18nService; |
|
|
|
|
platformUtilsService: NodePlatformUtilsService; |
|
|
|
|
constantsService: ConstantsService; |
|
|
|
|
cryptoService: CryptoService; |
|
|
|
|
tokenService: TokenService; |
|
|
|
|
appIdService: AppIdService; |
|
|
|
|
apiService: ApiService; |
|
|
|
|
environmentService: EnvironmentService; |
|
|
|
|
userService: UserService; |
|
|
|
|
settingsService: SettingsService; |
|
|
|
|
cipherService: CipherService; |
|
|
|
|
folderService: FolderService; |
|
|
|
|
collectionService: CollectionService; |
|
|
|
|
lockService: LockService; |
|
|
|
|
syncService: SyncService; |
|
|
|
|
passwordGenerationService: PasswordGenerationService; |
|
|
|
|
totpService: TotpService; |
|
|
|
|
containerService: ContainerService; |
|
|
|
|
auditService: AuditService; |
|
|
|
|
cryptoFunctionService: NodeCryptoFunctionService; |
|
|
|
|
authService: AuthService; |
|
|
|
|
|
|
|
|
|
program |
|
|
|
|
.version('1.0.0', '-v, --version'); |
|
|
|
|
program: Program; |
|
|
|
|
|
|
|
|
|
program |
|
|
|
|
.command('login <email> <password>') |
|
|
|
|
.description('Log into a Bitwarden user account.') |
|
|
|
|
.option('-m, --method <method>', '2FA method.') |
|
|
|
|
.option('-c, --code <code>', '2FA code.') |
|
|
|
|
.action(async (email: string, password: string, cmd: program.Command) => { |
|
|
|
|
const command = new LoginCommand(authService); |
|
|
|
|
await command.run(email, password, cmd); |
|
|
|
|
}); |
|
|
|
|
constructor() { |
|
|
|
|
this.i18nService = new I18nService('en', '../locales'); |
|
|
|
|
this.platformUtilsService = new NodePlatformUtilsService(); |
|
|
|
|
this.cryptoFunctionService = new NodeCryptoFunctionService(); |
|
|
|
|
this.storageService = new NodeStorageService('Bitwarden CLI'); |
|
|
|
|
this.cryptoService = new CryptoService(this.storageService, this.storageService, this.cryptoFunctionService); |
|
|
|
|
this.appIdService = new AppIdService(this.storageService); |
|
|
|
|
this.tokenService = new TokenService(this.storageService); |
|
|
|
|
this.messagingService = new NodeMessagingService(); |
|
|
|
|
this.apiService = new ApiService(this.tokenService, this.platformUtilsService, (expired: boolean) => { }); |
|
|
|
|
this.environmentService = new EnvironmentService(this.apiService, this.storageService); |
|
|
|
|
this.userService = new UserService(this.tokenService, this.storageService); |
|
|
|
|
this.containerService = new ContainerService(this.cryptoService, this.platformUtilsService); |
|
|
|
|
this.settingsService = new SettingsService(this.userService, this.storageService); |
|
|
|
|
this.cipherService = new CipherService(this.cryptoService, this.userService, this.settingsService, |
|
|
|
|
this.apiService, this.storageService, this.i18nService, this.platformUtilsService); |
|
|
|
|
this.folderService = new FolderService(this.cryptoService, this.userService, |
|
|
|
|
() => 'No Folder', this.apiService, this.storageService, this.i18nService); |
|
|
|
|
this.collectionService = new CollectionService(this.cryptoService, this.userService, this.storageService, |
|
|
|
|
this.i18nService); |
|
|
|
|
this.lockService = new LockService(this.cipherService, this.folderService, this.collectionService, |
|
|
|
|
this.cryptoService, this.platformUtilsService, this.storageService, this.messagingService, |
|
|
|
|
() => { /* do nothing */ }); |
|
|
|
|
this.syncService = new SyncService(this.userService, this.apiService, this.settingsService, |
|
|
|
|
this.folderService, this.cipherService, this.cryptoService, this.collectionService, |
|
|
|
|
this.storageService, this.messagingService, (expired: boolean) => { }); |
|
|
|
|
this.authService = new AuthService(this.cryptoService, this.apiService, this.userService, this.tokenService, |
|
|
|
|
this.appIdService, this.i18nService, this.platformUtilsService, this.messagingService, true); |
|
|
|
|
this.program = new Program(this); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
program |
|
|
|
|
.command('logout') |
|
|
|
|
.description('Log out of the current Bitwarden user account.') |
|
|
|
|
.action((cmd) => { |
|
|
|
|
console.log('Logging out...'); |
|
|
|
|
}); |
|
|
|
|
private async init() { |
|
|
|
|
this.containerService.attachToWindow(global); |
|
|
|
|
await this.environmentService.setUrlsFromStorage(); |
|
|
|
|
const locale = await this.storageService.get<string>(ConstantsService.localeKey); |
|
|
|
|
await this.i18nService.init(locale); |
|
|
|
|
await this.authService.init(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
program |
|
|
|
|
.command('list <object>') |
|
|
|
|
.description('List objects.') |
|
|
|
|
.action((object, cmd) => { |
|
|
|
|
console.log('Listing...'); |
|
|
|
|
console.log(object); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
program |
|
|
|
|
.command('get <object> <id>') |
|
|
|
|
.description('Get an object.') |
|
|
|
|
.action((object, id, cmd) => { |
|
|
|
|
console.log('Getting...'); |
|
|
|
|
console.log(object); |
|
|
|
|
console.log(id); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
program |
|
|
|
|
.command('edit <object> <id>') |
|
|
|
|
.description('Edit an object.') |
|
|
|
|
.action((object, id, cmd) => { |
|
|
|
|
console.log('Editing...'); |
|
|
|
|
console.log(object); |
|
|
|
|
console.log(id); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
program |
|
|
|
|
.command('delete <object> <id>') |
|
|
|
|
.description('Delete an object.') |
|
|
|
|
.action((object, id, cmd) => { |
|
|
|
|
console.log('Deleting...'); |
|
|
|
|
console.log(object); |
|
|
|
|
console.log(id); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
program |
|
|
|
|
.parse(process.argv); |
|
|
|
|
async run() { |
|
|
|
|
await this.init(); |
|
|
|
|
this.program.run(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|