Compare commits
7 Commits
main
...
b713e4515a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b713e4515a | ||
|
|
5f38aafeed | ||
|
|
9b56dba1e2 | ||
|
|
dd106a1ecb | ||
|
|
9141d67894 | ||
|
|
e6c159520a | ||
|
|
00fd73d41b |
@@ -7,7 +7,19 @@ export default class DevstarAPIHandler {
|
|||||||
|
|
||||||
private devstarDomain: string;
|
private devstarDomain: string;
|
||||||
|
|
||||||
constructor() {
|
/**
|
||||||
|
* domain使用用户配置
|
||||||
|
*/
|
||||||
|
constructor();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* open with vscode链接传入devstarDomain
|
||||||
|
* @param devstarDomainURL
|
||||||
|
*/
|
||||||
|
constructor(devstarDomainURL: string);
|
||||||
|
|
||||||
|
constructor(devstarDomainURL?: string) {
|
||||||
|
if (devstarDomainURL == undefined || devstarDomainURL == "") {
|
||||||
// 获取domain
|
// 获取domain
|
||||||
const devstarDomainFromUserConfig = utils.devstarDomain()
|
const devstarDomainFromUserConfig = utils.devstarDomain()
|
||||||
if (undefined == devstarDomainFromUserConfig || "" == devstarDomainFromUserConfig) {
|
if (undefined == devstarDomainFromUserConfig || "" == devstarDomainFromUserConfig) {
|
||||||
@@ -15,6 +27,10 @@ export default class DevstarAPIHandler {
|
|||||||
} else {
|
} else {
|
||||||
this.devstarDomain = devstarDomainFromUserConfig.endsWith('/') ? devstarDomainFromUserConfig.slice(0, -1) : devstarDomainFromUserConfig;
|
this.devstarDomain = devstarDomainFromUserConfig.endsWith('/') ? devstarDomainFromUserConfig.slice(0, -1) : devstarDomainFromUserConfig;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// open with vscode传入
|
||||||
|
this.devstarDomain = devstarDomainURL
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async verifyToken(token: string, username: string): Promise<boolean> {
|
public async verifyToken(token: string, username: string): Promise<boolean> {
|
||||||
|
|||||||
42
src/home.ts
42
src/home.ts
@@ -11,12 +11,33 @@ export default class DSHome {
|
|||||||
private devstarHomePageUrl: string;
|
private devstarHomePageUrl: string;
|
||||||
private devstarDomain: string | undefined
|
private devstarDomain: string | undefined
|
||||||
|
|
||||||
constructor(context: vscode.ExtensionContext, user: User) {
|
|
||||||
|
/**
|
||||||
|
* 配置项提供devstarDomain
|
||||||
|
* @param context
|
||||||
|
* @param user
|
||||||
|
*/
|
||||||
|
constructor(context: vscode.ExtensionContext, user: User)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* open with vscode链接提供devstarDomain
|
||||||
|
* @param context
|
||||||
|
* @param user
|
||||||
|
* @param devstarDomain
|
||||||
|
*/
|
||||||
|
constructor(context: vscode.ExtensionContext, user: User, devstarDomain: string)
|
||||||
|
|
||||||
|
constructor(context: vscode.ExtensionContext, user: User, devstarDomain?: string) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.user = user;
|
this.user = user;
|
||||||
this.remoteContainer = new RemoteContainer(user);
|
this.remoteContainer = new RemoteContainer(user);
|
||||||
|
|
||||||
|
if (devstarDomain != undefined && devstarDomain != "") {
|
||||||
|
this.devstarDomain = devstarDomain
|
||||||
|
} else {
|
||||||
this.devstarDomain = utils.devstarDomain()
|
this.devstarDomain = utils.devstarDomain()
|
||||||
|
}
|
||||||
|
|
||||||
if (undefined == this.devstarDomain || "" == this.devstarDomain) {
|
if (undefined == this.devstarDomain || "" == this.devstarDomain) {
|
||||||
this.devstarHomePageUrl = "https://devstar.cn/devstar-home"
|
this.devstarHomePageUrl = "https://devstar.cn/devstar-home"
|
||||||
} else {
|
} else {
|
||||||
@@ -24,6 +45,23 @@ export default class DSHome {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setUser(user: User) {
|
||||||
|
this.user = user
|
||||||
|
}
|
||||||
|
|
||||||
|
setRemoteContainer(remoteContainer: RemoteContainer) {
|
||||||
|
this.remoteContainer = remoteContainer
|
||||||
|
}
|
||||||
|
|
||||||
|
setDevstarDomain(devstarDomain: string) {
|
||||||
|
if (undefined == devstarDomain || "" == devstarDomain) {
|
||||||
|
this.devstarDomain = devstarDomain
|
||||||
|
this.devstarHomePageUrl = "https://devstar.cn/devstar-home"
|
||||||
|
} else {
|
||||||
|
this.devstarHomePageUrl = devstarDomain.endsWith('/') ? this.devstarDomain + "devstar-home" : devstarDomain + "/devstar-home"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async toggle(devstarHomePageUrl: string = this.devstarHomePageUrl) {
|
async toggle(devstarHomePageUrl: string = this.devstarHomePageUrl) {
|
||||||
const panel = vscode.window.createWebviewPanel(
|
const panel = vscode.window.createWebviewPanel(
|
||||||
'homeWebview',
|
'homeWebview',
|
||||||
@@ -49,7 +87,7 @@ export default class DSHome {
|
|||||||
const config = {
|
const config = {
|
||||||
language: vscode.env.language
|
language: vscode.env.language
|
||||||
}
|
}
|
||||||
panel.webview.postMessage({command: 'getHomeConfig', data: {homeConfig: config}})
|
panel.webview.postMessage({ command: 'getHomeConfig', data: { homeConfig: config } })
|
||||||
break;
|
break;
|
||||||
case 'getUserToken':
|
case 'getUserToken':
|
||||||
const userToken = this.user.getUserTokenFromLocal()
|
const userToken = this.user.getUserTokenFromLocal()
|
||||||
|
|||||||
@@ -16,6 +16,10 @@ export default class RemoteContainer {
|
|||||||
this.user = user
|
this.user = user
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public setUser(user: User) {
|
||||||
|
this.user = user
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 第一次打开远程项目
|
* 第一次打开远程项目
|
||||||
*
|
*
|
||||||
|
|||||||
46
src/user.ts
46
src/user.ts
@@ -16,26 +16,62 @@ export default class User {
|
|||||||
private userToken: string | undefined;
|
private userToken: string | undefined;
|
||||||
private usernameKey: string = 'devstarUsername'
|
private usernameKey: string = 'devstarUsername'
|
||||||
private userTokenKey: string = 'devstarUserToken'
|
private userTokenKey: string = 'devstarUserToken'
|
||||||
private localUserPrivateKeyPath: string = ''
|
private devstarDomain: string;
|
||||||
private devstarHostname: string;
|
private devstarHostname: string;
|
||||||
|
|
||||||
constructor(context: vscode.ExtensionContext) {
|
/**
|
||||||
|
* devstarDomain由配置项提供
|
||||||
|
* @param context
|
||||||
|
*/
|
||||||
|
constructor(context: vscode.ExtensionContext);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* devstarDomain由open with vscode链接提供
|
||||||
|
* @param context
|
||||||
|
* @param devstarDomain
|
||||||
|
*/
|
||||||
|
constructor(context: vscode.ExtensionContext, devstarDomain: string);
|
||||||
|
|
||||||
|
constructor(context: vscode.ExtensionContext, devstarDomain?: string) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.username = this.context.globalState.get(this.usernameKey);
|
this.username = this.context.globalState.get(this.usernameKey);
|
||||||
this.userToken = this.context.globalState.get(this.userTokenKey);
|
this.userToken = this.context.globalState.get(this.userTokenKey);
|
||||||
|
|
||||||
// 提取devstar domain的主域名,用于本地ssh key的命名
|
// 提取devstar domain的主域名,用于本地ssh key的命名
|
||||||
|
if (devstarDomain != undefined && devstarDomain != "") {
|
||||||
|
// open with vscode链接提供域名
|
||||||
|
this.devstarDomain = devstarDomain
|
||||||
|
let parsedUrl = new URL(devstarDomain);
|
||||||
|
this.devstarHostname = parsedUrl.hostname.replace(/\./g, '_'); //提取hostname,并用下划线替换.
|
||||||
|
} else {
|
||||||
|
// 用户配置项提供域名
|
||||||
let devstarDomainFromConfig: string | undefined;
|
let devstarDomainFromConfig: string | undefined;
|
||||||
let devstarDomainURL: string;
|
let devstarDomainURL: string;
|
||||||
devstarDomainFromConfig = vscode.workspace.getConfiguration('devstar').get('devstarDomain')
|
devstarDomainFromConfig = vscode.workspace.getConfiguration('devstar').get('devstarDomain')
|
||||||
// 如果没有配置devstar domain,则默认domain为https://devstar.cn
|
// 如果没有配置devstar domain,则默认domain为https://devstar.cn
|
||||||
devstarDomainURL = (devstarDomainFromConfig === undefined || devstarDomainFromConfig === "") ? 'https://devstar.cn' : devstarDomainFromConfig;
|
devstarDomainURL = (devstarDomainFromConfig === undefined || devstarDomainFromConfig === "") ? 'https://devstar.cn' : devstarDomainFromConfig;
|
||||||
|
this.devstarDomain = devstarDomainURL
|
||||||
let parsedUrl = new URL(devstarDomainURL);
|
let parsedUrl = new URL(devstarDomainURL);
|
||||||
this.devstarHostname = parsedUrl.hostname.replace(/\./g, '_'); //提取hostname,并用下划线替换.
|
this.devstarHostname = parsedUrl.hostname.replace(/\./g, '_'); //提取hostname,并用下划线替换.
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public async login(token: string, username: string) {
|
setDevstarDomainAndHostname(devstarDomain: string) {
|
||||||
const devstarAPIHandler = new DevstarAPIHandler()
|
if (devstarDomain != "") {
|
||||||
|
this.devstarDomain = devstarDomain
|
||||||
|
const parsedUrl = new URL(devstarDomain)
|
||||||
|
this.devstarHostname = parsedUrl.hostname.replace(/\./g, '_');
|
||||||
|
} else {
|
||||||
|
console.error(vscode.l10n.t("devstar domain is null"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getDevstarDomain(): string {
|
||||||
|
return this.devstarDomain
|
||||||
|
}
|
||||||
|
|
||||||
|
public async login(token: string, username: string): Promise<string> {
|
||||||
|
const devstarAPIHandler = new DevstarAPIHandler(this.devstarDomain)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const res = await devstarAPIHandler.verifyToken(token, username)
|
const res = await devstarAPIHandler.verifyToken(token, username)
|
||||||
@@ -196,7 +232,7 @@ export default class User {
|
|||||||
if (!fs.existsSync(publicKeyDir)) {
|
if (!fs.existsSync(publicKeyDir)) {
|
||||||
console.log(`Directory ${publicKeyDir} does not exist, creating it...`);
|
console.log(`Directory ${publicKeyDir} does not exist, creating it...`);
|
||||||
// 公钥与私钥的目录一样,所以只用创建一次
|
// 公钥与私钥的目录一样,所以只用创建一次
|
||||||
fs.mkdirSync(publicKeyDir, {recursive: true})
|
fs.mkdirSync(publicKeyDir, { recursive: true })
|
||||||
}
|
}
|
||||||
|
|
||||||
fs.writeFileSync(this.getUserPublicKeyPath(), publicKeyStr);
|
fs.writeFileSync(this.getUserPublicKeyPath(), publicKeyStr);
|
||||||
|
|||||||
Reference in New Issue
Block a user