fix: remove nested .git folders, re-add as normal directories
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
import { readFileSync } from "fs";
|
||||
import { PrismaPg } from "@prisma/adapter-pg";
|
||||
import { Prisma, PrismaClient } from "../generated/prisma/client";
|
||||
import * as msal from "@azure/msal-node";
|
||||
import { Server } from "socket.io";
|
||||
import { Server as Engine } from "@socket.io/bun-engine";
|
||||
import { io as createSocketClient } from "socket.io-client";
|
||||
import axios from "axios";
|
||||
import { UnifiClient } from "./modules/unifi-api/UnifiClient";
|
||||
import { attachCwApiLogger } from "./modules/cw-utils/cwApiLogger";
|
||||
import Redis from "ioredis";
|
||||
|
||||
const connectionString = `${process.env.DATABASE_URL}`;
|
||||
const adapter = new PrismaPg({ connectionString });
|
||||
|
||||
interface EnvKey {
|
||||
PORT: number;
|
||||
}
|
||||
|
||||
// ENV CONSTANTS
|
||||
|
||||
export const PORT = process.env.PORT;
|
||||
export const API_BASE_URL =
|
||||
process.env.API_BASE_URL || `http://localhost:${PORT || 3000}`;
|
||||
export const COLLECTOR_WS_URL =
|
||||
process.env.COLLECTOR_WS_URL || "http://localhost:7204";
|
||||
export const COLLECTOR_PSK = process.env.COLLECTOR_PSK || "";
|
||||
|
||||
export const prisma = new PrismaClient({ adapter });
|
||||
|
||||
// Redis Client
|
||||
|
||||
export const redis = new Redis(process.env.REDIS_URL!);
|
||||
|
||||
export const sessionDuration = 30 * 24 * 60 * 60000;
|
||||
export const accessTokenDuration = "10min";
|
||||
export const refreshTokenDuration = "30d";
|
||||
|
||||
const isProduction = process.env.NODE_ENV === "production";
|
||||
|
||||
const readKeyFile = (path: string) => readFileSync(path).toString();
|
||||
|
||||
export const accessTokenPrivateKey = isProduction
|
||||
? process.env.ACCESS_TOKEN_PRIVATE_KEY!
|
||||
: readKeyFile(`.accessToken.key`);
|
||||
export const refreshTokenPrivateKey = isProduction
|
||||
? process.env.REFRESH_TOKEN_PRIVATE_KEY!
|
||||
: readKeyFile(`.refreshToken.key`);
|
||||
export const permissionsPrivateKey = isProduction
|
||||
? process.env.PERMISSIONS_PRIVATE_KEY!
|
||||
: readKeyFile(`.permissions.key`);
|
||||
export const secureValuesPrivateKey = isProduction
|
||||
? process.env.SECURE_VALUES_PRIVATE_KEY!
|
||||
: readKeyFile(`.secureValues.key`);
|
||||
export const secureValuesPublicKey = isProduction
|
||||
? process.env.SECURE_VALUES_PUBLIC_KEY!
|
||||
: readKeyFile(`public-keys/.secureValues.pub`);
|
||||
|
||||
// Microsoft Auth Constants
|
||||
const msalConfig: msal.Configuration = {
|
||||
auth: {
|
||||
clientId: process.env.MICROSOFT_CLIENT_ID!,
|
||||
authority: `https://login.microsoftonline.com/${process.env.MICROSOFT_TENANT_ID!}`,
|
||||
clientSecret: process.env.MICROSOFT_CLIENT_SECRET!,
|
||||
},
|
||||
};
|
||||
|
||||
// MSAL Client Instance
|
||||
export const msalClient = new msal.ConfidentialClientApplication(msalConfig);
|
||||
|
||||
// Socket.io
|
||||
|
||||
const io = new Server();
|
||||
const authIO = io.of("/auth_callback");
|
||||
const engine = new Engine();
|
||||
|
||||
io.bind(engine);
|
||||
export { io, engine };
|
||||
|
||||
export const collectorSocket = createSocketClient(COLLECTOR_WS_URL, {
|
||||
autoConnect: true,
|
||||
reconnection: true,
|
||||
reconnectionDelay: 1000,
|
||||
reconnectionDelayMax: 5000,
|
||||
transports: ["websocket"],
|
||||
auth: COLLECTOR_PSK ? { psk: COLLECTOR_PSK } : undefined,
|
||||
});
|
||||
|
||||
export const connectCollectorSocket = () => {
|
||||
if (collectorSocket.connected) {
|
||||
return;
|
||||
}
|
||||
|
||||
collectorSocket.connect();
|
||||
};
|
||||
|
||||
// Connectwise API Client
|
||||
|
||||
const connectWiseApi = axios.create({
|
||||
baseURL: `https://ttscw.totaltech.net/v4_6_release/apis/3.0/`,
|
||||
headers: {
|
||||
Authorization: `Basic ${process.env.CW_BASIC_TOKEN}`,
|
||||
clientId: `${process.env.CW_CLIENT_ID}`,
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
timeout: 30_000, // 30 s — prevents indefinite hangs on CW API
|
||||
});
|
||||
|
||||
attachCwApiLogger(connectWiseApi);
|
||||
|
||||
export { connectWiseApi };
|
||||
|
||||
// Unifi API Constants
|
||||
|
||||
export const unifiControllerBaseUrl =
|
||||
process.env.UNIFI_CONTROLLER_BASE_URL || "https://unifi.example.com";
|
||||
export const unifiSite = process.env.UNIFI_SITE || "default";
|
||||
export const unifiUsername = process.env.UNIFI_USERNAME || "admin";
|
||||
export const unifiPassword = process.env.UNIFI_PASSWORD || "";
|
||||
|
||||
export const unifi = new UnifiClient(unifiControllerBaseUrl);
|
||||
Reference in New Issue
Block a user