Browse Source

Ready to release v 1.0.5

master
zicla 7 years ago
parent
commit
9e9e548026
  1. 7
      CHANGELOG
  2. 4
      README.md
  3. 2
      build/html/index.html
  4. 2
      build/html/static/css/app.14041cb0bdf05bb099089674600a3046.css
  5. 10
      build/html/static/js/app.503db8fca94fab1c3688.js
  6. 1
      build/html/static/js/app.503db8fca94fab1c3688.js.map
  7. 10
      build/html/static/js/app.9b1a548547dba98d9234.js
  8. 1
      build/html/static/js/app.9b1a548547dba98d9234.js.map
  9. 4
      build/html/static/js/manifest.94a3286175434e76ef85.js
  10. 2
      build/html/static/js/manifest.94a3286175434e76ef85.js.map
  11. 51
      build/html/static/js/vendor.98c0538b97a360a7756e.js
  12. 1
      build/html/static/js/vendor.98c0538b97a360a7756e.js.map
  13. 51
      build/html/static/js/vendor.fd6fd2c2da583dfd7fae.js
  14. 1
      build/html/static/js/vendor.fd6fd2c2da583dfd7fae.js.map
  15. 2
      build/pack/build.bat
  16. 2
      build/pack/build.sh
  17. 2
      docker-compose.yml
  18. 41
      rest/alien_controller.go
  19. 2
      rest/config.go

7
CHANGELOG

@ -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. 添加了文件分段功能,支持断点续传。

4
README.md

@ -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

2
build/html/index.html

@ -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>

2
build/html/static/css/app.e67bf66a3b64f1b45ec496faae765128.css → build/html/static/css/app.14041cb0bdf05bb099089674600a3046.css

File diff suppressed because one or more lines are too long

10
build/html/static/js/app.503db8fca94fab1c3688.js

File diff suppressed because one or more lines are too long

1
build/html/static/js/app.503db8fca94fab1c3688.js.map

File diff suppressed because one or more lines are too long

10
build/html/static/js/app.9b1a548547dba98d9234.js

File diff suppressed because one or more lines are too long

1
build/html/static/js/app.9b1a548547dba98d9234.js.map

File diff suppressed because one or more lines are too long

4
build/html/static/js/manifest.74d953fdc11832c5137c.js → build/html/static/js/manifest.94a3286175434e76ef85.js

@ -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

2
build/html/static/js/manifest.74d953fdc11832c5137c.js.map → build/html/static/js/manifest.94a3286175434e76ef85.js.map

File diff suppressed because one or more lines are too long

51
build/html/static/js/vendor.98c0538b97a360a7756e.js

File diff suppressed because one or more lines are too long

1
build/html/static/js/vendor.98c0538b97a360a7756e.js.map

File diff suppressed because one or more lines are too long

51
build/html/static/js/vendor.fd6fd2c2da583dfd7fae.js

File diff suppressed because one or more lines are too long

1
build/html/static/js/vendor.fd6fd2c2da583dfd7fae.js.map

File diff suppressed because one or more lines are too long

2
build/pack/build.bat

@ -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%

2
build/pack/build.sh

@ -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

2
docker-compose.yml

@ -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:

41
rest/alien_controller.go

@ -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 {

2
rest/config.go

@ -20,7 +20,7 @@ const (
TABLE_PREFIX = "tank10_"
//当前版本
VERSION = "1.0.4"
VERSION = "1.0.5"
)
/*

Loading…
Cancel
Save