53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
import express from "express";
|
|
import * as os from "os";
|
|
import config from "../config.js";
|
|
import { NetworkInterfaceDetails } from "types/types";
|
|
|
|
// バックエンドルーティング
|
|
import CommandExecute from "./route/command.js";
|
|
import ueusePost from "./route/ueuse.js";
|
|
import WeatherUeuse from "./route/weather.js";
|
|
import API from "./route/api.js";
|
|
import Token from "./route/token.js";
|
|
|
|
export default async function AdminPanel() {
|
|
// 無効
|
|
if (!config.admin.panel.isEnabled) {
|
|
return;
|
|
}
|
|
|
|
// 管理パネル
|
|
const app = express();
|
|
const port = config.admin.panel.port;
|
|
|
|
// ルーティング
|
|
app.use(ueusePost);
|
|
app.use(CommandExecute);
|
|
app.use(WeatherUeuse);
|
|
app.use(API);
|
|
app.use(Token);
|
|
app.use(express.static("panel/public"));
|
|
|
|
app.listen(port, () => {
|
|
console.log(`http://${LocalIP()}:${port} で管理パネルを起動しました`);
|
|
});
|
|
}
|
|
|
|
function LocalIP() {
|
|
const interfaces = os.networkInterfaces();
|
|
|
|
for (const name in interfaces) {
|
|
const iface: any = interfaces[name];
|
|
|
|
for (const i of iface) {
|
|
const details: NetworkInterfaceDetails = i;
|
|
|
|
if (details.family === 'IPv4' && details.internal !== true) {
|
|
return details.address;
|
|
}
|
|
}
|
|
}
|
|
|
|
return "localhost";
|
|
}
|