index.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /**
  2. * index
  3. * @author: oldj
  4. * @homepage: https://oldj.net
  5. */
  6. import { http_api_port } from '@common/constants'
  7. import express from 'express'
  8. import { Server } from 'http'
  9. import api_router from './api/index'
  10. const app = express()
  11. app.use((req, res, next) => {
  12. console.log(
  13. `> "${new Date().toString()}"`,
  14. req.method,
  15. req.originalUrl,
  16. `"${req.headers['user-agent']}"`,
  17. )
  18. next()
  19. })
  20. app.get('/', (req, res) => {
  21. res.send('Hello SwitchHosts!')
  22. })
  23. app.get('/remote-test', (req, res) => {
  24. res.send(`# remote-test\n# ${new Date().toString()}`)
  25. })
  26. app.use('/api', api_router)
  27. let server: Server
  28. export const start = (http_api_only_local: boolean): boolean => {
  29. try {
  30. let listenIp = http_api_only_local ? '127.0.0.1' : '0.0.0.0'
  31. server = app.listen(http_api_port, listenIp, function () {
  32. console.log(`SwitchHosts HTTP server is listening on port ${http_api_port}!`)
  33. console.log(`-> http://${listenIp}:${http_api_port}`)
  34. })
  35. } catch (e) {
  36. console.error(e)
  37. return false
  38. }
  39. return true
  40. }
  41. export const stop = () => {
  42. if (!server) return
  43. try {
  44. server.close()
  45. } catch (e) {
  46. console.error(e)
  47. }
  48. }