mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Lens app source code (#119)
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
1 parent
936cbd53d4
commit
1d0815abd2
797 files changed
+73714
-215
No files matched your search
@@ -0,0 +1,32 @@
|
||||
// Load & parse local kubernetes config (dev-only)
|
||||
|
||||
import * as jsYaml from "js-yaml"
|
||||
import * as fs from "fs"
|
||||
import * as os from "os"
|
||||
import chalk from "chalk";
|
||||
import { logger } from "./logger";
|
||||
|
||||
interface IKubeConfigParams {
|
||||
clusterUrl: string;
|
||||
userToken: string;
|
||||
}
|
||||
|
||||
export function getKubeConfigDev(): Partial<IKubeConfigParams> {
|
||||
const KUBE_CONFIG_FILE = process.env.KUBE_CONFIG_FILE;
|
||||
if (!KUBE_CONFIG_FILE) {
|
||||
return {}
|
||||
}
|
||||
let filePath = ""
|
||||
try {
|
||||
filePath = KUBE_CONFIG_FILE.replace("~", os.homedir());
|
||||
const yaml = fs.readFileSync(filePath).toString();
|
||||
const config = jsYaml.safeLoad(yaml);
|
||||
return {
|
||||
clusterUrl: config.clusters[0].cluster.server,
|
||||
userToken: config.users[0].user.token,
|
||||
}
|
||||
} catch (err) {
|
||||
logger.error(`[KUBE-CONFIG] Parsing config file ${chalk.bold(filePath)} failed.`, err)
|
||||
return {};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
import chalk from "chalk";
|
||||
import * as ip from "ip"
|
||||
|
||||
const divider = chalk.gray('-----------------------------------');
|
||||
|
||||
export const logger = {
|
||||
// Called when express.js app starts on given port w/o errors
|
||||
appStarted: (port: string | number, title = 'Server started ') => {
|
||||
console.log(chalk.underline.bold(title) + ` ${chalk.green('✓')}`);
|
||||
console.log(`
|
||||
${chalk.bold('Access URLs:')}
|
||||
${divider}
|
||||
Localhost: ${chalk.magenta(`http://localhost:${port}`)}
|
||||
LAN: ${chalk.magenta(`http://${ip.address()}:${port}`)}
|
||||
${divider}
|
||||
`);
|
||||
},
|
||||
|
||||
error(message: string, error: any) {
|
||||
let errString = ""
|
||||
try {
|
||||
errString = JSON.stringify(error, null, 2);
|
||||
} catch (e) {
|
||||
errString = String(error);
|
||||
}
|
||||
console.error(chalk.bold.red(`[ERROR] -> ${message}`), errString);
|
||||
}
|
||||
};
|
||||
|
||||
export function sanitizeHeaders(headers: { [name: string]: string }) {
|
||||
if (headers.Authorization) {
|
||||
const [authType, authToken] = headers.Authorization.split(" ");
|
||||
headers.Authorization = `${authType} *****`
|
||||
}
|
||||
return headers;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
// Parse payload from jwt token
|
||||
// Format: https://github.com/kontena/kube-oidc#openid-connect-and-kubernetes
|
||||
import { base64 } from "../../client/utils/base64";
|
||||
|
||||
interface JwtPayload {
|
||||
"azp": string;// "1077841816959-kkdh0lvq1au80qv4gtubotvgs9am4a95.apps.googleusercontent.com",
|
||||
"aud": string;// "1077841816959-kkdh0lvq1au80qv4gtubotvgs9am4a95.apps.googleusercontent.com",
|
||||
"sub": string;// "103613003764490648449",
|
||||
"hd": string;// "redhat.com",
|
||||
"email": string;// "echiang@redhat.com",
|
||||
"email_verified": boolean; // true,
|
||||
"at_hash": string;// "OGDOjIJ92FkatDBoCm8ydg",
|
||||
"exp": number;// 1527203940,
|
||||
"iss": string;// "https://accounts.google.com",
|
||||
"iat": number;// 1527200340,
|
||||
"name": string; // "Eric Chiang",
|
||||
"picture": string; // "https://lh5.googleusercontent.com/-Cs2iHTXiETs/AAAAAAAAAAI/AAAAAAAAACM/0Q85UhZizjg/s96-c/photo.jpg",
|
||||
"given_name": string; // "Eric",
|
||||
"family_name": string; //"Chiang",
|
||||
"locale": string; // "en"
|
||||
}
|
||||
|
||||
export function parseJwt(token: string): Partial<JwtPayload> {
|
||||
try {
|
||||
const [header, payload, signature] = token.split(".");
|
||||
return base64.decode(payload);
|
||||
} catch (e) {
|
||||
return {}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user