@@ -37,7 +37,6 @@ import (
37
37
"github.com/astaxie/beego/httplib"
38
38
mapset "github.com/deckarep/golang-set"
39
39
_ "github.com/eventials/go-tus"
40
- "github.com/garyburd/redigo/redis"
41
40
jsoniter "github.com/json-iterator/go"
42
41
"github.com/nfnt/resize"
43
42
"github.com/radovskyb/watcher"
@@ -161,7 +160,6 @@ const (
161
160
"default_scene": "default",
162
161
"是否显示目录": "默认显示,方便调试用,上线时请关闭",
163
162
"show_dir": true,
164
- "redis配置": "用于保存文件元信息",
165
163
"邮件配置": "",
166
164
"mail": {
167
165
@@ -186,8 +184,6 @@ const (
186
184
"enable_migrate": false,
187
185
"文件是否去重": "默认去重",
188
186
"enable_distinct_file": true,
189
- "图片是否缩放": "默认是",
190
- "enable_image_resize": true,
191
187
"是否开启跨站访问": "默认开启",
192
188
"enable_cross_origin": true,
193
189
"是否开启Google认证,实现安全的上传、下载": "默认不开启",
@@ -222,19 +218,8 @@ type Server struct {
222
218
lockMap * goutil.CommonMap
223
219
sceneMap * goutil.CommonMap
224
220
searchMap * goutil.CommonMap
225
- rp * redis.Pool
226
221
curDate string
227
222
host string
228
- routers map [* regexp.Regexp ]func (http.ResponseWriter , * http.Request )
229
- }
230
- type Redis struct {
231
- Address string `json:"address"`
232
- Pwd string `json:"pwd"`
233
- MaxIdle int `json:"maxIdle"`
234
- MaxActive int `json:"maxActive"`
235
- IdleTimeout int `json:"idleTimeout"`
236
- ConnectTimeout int `json:"connectTimeout"`
237
- DB int `json:"db"`
238
223
}
239
224
type FileInfo struct {
240
225
Name string `json:"name"`
@@ -317,7 +302,6 @@ type GloablConfig struct {
317
302
EnableMigrate bool `json:"enable_migrate"`
318
303
EnableDistinctFile bool `json:"enable_distinct_file"`
319
304
ReadOnly bool `json:"read_only"`
320
- EnableImageResize bool `json:"enable_image_resize"`
321
305
EnableCrossOrigin bool `json:"enable_cross_origin"`
322
306
EnableGoogleAuth bool `json:"enable_google_auth"`
323
307
AuthUrl string `json:"auth_url"`
@@ -338,8 +322,6 @@ type GloablConfig struct {
338
322
RetryCount int `json:"retry_count"`
339
323
SyncDelay int64 `json:"sync_delay"`
340
324
WatchChanSize int `json:"watch_chan_size"`
341
- Redis Redis `json:"redis"`
342
- EnableRedis bool `json:"enable_redis"`
343
325
}
344
326
type FileInfoResult struct {
345
327
Name string `json:"name"`
@@ -370,7 +352,6 @@ func NewServer() *Server {
370
352
queueFileLog : make (chan * FileLog , CONST_QUEUE_SIZE ),
371
353
queueUpload : make (chan WrapReqResp , 100 ),
372
354
sumMap : goutil .NewCommonMap (365 * 3 ),
373
- routers : make (map [* regexp.Regexp ]func (http.ResponseWriter , * http.Request )),
374
355
}
375
356
376
357
defaultTransport := & http.Transport {
@@ -506,10 +487,6 @@ func (this *Server) BackUpMetaDataByDate(date string) {
506
487
if _ , err = fileMeta .WriteString (msg ); err != nil {
507
488
log .Error (err )
508
489
}
509
- if Config ().EnableRedis {
510
- this .SaveFileInfoToRedis (fileInfo .Md5 , & fileInfo )
511
- this .SaveFileInfoToRedis (this .util .MD5 (fileInfo .Path + "/" + name ), & fileInfo )
512
- }
513
490
msg = fmt .Sprintf ("%s|%d|%d|%s\n " , fileInfo .Md5 , fileInfo .Size , fileInfo .TimeStamp , fileInfo .Path + "/" + name )
514
491
if _ , err = fileLog .WriteString (msg ); err != nil {
515
492
log .Error (err )
@@ -1242,9 +1219,7 @@ func (this *Server) DownloadNormalFileByURI(w http.ResponseWriter, r *http.Reque
1242
1219
}
1243
1220
fullpath , _ := this .GetFilePathFromRequest (w , r )
1244
1221
if imgWidth != 0 || imgHeight != 0 {
1245
- if Config ().EnableImageResize {
1246
- this .ResizeImage (w , fullpath , uint (imgWidth ), uint (imgHeight ))
1247
- }
1222
+ this .ResizeImage (w , fullpath , uint (imgWidth ), uint (imgHeight ))
1248
1223
return true , nil
1249
1224
}
1250
1225
staticHandler .ServeHTTP (w , r )
@@ -1379,25 +1354,11 @@ func (this *Server) ResizeImageByBytes(w http.ResponseWriter, data []byte, width
1379
1354
}
1380
1355
func (this * Server ) ResizeImage (w http.ResponseWriter , fullpath string , width , height uint ) {
1381
1356
var (
1382
- img image.Image
1383
- err error
1384
- imgType string
1385
- file * os.File
1386
- smallFile * os.File
1387
- resizeFileName string
1388
- resizePath string
1357
+ img image.Image
1358
+ err error
1359
+ imgType string
1360
+ file * os.File
1389
1361
)
1390
- resizePath = path .Dir (fullpath )
1391
- resizeFileName = "cache_" + this .util .MD5 (fmt .Sprintf ("%s?w=%d&h=%d" , fullpath , width , height ))
1392
- resizePath = fmt .Sprintf ("%s/%s" , resizePath , resizeFileName )
1393
- if this .util .IsExist (resizePath ) {
1394
- if smallFile , err = os .Open (resizePath ); err != nil {
1395
- log .Error (err )
1396
- }
1397
- defer smallFile .Close ()
1398
- io .Copy (w , smallFile )
1399
- return
1400
- }
1401
1362
file , err = os .Open (fullpath )
1402
1363
if err != nil {
1403
1364
log .Error (err )
@@ -1408,24 +1369,16 @@ func (this *Server) ResizeImage(w http.ResponseWriter, fullpath string, width, h
1408
1369
log .Error (err )
1409
1370
return
1410
1371
}
1411
- defer file .Close ()
1412
- if smallFile , err = os .Create (resizePath ); err != nil {
1413
- log .Error (err )
1414
- return
1415
- }
1416
- defer smallFile .Close ()
1372
+ file .Close ()
1417
1373
img = resize .Resize (width , height , img , resize .Lanczos3 )
1418
1374
if imgType == "jpg" || imgType == "jpeg" {
1419
- jpeg .Encode (smallFile , img , nil )
1375
+ jpeg .Encode (w , img , nil )
1420
1376
} else if imgType == "png" {
1421
- png .Encode (smallFile , img )
1377
+ png .Encode (w , img )
1422
1378
} else {
1423
1379
file .Seek (0 , 0 )
1424
1380
io .Copy (w , file )
1425
- return
1426
1381
}
1427
- smallFile .Seek (0 , 0 )
1428
- io .Copy (w , smallFile )
1429
1382
}
1430
1383
func (this * Server ) GetServerURI (r * http.Request ) string {
1431
1384
return fmt .Sprintf ("http://%s/" , r .Host )
@@ -1826,28 +1779,12 @@ func (this *Server) Sync(w http.ResponseWriter, r *http.Request) {
1826
1779
func (this * Server ) IsExistFromLevelDB (key string , db * leveldb.DB ) (bool , error ) {
1827
1780
return db .Has ([]byte (key ), nil )
1828
1781
}
1829
- func (this * Server ) redisDo (action string , args ... interface {}) (reply interface {}, err error ) {
1830
- c := this .rp .Get ()
1831
- defer c .Close ()
1832
- return c .Do (action , args ... )
1833
- }
1834
1782
func (this * Server ) GetFileInfoFromLevelDB (key string ) (* FileInfo , error ) {
1835
1783
var (
1836
1784
err error
1837
1785
data []byte
1838
1786
fileInfo FileInfo
1839
- fiJson string
1840
1787
)
1841
- if Config ().EnableRedis {
1842
- if fiJson , err = redis .String (this .redisDo ("GET" , key )); err != nil {
1843
- return nil , err
1844
- } else {
1845
- if err = json .Unmarshal ([]byte (fiJson ), & fileInfo ); err != nil {
1846
- return nil , err
1847
- }
1848
- return & fileInfo , nil
1849
- }
1850
- }
1851
1788
if data , err = this .ldb .Get ([]byte (key ), nil ); err != nil {
1852
1789
return nil , err
1853
1790
}
@@ -1889,19 +1826,6 @@ func (this *Server) RemoveKeyFromLevelDB(key string, db *leveldb.DB) error {
1889
1826
err = db .Delete ([]byte (key ), nil )
1890
1827
return err
1891
1828
}
1892
- func (this * Server ) SaveFileInfoToRedis (key string , fileInfo * FileInfo ) (* FileInfo , error ) {
1893
- var (
1894
- err error
1895
- data []byte
1896
- )
1897
- if data , err = json .Marshal (fileInfo ); err != nil {
1898
- return fileInfo , err
1899
- }
1900
- if _ , err = this .redisDo ("SET" , key , string (data )); err != nil {
1901
- return nil , err
1902
- }
1903
- return fileInfo , nil
1904
- }
1905
1829
func (this * Server ) SaveFileInfoToLevelDB (key string , fileInfo * FileInfo , db * leveldb.DB ) (* FileInfo , error ) {
1906
1830
var (
1907
1831
err error
@@ -1921,11 +1845,6 @@ func (this *Server) SaveFileInfoToLevelDB(key string, fileInfo *FileInfo, db *le
1921
1845
logKey := fmt .Sprintf ("%s_%s_%s" , logDate , CONST_FILE_Md5_FILE_NAME , fileInfo .Md5 )
1922
1846
this .logDB .Put ([]byte (logKey ), data , nil )
1923
1847
}
1924
- if Config ().EnableRedis && db == this .ldb {
1925
- if _ , err = this .redisDo ("SET" , key , string (data )); err != nil {
1926
- log .Error (err )
1927
- }
1928
- }
1929
1848
return fileInfo , nil
1930
1849
}
1931
1850
func (this * Server ) IsPeer (r * http.Request ) bool {
@@ -2462,7 +2381,6 @@ func (this *Server) Upload(w http.ResponseWriter, r *http.Request) {
2462
2381
}
2463
2382
}
2464
2383
fn = folder + "/" + this .util .GetUUID ()
2465
-
2466
2384
fpTmp , err = os .OpenFile (fn , os .O_RDWR | os .O_CREATE , 0777 )
2467
2385
if err != nil {
2468
2386
log .Error (err )
@@ -2485,6 +2403,8 @@ func (this *Server) Upload(w http.ResponseWriter, r *http.Request) {
2485
2403
fpBody .Close ()
2486
2404
os .Remove (fn )
2487
2405
}()
2406
+ fpBody , err = os .Open (fn )
2407
+ r .Body = fpBody
2488
2408
done := make (chan bool , 1 )
2489
2409
this .queueUpload <- WrapReqResp {& w , r , done }
2490
2410
<- done
@@ -4264,60 +4184,6 @@ func (this *Server) FormatStatInfo() {
4264
4184
this .RepairStatByDate (this .util .GetToDay ())
4265
4185
}
4266
4186
}
4267
-
4268
- func (this * Server ) initRedis () * redis.Pool {
4269
-
4270
- pool := & redis.Pool {
4271
- MaxIdle : Config ().Redis .MaxIdle ,
4272
- MaxActive : Config ().Redis .MaxActive ,
4273
- IdleTimeout : time .Duration (Config ().Redis .IdleTimeout ) * time .Second ,
4274
- Wait : true ,
4275
- Dial : func () (redis.Conn , error ) {
4276
- conn , err := redis .Dial ("tcp" , Config ().Redis .Address ,
4277
- redis .DialConnectTimeout (time .Duration (Config ().Redis .ConnectTimeout )* time .Second ),
4278
- redis .DialPassword (Config ().Redis .Pwd ),
4279
- redis .DialDatabase (Config ().Redis .DB ),
4280
- )
4281
- if err != nil {
4282
- fmt .Println (err )
4283
- log .Error (err )
4284
- }
4285
- return conn , err
4286
-
4287
- },
4288
- TestOnBorrow : func (c redis.Conn , t time.Time ) error {
4289
- _ , err := c .Do ("ping" )
4290
- if err != nil {
4291
- log .Error (err )
4292
- return err
4293
- }
4294
- return err
4295
- },
4296
- }
4297
- return pool
4298
- }
4299
- func (this * Server ) Routing (w http.ResponseWriter , r * http.Request ) {
4300
- realPath := r .URL .Path
4301
- for re , service := range this .routers {
4302
- if m := re .FindStringSubmatch (realPath ); m != nil {
4303
- //p := re.String()
4304
- //if strings.Index(p, STATIC_DIR_NAME) != -1 {
4305
- // p = p[0 : strings.LastIndex(p, "/")+1]
4306
- // p = strings.Replace(realPath, p, "", 1) //realPath /group1/static/uppy.html
4307
- // if b, e := Asset(p); e == nil { // p uppy.html
4308
- // w.Write(b)
4309
- // return
4310
- // }
4311
- //}
4312
- service (w , r )
4313
- return
4314
- }
4315
- }
4316
- this .Download (w , r )
4317
- }
4318
- func (this * Server ) RegisterRouting (pattern * regexp.Regexp , handler func (http.ResponseWriter , * http.Request )) {
4319
- this .routers [pattern ] = handler
4320
- }
4321
4187
func (this * Server ) initComponent (isReload bool ) {
4322
4188
var (
4323
4189
ip string
@@ -4363,9 +4229,6 @@ func (this *Server) initComponent(isReload bool) {
4363
4229
this .sceneMap .Put (kv [0 ], kv [1 ])
4364
4230
}
4365
4231
}
4366
- if Config ().EnableRedis {
4367
- this .rp = this .initRedis ()
4368
- }
4369
4232
if Config ().ReadTimeout == 0 {
4370
4233
Config ().ReadTimeout = 60 * 10
4371
4234
}
@@ -4472,8 +4335,10 @@ func (this *Server) Start() {
4472
4335
}()
4473
4336
uploadPage := "upload.html"
4474
4337
if groupRoute == "" {
4338
+ http .HandleFunc (fmt .Sprintf ("%s" , "/" ), this .Download )
4475
4339
http .HandleFunc (fmt .Sprintf ("/%s" , uploadPage ), this .Index )
4476
4340
} else {
4341
+ http .HandleFunc (fmt .Sprintf ("%s" , "/" ), this .Download )
4477
4342
http .HandleFunc (fmt .Sprintf ("%s" , groupRoute ), this .Download )
4478
4343
http .HandleFunc (fmt .Sprintf ("%s/%s" , groupRoute , uploadPage ), this .Index )
4479
4344
}
@@ -4499,9 +4364,7 @@ func (this *Server) Start() {
4499
4364
http .HandleFunc (fmt .Sprintf ("%s/receive_md5s" , groupRoute ), this .ReceiveMd5s )
4500
4365
http .HandleFunc (fmt .Sprintf ("%s/gen_google_secret" , groupRoute ), this .GenGoogleSecret )
4501
4366
http .HandleFunc (fmt .Sprintf ("%s/gen_google_code" , groupRoute ), this .GenGoogleCode )
4502
- http .HandleFunc (fmt .Sprintf ("%s" , "/" ), this .Routing ) //default handler
4503
- http .Handle (fmt .Sprintf ("%s/%s/" , groupRoute , STATIC_DIR_NAME ), http .StripPrefix (fmt .Sprintf ("%s/%s/" , groupRoute , STATIC_DIR_NAME ), http .FileServer (http .Dir (STATIC_DIR_NAME ))))
4504
- //server.RegisterRouting(regexp.MustCompile(fmt.Sprintf("%s/%s/.*", groupRoute, STATIC_DIR_NAME)), http.FileServer(http.Dir(STATIC_DIR_NAME)).ServeHTTP)
4367
+ http .Handle (fmt .Sprintf ("%s/static/" , groupRoute ), http .StripPrefix (fmt .Sprintf ("%s/static/" , groupRoute ), http .FileServer (http .Dir ("./static" ))))
4505
4368
http .HandleFunc ("/" + Config ().Group + "/" , this .Download )
4506
4369
fmt .Println ("Listen on " + Config ().Addr )
4507
4370
if Config ().EnableHttps {
0 commit comments