diff options
| author | Chris Lu <chris.lu@gmail.com> | 2016-06-02 18:09:14 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2016-06-02 18:09:14 -0700 |
| commit | 5ce6bbf07672bf3f3c8d26cd2ce0e3e853a47c44 (patch) | |
| tree | 2e4dd2ad0a618ab2b7cdebcdb9c503526c31e2e8 /weed/server/filer_server.go | |
| parent | caeffa3998adc060fa66c4cd77af971ff2d26c57 (diff) | |
| download | seaweedfs-5ce6bbf07672bf3f3c8d26cd2ce0e3e853a47c44.tar.xz seaweedfs-5ce6bbf07672bf3f3c8d26cd2ce0e3e853a47c44.zip | |
directory structure change to work with glide
glide has its own requirements. My previous workaround caused me some
code checkin errors. Need to fix this.
Diffstat (limited to 'weed/server/filer_server.go')
| -rw-r--r-- | weed/server/filer_server.go | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/weed/server/filer_server.go b/weed/server/filer_server.go new file mode 100644 index 000000000..ee7eaf886 --- /dev/null +++ b/weed/server/filer_server.go @@ -0,0 +1,67 @@ +package weed_server + +import ( + "net/http" + "strconv" + + "github.com/chrislusf/seaweedfs/weed/filer" + "github.com/chrislusf/seaweedfs/weed/filer/cassandra_store" + "github.com/chrislusf/seaweedfs/weed/filer/embedded_filer" + "github.com/chrislusf/seaweedfs/weed/filer/flat_namespace" + "github.com/chrislusf/seaweedfs/weed/filer/redis_store" + "github.com/chrislusf/seaweedfs/weed/glog" + "github.com/chrislusf/seaweedfs/weed/security" +) + +type FilerServer struct { + port string + master string + collection string + defaultReplication string + redirectOnRead bool + disableDirListing bool + secret security.Secret + filer filer.Filer +} + +func NewFilerServer(r *http.ServeMux, ip string, port int, master string, dir string, collection string, + replication string, redirectOnRead bool, disableDirListing bool, + secret string, + cassandra_server string, cassandra_keyspace string, + redis_server string, redis_password string, redis_database int, +) (fs *FilerServer, err error) { + fs = &FilerServer{ + master: master, + collection: collection, + defaultReplication: replication, + redirectOnRead: redirectOnRead, + disableDirListing: disableDirListing, + port: ip + ":" + strconv.Itoa(port), + } + + if cassandra_server != "" { + cassandra_store, err := cassandra_store.NewCassandraStore(cassandra_keyspace, cassandra_server) + if err != nil { + glog.Fatalf("Can not connect to cassandra server %s with keyspace %s: %v", cassandra_server, cassandra_keyspace, err) + } + fs.filer = flat_namespace.NewFlatNamespaceFiler(master, cassandra_store) + } else if redis_server != "" { + redis_store := redis_store.NewRedisStore(redis_server, redis_password, redis_database) + fs.filer = flat_namespace.NewFlatNamespaceFiler(master, redis_store) + } else { + if fs.filer, err = embedded_filer.NewFilerEmbedded(master, dir); err != nil { + glog.Fatalf("Can not start filer in dir %s : %v", dir, err) + return + } + + r.HandleFunc("/admin/mv", fs.moveHandler) + } + + r.HandleFunc("/", fs.filerHandler) + + return fs, nil +} + +func (fs *FilerServer) jwt(fileId string) security.EncodedJwt { + return security.GenJwt(fs.secret, fileId) +} |
