forked from reruin/sharelist
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
70 changed files
with
2,324 additions
and
1,168 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
## Gitignore by github | ||
## ------------------- | ||
|
||
.editorconfig | ||
*.css | ||
db.json | ||
config.json | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,83 +1,86 @@ | ||
const Koa = require('koa') | ||
const views = require('koa-views') | ||
const json = require('koa-json') | ||
const onerror = require('koa-onerror') | ||
const bodyparser = require('koa-bodyparser') | ||
const logger = require('koa-logger') | ||
const koaStatic = require('koa-static') | ||
const locales = require('koa-locales') | ||
const i18n = require('koa-i18n') | ||
#!/usr/bin/env node | ||
|
||
const session = require('koa-session-minimal') | ||
/** | ||
* Module dependencies. | ||
*/ | ||
|
||
const less = require('./middleware/koa-less') | ||
const addr = require('./middleware/koa-addr') | ||
const paths = require('./middleware/koa-paths') | ||
const koaXML = require('./middleware/koa-xml') | ||
var app = require('./app/index') | ||
var http = require('http'); | ||
var os = require('os') | ||
var config = require('./app/config') | ||
var fs = require('fs') | ||
if(!fs.existsSync('./cache')){ | ||
fs.mkdirSync('./cache'); | ||
} | ||
|
||
const routers = require('./routers/index') | ||
const cors = require('@koa/cors') | ||
const config = require('./config') | ||
/** | ||
* Get port from environment and store in Express. | ||
*/ | ||
|
||
// const proxy = require('./utils/proxy') | ||
var port = normalizePort(config.port || 33001); | ||
|
||
const app = new Koa() | ||
var server = http.createServer(app.callback()); | ||
|
||
onerror(app) | ||
|
||
locales(app, { | ||
dirs: [__dirname + '/locales'], | ||
defaultLocale: 'zh-CN' | ||
}) | ||
server.listen(port); | ||
server.on('error', onError); | ||
server.on('listening', onListening); | ||
|
||
app.use(session({ | ||
key: 'USER_SID' | ||
})) | ||
|
||
app.use(cors()) | ||
function normalizePort(val) { | ||
var port = parseInt(val, 10); | ||
|
||
app.use(bodyparser({ | ||
enableTypes:['json', 'form', 'text' , 'xml'] | ||
})) | ||
|
||
app.use(koaXML()) | ||
|
||
app.use(json()) | ||
|
||
app.use(addr) | ||
|
||
app.use(paths) | ||
|
||
// 配置控制台日志中间件 | ||
app.use(logger()) | ||
|
||
//less 中间件 | ||
app.use(less(__dirname + '/public')) | ||
|
||
// 配置静态资源加载中间件 | ||
app.use(koaStatic(__dirname + '/public')) | ||
if (isNaN(port)) { | ||
// named pipe | ||
return val; | ||
} | ||
|
||
app.use(async (ctx , next) => { | ||
ctx.state.__ = ctx.__.bind(ctx) | ||
ctx.state._title_ = config.getTitle.bind(ctx) | ||
await next() | ||
}) | ||
if (port >= 0) { | ||
// port number | ||
return port; | ||
} | ||
|
||
// 配置服务端模板渲染引擎中间件 | ||
app.use(views(__dirname + '/views', { | ||
extension: 'pug' | ||
})) | ||
return false; | ||
} | ||
|
||
function getIpv4() { | ||
var ifaces = os.networkInterfaces(); | ||
for (var dev in ifaces) { | ||
for (var i in ifaces[dev]) { | ||
var details = ifaces[dev][i]; | ||
if (/^\d+\./.test(details.address)) { | ||
return details.address; | ||
} | ||
} | ||
} | ||
} | ||
|
||
// 初始化路由中间件 | ||
app.use(routers.routes()).use(routers.allowedMethods()) | ||
function onError(error) { | ||
if (error.syscall !== 'listen') { | ||
throw error; | ||
} | ||
|
||
var bind = typeof port === 'string' | ||
? 'Pipe ' + port | ||
: 'Port ' + port; | ||
|
||
app.use(async (ctx) => { | ||
switch (ctx.status) { | ||
case 404: | ||
await ctx.render('404'); | ||
// handle specific listen errors with friendly messages | ||
switch (error.code) { | ||
case 'EACCES': | ||
console.error(bind + ' requires elevated privileges'); | ||
process.exit(1); | ||
break; | ||
case 'EADDRINUSE': | ||
console.error(bind + ' is already in use'); | ||
process.exit(1); | ||
break; | ||
default: | ||
throw error; | ||
} | ||
}) | ||
} | ||
|
||
|
||
module.exports = app | ||
function onListening() { | ||
console.log(new Date().toISOString()) | ||
console.log('App is running at http://'+getIpv4()+':'+config.port+'/') | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
const fs = require('fs') | ||
const os = require('os') | ||
const config_path = process.cwd() +'/cache/config.json' | ||
const port = process.env.PORT || 33001 | ||
|
||
const providers = [ | ||
{name:'GoogleDrive',code:'gd'}, | ||
{name:'OneDrive',code:'od'}, | ||
{name:'VirtualFile',code:'xd'}, | ||
{name:'LocalFileSystem',code:'ld'}, | ||
] | ||
|
||
//onedrive 链接有效期 10 分钟 | ||
var data = { | ||
port , | ||
|
||
enabled_proxy : 0 , | ||
|
||
enabled_proxy_header: 0 , | ||
//目录刷新时间 15分钟 | ||
cache_refresh_dir:15 * 60 * 1000, | ||
//外链 10分钟 | ||
cache_refresh_file: 5 * 60 * 1000 | ||
} | ||
|
||
const save = async (d) => { | ||
|
||
for(var i in d){ | ||
data[i] = d[i] | ||
} | ||
|
||
let str = JSON.stringify( data ) | ||
|
||
return new Promise((resolve, reject) => { | ||
fs.writeFile(config_path, str, function(err) { | ||
if (err) { | ||
console.log(err,'save config error') | ||
} else { | ||
console.log('save config success') | ||
} | ||
resolve(true) | ||
}) | ||
}) | ||
} | ||
|
||
const installed = () => data.token && data.path | ||
|
||
const getTitle = () => data.title || 'ShareList' | ||
|
||
|
||
try{ | ||
let cfg = fs.readFileSync(config_path,'utf-8'); | ||
if(cfg){ | ||
cfg = JSON.parse(cfg) | ||
for(var i in cfg){ | ||
data[i] = cfg[i] | ||
} | ||
} | ||
console.log('Load config from file') | ||
}catch(e){ | ||
|
||
} | ||
|
||
|
||
module.exports = { | ||
data, save , installed , port , providers , getTitle | ||
} |
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.