diff options
Diffstat (limited to 'index.ts')
| -rw-r--r-- | index.ts | 123 |
1 files changed, 31 insertions, 92 deletions
@@ -1,4 +1,4 @@ -// Copyright 2022 ilotterytea +// Copyright 2022 NotDankEnough (ilotterytea) // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -12,99 +12,38 @@ // See the License for the specific language governing permissions and // limitations under the License. -import { Command } from "commander"; -import chalk from "chalk"; -import express from "express"; - -import pck from "./package.json"; -import SRouter from "./router"; -import { existsSync, mkdirSync, writeFileSync } from "fs"; - -main(); - -/** - * The "web server" script. - */ -function main() { - // Obtaining the options that have been provided in the command line interface: - const cli = CLI(); - const opts = cli.opts(); - - try { - // Create the necessary files if the script was started with the --init option: - if (opts.init) { - if (!(existsSync("./options.json"))) { - writeFileSync("./options.json", JSON.stringify({ - allowedMIMETypes: [ - "image/jpeg", - "image/png", - "image/svg+xml", - "image/tiff", - "image/webp", - "image/gif", - "video/mp4"], - maxFileSizeInBytes: 13107200 - }, null, 2), {encoding: "utf-8"}); - console.debug(chalk.green("The options file created!")); - } - return; - } - - // Run the server if the script was started with the --standalone option: - if (opts.standalone) { - // ExpressJS instance: - const App = express(); - - // Using an image loader with custom route (--route <value>) on the server: - App.use(opts.route, SRouter); - - // Using a static folder. Also, this will be used when viewing uploaded pictures. - App.use(express.static(`${__dirname}/static`)); - - // Starting the server on the specified port: - App.listen(opts.port, () => { - console.debug(chalk.bgGreen("Server (Image hoster) running on port ", opts.port)); - }); +import CLI from "./src/CLI"; +import Main from "./src/Main"; +import Ini from "ini"; +import { readFileSync, writeFileSync } from "fs"; +import { Logger } from "tslog"; + +const log: Logger = new Logger({name: "init"}); +const cli: Record<string, string | boolean> = CLI(); + +if (cli.init) { + const cfg_template = { + Auth: { + ClientID: "", + ClientSecret: "", + RedirectURI: "" + }, + Certificate: { + Key: "", + Cert: "", + Ca: "" + }, + Ports: { + HTTP: "80", + HTTPS: "443" } - } catch (err: any) { - console.log(chalk.bgRed(err)); } -} -/** - * Silly command-line interface. - */ -function CLI() { - // New Command instance: - const Program = new Command(); + writeFileSync("config.ini", Ini.stringify(cfg_template), {encoding: "utf-8"}); + log.debug("Config file is generated! Exiting..."); + process.exit(0); +} - // Setting the information about Program: - Program - .name(pck.displayName) - .description(pck.description) - .version(pck.version); - - // Create an option to run this script as a web app: - Program - .option("--standalone", "Run the script as a web app.", false) - .alias("-s"); - - // The option to be specified as the port in the web app: - Program - .option("--port <value>", "Set the port for standalone app.", "8080") - .alias("-p"); - - // The route for our image uploader: - Program - .option("--route <value>", "Set the route for standalone app.", "/") - .alias("-r"); - - // Initialize the first setup of image uploader: - Program - .option("--init", "Create the necessary files for image uploader.", false); - - // Parse the process arguments: - Program.parse(process.argv); +const config: {[key: string]: any} = Ini.parse(readFileSync("./config.ini", {encoding: "utf-8"})); - return Program; -}
\ No newline at end of file +Main(__dirname, config, cli);
\ No newline at end of file |
