Ready to release v 1.0.5
This commit is contained in:
parent
43a36b3701
commit
9e9e548026
@ -50,8 +50,13 @@ a. 执行`src/tank/build/pack/build.bat`脚本
|
||||
b. 上传 tank-x.x.x.windows-x86_64.zip 到蓝眼云盘
|
||||
c. 在github上发布新版本。
|
||||
|
||||
2018-07-25
|
||||
tank-1.0.5
|
||||
1. 添加了根据url抓取文件的功能。
|
||||
|
||||
|
||||
2018-07-03
|
||||
tank-1.0.3
|
||||
tank-1.0.4
|
||||
1. 添加了文件分段功能,支持断点续传。
|
||||
|
||||
|
||||
|
@ -90,7 +90,7 @@ services:
|
||||
# 蓝眼云盘的镜像信息
|
||||
# 依赖 mysql:5.7 的镜像
|
||||
tank:
|
||||
image: eyeblue/tank:1.0.4
|
||||
image: eyeblue/tank:1.0.5
|
||||
depends_on:
|
||||
- db
|
||||
ports:
|
||||
@ -145,7 +145,7 @@ $ docker-compose stop
|
||||
$ docker container ls
|
||||
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
f5f64735fc53 eyeblue/tank:1.0.4 "/go/bin/tank" 20 minutes ago Up 13 seconds 0.0.0.0:6010->6010/tcp tank_tank_1
|
||||
f5f64735fc53 eyeblue/tank:1.0.5 "/go/bin/tank" 20 minutes ago Up 13 seconds 0.0.0.0:6010->6010/tcp tank_tank_1
|
||||
3a859cad3e7e mysql:5.7 "docker-entrypoint.s…" 20 minutes ago Up 14 seconds 3306/tcp tank_db_1
|
||||
|
||||
$ docker container stop f5
|
||||
|
@ -1 +1 @@
|
||||
<!DOCTYPE html><html><head><title>蓝眼云盘</title><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=renderer content=webkit><meta name=viewport content="user-scalable=no,width=device-width,initial-scale=1,maximum-scale=1"><meta name=msapplication-tap-highlight content=no><meta name=apple-mobile-web-app-capable content=yes><link rel="shortcut icon" href=/favicon.ico><link href=/static/css/app.e67bf66a3b64f1b45ec496faae765128.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.74d953fdc11832c5137c.js></script><script type=text/javascript src=/static/js/vendor.98c0538b97a360a7756e.js></script><script type=text/javascript src=/static/js/app.503db8fca94fab1c3688.js></script></body></html>
|
||||
<!DOCTYPE html><html><head><title>蓝眼云盘</title><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=renderer content=webkit><meta name=viewport content="user-scalable=no,width=device-width,initial-scale=1,maximum-scale=1"><meta name=msapplication-tap-highlight content=no><meta name=apple-mobile-web-app-capable content=yes><link rel="shortcut icon" href=/favicon.ico><link href=/static/css/app.14041cb0bdf05bb099089674600a3046.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.94a3286175434e76ef85.js></script><script type=text/javascript src=/static/js/vendor.fd6fd2c2da583dfd7fae.js></script><script type=text/javascript src=/static/js/app.9b1a548547dba98d9234.js></script></body></html>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
10
build/html/static/js/app.9b1a548547dba98d9234.js
Normal file
10
build/html/static/js/app.9b1a548547dba98d9234.js
Normal file
File diff suppressed because one or more lines are too long
1
build/html/static/js/app.9b1a548547dba98d9234.js.map
Normal file
1
build/html/static/js/app.9b1a548547dba98d9234.js.map
Normal file
File diff suppressed because one or more lines are too long
@ -1,2 +1,2 @@
|
||||
!function(e){function __webpack_require__(r){if(_[r])return _[r].exports;var t=_[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,__webpack_require__),t.l=!0,t.exports}var r=window.webpackJsonp;window.webpackJsonp=function(_,n,o){for(var c,a,i,u=0,p=[];u<_.length;u++)a=_[u],t[a]&&p.push(t[a][0]),t[a]=0;for(c in n)Object.prototype.hasOwnProperty.call(n,c)&&(e[c]=n[c]);for(r&&r(_,n,o);p.length;)p.shift()();if(o)for(u=0;u<o.length;u++)i=__webpack_require__(__webpack_require__.s=o[u]);return i};var _={},t={2:0};__webpack_require__.e=function(e){function onScriptComplete(){o.onerror=o.onload=null,clearTimeout(c);var r=t[e];0!==r&&(r&&r[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}var r=t[e];if(0===r)return new Promise(function(e){e()});if(r)return r[2];var _=new Promise(function(_,n){r=t[e]=[_,n]});r[2]=_;var n=document.getElementsByTagName("head")[0],o=document.createElement("script");o.type="text/javascript",o.charset="utf-8",o.async=!0,o.timeout=12e4,__webpack_require__.nc&&o.setAttribute("nonce",__webpack_require__.nc),o.src=__webpack_require__.p+"static/js/"+e+"."+{0:"98c0538b97a360a7756e",1:"503db8fca94fab1c3688"}[e]+".js";var c=setTimeout(onScriptComplete,12e4);return o.onerror=o.onload=onScriptComplete,n.appendChild(o),_},__webpack_require__.m=e,__webpack_require__.c=_,__webpack_require__.d=function(exports,e,r){__webpack_require__.o(exports,e)||Object.defineProperty(exports,e,{configurable:!1,enumerable:!0,get:r})},__webpack_require__.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(r,"a",r),r},__webpack_require__.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},__webpack_require__.p="/",__webpack_require__.oe=function(e){throw console.error(e),e}}([]);
|
||||
//# sourceMappingURL=manifest.74d953fdc11832c5137c.js.map
|
||||
!function(e){function __webpack_require__(r){if(_[r])return _[r].exports;var t=_[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,__webpack_require__),t.l=!0,t.exports}var r=window.webpackJsonp;window.webpackJsonp=function(_,n,o){for(var c,a,i,u=0,p=[];u<_.length;u++)a=_[u],t[a]&&p.push(t[a][0]),t[a]=0;for(c in n)Object.prototype.hasOwnProperty.call(n,c)&&(e[c]=n[c]);for(r&&r(_,n,o);p.length;)p.shift()();if(o)for(u=0;u<o.length;u++)i=__webpack_require__(__webpack_require__.s=o[u]);return i};var _={},t={2:0};__webpack_require__.e=function(e){function onScriptComplete(){o.onerror=o.onload=null,clearTimeout(c);var r=t[e];0!==r&&(r&&r[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}var r=t[e];if(0===r)return new Promise(function(e){e()});if(r)return r[2];var _=new Promise(function(_,n){r=t[e]=[_,n]});r[2]=_;var n=document.getElementsByTagName("head")[0],o=document.createElement("script");o.type="text/javascript",o.charset="utf-8",o.async=!0,o.timeout=12e4,__webpack_require__.nc&&o.setAttribute("nonce",__webpack_require__.nc),o.src=__webpack_require__.p+"static/js/"+e+"."+{0:"fd6fd2c2da583dfd7fae",1:"9b1a548547dba98d9234"}[e]+".js";var c=setTimeout(onScriptComplete,12e4);return o.onerror=o.onload=onScriptComplete,n.appendChild(o),_},__webpack_require__.m=e,__webpack_require__.c=_,__webpack_require__.d=function(exports,e,r){__webpack_require__.o(exports,e)||Object.defineProperty(exports,e,{configurable:!1,enumerable:!0,get:r})},__webpack_require__.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(r,"a",r),r},__webpack_require__.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},__webpack_require__.p="/",__webpack_require__.oe=function(e){throw console.error(e),e}}([]);
|
||||
//# sourceMappingURL=manifest.94a3286175434e76ef85.js.map
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
51
build/html/static/js/vendor.fd6fd2c2da583dfd7fae.js
Normal file
51
build/html/static/js/vendor.fd6fd2c2da583dfd7fae.js
Normal file
File diff suppressed because one or more lines are too long
1
build/html/static/js/vendor.fd6fd2c2da583dfd7fae.js.map
Normal file
1
build/html/static/js/vendor.fd6fd2c2da583dfd7fae.js.map
Normal file
File diff suppressed because one or more lines are too long
@ -16,7 +16,7 @@ if "%GOPATH%"=="" (
|
||||
set PRE_DIR=%cd%
|
||||
|
||||
@rem version name
|
||||
set VERSION_NAME=tank-1.0.4
|
||||
set VERSION_NAME=tank-1.0.5
|
||||
|
||||
cd %GOPATH%
|
||||
|
||||
|
@ -8,7 +8,7 @@ fi
|
||||
|
||||
PRE_DIR=$(pwd)
|
||||
|
||||
VERSION_NAME=tank-1.0.4
|
||||
VERSION_NAME=tank-1.0.5
|
||||
FINAL_NAME=$VERSION_NAME.linux-amd64.tar.gz
|
||||
|
||||
cd $GOPATH
|
||||
|
@ -24,7 +24,7 @@ services:
|
||||
# 蓝眼云盘的镜像信息
|
||||
# 依赖 mysql:5.7 的镜像
|
||||
tank:
|
||||
image: eyeblue/tank:1.0.3
|
||||
image: eyeblue/tank:1.0.5
|
||||
depends_on:
|
||||
- db
|
||||
ports:
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
"regexp"
|
||||
"strconv"
|
||||
"time"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type AlienController struct {
|
||||
@ -52,6 +53,7 @@ func (this *AlienController) RegisterRoutes() map[string]func(writer http.Respon
|
||||
routeMap["/api/alien/fetch/download/token"] = this.Wrap(this.FetchDownloadToken, USER_ROLE_GUEST)
|
||||
routeMap["/api/alien/confirm"] = this.Wrap(this.Confirm, USER_ROLE_GUEST)
|
||||
routeMap["/api/alien/upload"] = this.Wrap(this.Upload, USER_ROLE_GUEST)
|
||||
routeMap["/api/alien/crawl"] = this.Wrap(this.Crawl, USER_ROLE_GUEST)
|
||||
|
||||
return routeMap
|
||||
}
|
||||
@ -243,6 +245,45 @@ func (this *AlienController) Upload(writer http.ResponseWriter, request *http.Re
|
||||
return this.Success(matter)
|
||||
}
|
||||
|
||||
|
||||
//给一个指定的url,从该url中去拉取文件回来。
|
||||
func (this *AlienController) Crawl(writer http.ResponseWriter, request *http.Request) *WebResult {
|
||||
//允许跨域请求。
|
||||
this.allowCORS(writer)
|
||||
if request.Method == "OPTIONS" {
|
||||
return this.Success("OK")
|
||||
}
|
||||
|
||||
uploadTokenUuid := request.FormValue("uploadTokenUuid")
|
||||
if uploadTokenUuid == "" {
|
||||
panic("uploadTokenUuid必填")
|
||||
}
|
||||
|
||||
uploadToken := this.uploadTokenDao.FindByUuid(uploadTokenUuid)
|
||||
if uploadToken == nil {
|
||||
panic("uploadTokenUuid无效")
|
||||
}
|
||||
|
||||
if uploadToken.ExpireTime.Before(time.Now()) {
|
||||
panic("uploadToken已失效")
|
||||
}
|
||||
|
||||
user := this.userDao.CheckByUuid(uploadToken.UserUuid)
|
||||
|
||||
url := request.FormValue("url")
|
||||
if url == "" || (!strings.HasPrefix(url, "http://") && !strings.HasPrefix(url, "https://")) {
|
||||
panic("资源url必填,并且应该以http://或者https://开头")
|
||||
}
|
||||
|
||||
matter := this.matterService.Crawl(url, uploadToken.Filename, user, uploadToken.FolderUuid, uploadToken.Privacy)
|
||||
|
||||
//更新这个uploadToken的信息.
|
||||
uploadToken.ExpireTime = time.Now()
|
||||
this.uploadTokenDao.Save(uploadToken)
|
||||
|
||||
return this.Success(matter)
|
||||
}
|
||||
|
||||
//系统中的用户x要获取一个DownloadToken,用于提供给x信任的用户下载文件。
|
||||
func (this *AlienController) FetchDownloadToken(writer http.ResponseWriter, request *http.Request) *WebResult {
|
||||
|
||||
|
@ -20,7 +20,7 @@ const (
|
||||
TABLE_PREFIX = "tank10_"
|
||||
|
||||
//当前版本
|
||||
VERSION = "1.0.4"
|
||||
VERSION = "1.0.5"
|
||||
)
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user