Documentation ¶
Overview ¶
Package filemanager provides a web interface to access your files wherever you are. To use this package as a middleware for your app, you'll need to create a filemanager instance:
m, err := filemanager.New(database, user)
Where 'user' contains the default options for new users. You can just use 'filemanager.DefaultUser' or create yourself a default user:
m, err := filemanager.New(database, filemanager.User{ Admin: false, AllowCommands: false, AllowEdit: true, AllowNew: true, Commands: []string{ "git", }, Rules: []*filemanager.Rule{}, CSS: "", FileSystem: webdav.Dir("/path/to/files"), })
The credentials for the first user are always 'admin' for both the user and the password, and they can be changed later through the settings. The first user is always an Admin and has all of the permissions set to 'true'.
Then, you should set the Prefix URL and the Base URL, using the following functions:
m.SetBaseURL("/") m.SetPrefixURL("/")
The Prefix URL is a part of the path that is already stripped from the r.URL.Path variable before the request arrives to File Manager's handler. This is a function that will rarely be used. You can see one example on Caddy filemanager plugin.
The Base URL is the URL path where you want File Manager to be available in. If you want to be available at the root path, you should call:
m.SetBaseURL("/")
But if you want to access it at '/admin', you would call:
m.SetBaseURL("/admin")
Now, that you already have a File Manager instance created, you just need to add it to your handlers using m.ServeHTTP which is compatible to http.Handler. We also have a m.ServeWithErrorsHTTP that returns the status code and an error.
One simple implementation for this, at port 80, in the root of the domain, would be:
http.ListenAndServe(":80", m)
Index ¶
- Variables
- func RegisterPlugin(name string, plugin Plugin)
- type Command
- type FileManager
- func (m *FileManager) ActivatePlugin(name string, options interface{}) error
- func (m FileManager) RootURL() string
- func (m FileManager) Runner(event string, path string) error
- func (m *FileManager) ServeHTTP(w http.ResponseWriter, r *http.Request)
- func (m *FileManager) SetBaseURL(url string)
- func (m *FileManager) SetPrefixURL(url string)
- type Permission
- type Plugin
- type PluginHandler
- type Regexp
- type RequestContext
- type Rule
- type User
Constants ¶
This section is empty.
Variables ¶
var DefaultUser = User{ AllowCommands: true, AllowEdit: true, AllowNew: true, Permissions: map[string]bool{}, Commands: []string{}, Rules: []*Rule{}, CSS: "", Admin: true, Locale: "en", FileSystem: fileutils.Dir("."), }
DefaultUser is used on New, when no 'base' user is provided.
Functions ¶
func RegisterPlugin ¶ added in v1.0.2
Types ¶
type Command ¶
type Command func(r *http.Request, m *FileManager, u *User) error
Command is a command function.
type FileManager ¶
type FileManager struct { // PrefixURL is a part of the URL that is already trimmed from the request URL before it // arrives to our handlers. It may be useful when using File Manager as a middleware // such as in caddy-filemanager plugin. It is only useful in certain situations. PrefixURL string // BaseURL is the path where the GUI will be accessible. It musn't end with // a trailing slash and mustn't contain PrefixURL, if set. It shouldn't be // edited directly. Use SetBaseURL. BaseURL string // NoAuth disables the authentication. When the authentication is disabled, // there will only exist one user, called "admin". NoAuth bool // The Default User needed to build the New User page. DefaultUser *User // Users is a map with the different configurations for each user. Users map[string]*User // A map of events to a slice of commands. Commands map[string][]string // The options of the plugins that have been plugged into this instance. Plugins map[string]interface{} // contains filtered or unexported fields }
FileManager is a file manager instance. It should be creating using the 'New' function and not directly.
func New ¶
func New(database string, base User) (*FileManager, error)
New creates a new File Manager instance. If 'database' file already exists, it will load the users from there. Otherwise, a new user will be created using the 'base' variable. The 'base' User should not have the Password field hashed.
func (*FileManager) ActivatePlugin ¶ added in v1.0.2
func (m *FileManager) ActivatePlugin(name string, options interface{}) error
ActivatePlugin activates a plugin to a File Manager instance and loads its options from the database.
func (FileManager) RootURL ¶
func (m FileManager) RootURL() string
RootURL returns the actual URL where File Manager interface can be accessed.
func (FileManager) Runner ¶
func (m FileManager) Runner(event string, path string) error
Runner runs the commands for a certain event type.
func (*FileManager) ServeHTTP ¶
func (m *FileManager) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP determines if the request is for this plugin, and if all prerequisites are met. Compatible with http.Handler.
func (*FileManager) SetBaseURL ¶
func (m *FileManager) SetBaseURL(url string)
SetBaseURL updates the baseURL of a File Manager object.
func (*FileManager) SetPrefixURL ¶
func (m *FileManager) SetPrefixURL(url string)
SetPrefixURL updates the prefixURL of a File Manager object.
type Permission ¶ added in v1.0.2
type Plugin ¶
type Plugin struct { JavaScript string CommandEvents []string Permissions []Permission Handler PluginHandler Options interface{} }
type PluginHandler ¶ added in v1.0.2
type PluginHandler interface { // If the Plugin returns (0, nil), the executation of File Manager will procced as usual. // Otherwise it will stop. Before(c *RequestContext, w http.ResponseWriter, r *http.Request) (int, error) After(c *RequestContext, w http.ResponseWriter, r *http.Request) (int, error) }
type Regexp ¶
type Regexp struct { Raw string `json:"raw"` // contains filtered or unexported fields }
Regexp is a regular expression wrapper around native regexp.
func (*Regexp) MatchString ¶
MatchString checks if this string matches the regular expression.
type RequestContext ¶
type RequestContext struct { *FileManager User *User File *file // On API handlers, Router is the APi handler we want. Router string }
RequestContext contains the needed information to make handlers work.
type Rule ¶
type Rule struct { // Regex indicates if this rule uses Regular Expressions or not. Regex bool `json:"regex"` // Allow indicates if this is an allow rule. Set 'false' to be a disallow rule. Allow bool `json:"allow"` // Path is the corresponding URL path for this rule. Path string `json:"path"` // Regexp is the regular expression. Only use this when 'Regex' was set to true. Regexp *Regexp `json:"regexp"` }
Rule is a dissalow/allow rule.
type User ¶
type User struct { // ID is the required primary key with auto increment0 ID int `storm:"id,increment"` // Username is the user username used to login. Username string `json:"username" storm:"index,unique"` // The hashed password. This never reaches the front-end because it's temporarily // emptied during JSON marshall. Password string `json:"password"` // Tells if this user is an admin. Admin bool `json:"admin"` // FileSystem is the virtual file system the user has access. FileSystem fileutils.Dir `json:"filesystem"` // Rules is an array of access and deny rules. Rules []*Rule `json:"rules"` // Custom styles for this user. CSS string `json:"css"` // Locale is the language of the user. Locale string `json:"locale"` // These indicate if the user can perform certain actions. AllowNew bool `json:"allowNew"` // Create files and folders AllowEdit bool `json:"allowEdit"` // Edit/rename files AllowCommands bool `json:"allowCommands"` // Execute commands Permissions map[string]bool `json:"permissions"` // Permissions added by plugins // Commands is the list of commands the user can execute. Commands []string `json:"commands"` }
User contains the configuration for each user.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
caddy
|
|
filemanager
Package filemanager provides middleware for managing files in a directory when directory path is requested instead of a specific file.
|
Package filemanager provides middleware for managing files in a directory when directory path is requested instead of a specific file. |
cmd
|
|