Remoto - VFS
|
The VFS_curlauth authenticator performs a POST request to a url for authentication. More...
#include <VFS_curlauth.h>
Public Slots | |
void | replyFinished (QNetworkReply *reply) |
A network request has completed. More... | |
void | sslErrors (QNetworkReply *reply, QList< QSslError > errors) |
An ssl error has occurred... More... | |
![]() | |
virtual void | executeRequest (VFS_request *t) |
Execute a VFS_request. More... | |
![]() | |
virtual void | applyDiff (VFS_request *r) |
Apply a diff received via subscription. More... | |
virtual void | executeRequest (VFS_request *t) |
Based on the VFS_request::requestType, execute the function associated with an operation. More... | |
void | notifySubscribers (VFS_node *origin, VFS_request *t) |
Propagate a diff to subscribers. More... | |
virtual void | receiveResponse (VFS_request *t) |
Once a VFS_request has been completed, a response will be issued back to its _origin. More... | |
void | remove (bool andDelete) |
Remove a child node. More... | |
virtual void | remove (VFS_node *node=nullptr, QString *name=nullptr, QString user="server") |
Remove a child node from this node. More... | |
virtual void | subtreeRequest (VFS_request *t) |
find() the target of a VFS_request, and execute the request More... | |
virtual void | unsubscribeAll (VFS_node *n) |
Remove all references to a subscriber from this node. More... | |
Public Member Functions | |
Q_INVOKABLE | VFS_curlauth (QString url, QString token="") |
virtual | ~VFS_curlauth () |
![]() | |
VFS_auth () | |
virtual | ~VFS_auth () |
virtual VFS_node * | find (VFS_request *r) |
Find a node using a VFS_request. More... | |
virtual bool | isContainer () |
A VFS_auth node cannot contain children. More... | |
![]() | |
Q_INVOKABLE | VFS_node () |
The VFS_node constructor will add its instance to the VFS_node::__allNodes global node registry, observing thread safety rules. More... | |
virtual | ~VFS_node () |
VFS_node destructor. More... | |
virtual VFS_node * | append (QString name, VFS_node *node, bool containerCheck=true, QString user="server") |
Append a VFS_node as a child of this node. More... | |
QString | className () |
Return the class name of a node. More... | |
virtual VFS_request * | createRequest (VFS_request::requestType type, QString path, QString user="unknown", QJsonDocument data=QJsonDocument(), QJsonObject metadata=QJsonObject(), bool dontDelete=false) |
Create a new VFS_request with this object as _origin. More... | |
VFS_node * | find (QString path) |
Find a node by string path. More... | |
VFS_node * | findChildWithName (QString name) |
Check if a child with a given name exists. More... | |
virtual VFS_node * | mount () |
Mount this node. More... | |
virtual QString | reportDetails () |
Additional details for a generated report. More... | |
QString | uniqueChildName (QString name) |
Generate a unique child name. More... | |
virtual VFS_node * | unmount () |
Unmount this node. More... | |
virtual bool | validChildName (QString name) |
Check if a node name is valid. More... | |
Protected Member Functions | |
virtual void | ls (VFS_request *r) |
List the users available for this auth method. More... | |
virtual void | read (VFS_request *r) |
Perform an authentication request by read()ing from this node, which will curl the _url via http POST. More... | |
![]() | |
virtual QByteArray | icon () |
Return the users icon from VFS_icons. More... | |
![]() | |
virtual void | aclDefaults (VFS_request *r) |
Return default values and features associated wth this node. More... | |
void | addACLDefault (QJsonObject &acl, bool value, QString description="") |
Add a default value to the acl object. More... | |
void | addACLFeature (QJsonObject &acl, QString feature, bool value, QString description="") |
Add a feature to the acl object. More... | |
void | addACLFeatureGroup (QJsonObject &acl, QString feature, QString group, bool value) |
Add a feature group to the acl object. More... | |
void | addACLFeatureUser (QJsonObject &acl, QString feature, QString user, bool value) |
Add a feature user to the acl object. More... | |
void | addACLGroup (QJsonObject &acl, QString group, bool value) |
Add a group to the acl object. More... | |
void | addACLUser (QJsonObject &acl, QString user, bool value) |
Add a user to the acl object. More... | |
virtual void | issueRequest (VFS_node *target, VFS_request *t) |
Issue a VFS_request to its target. More... | |
virtual void | issueRequest (VFS_request *t) |
A convenience function. More... | |
virtual void | issueResponse (VFS_request *t) |
Once a request has been completed, issue a response. More... | |
virtual void | metadata (VFS_request *r) |
Fetch the metadata of this node. More... | |
virtual void | releaseLock (VFS_request *r) |
Release a lock on this node. More... | |
virtual void | report (VFS_request *r) |
Report debugging information about the current state of this node. More... | |
virtual void | requestLock (VFS_request *r) |
Request a lock on this node. More... | |
virtual void | rm (VFS_request *r) |
Remove a child entry from a node, or the node itself. More... | |
virtual void | submit (VFS_request *r) |
Submit a diff to a node. More... | |
virtual void | subscribe (VFS_request *r) |
Add an entry to this node's _subscription list. More... | |
virtual void | unsubscribe (VFS_request *r) |
Remove an entry from this node's _subscription list. More... | |
virtual void | unsubscribePath (QString path) |
Unsubscribe all references to a subpath. More... | |
virtual void | write (VFS_request *r) |
Write data to this node. More... | |
Private Attributes | |
QNetworkAccessManager | _manager |
The curl connection manager. More... | |
QMap< QNetworkReply *, VFS_request * > | _requests |
A map of outstanding VFS_request objects to their QNetworkReply objects. More... | |
QString | _token |
A token sent when requesting a listing from a remote url. More... | |
QUrl | _url |
The url to curl. More... | |
Additional Inherited Members | |
![]() | |
void | diff (VFS_node *origin, VFS_request *t) |
Emit a diff, which will trigger notifySubscribers() for a mounted node. More... | |
void | finished (bool andDelete=false) |
Emitted if a thread fails to create its node, or a node is rm()'d, or any other reason a node has completed its lifecycle. It is deleted if andDelete==true . More... | |
void | mounted () |
Emitted when a node is mount()ed. More... | |
void | unmounted (VFS_node *self) |
Emitted when a node is unmount()ed. More... | |
![]() | |
static bool | __isNode (VFS_node *) |
Check to see if a node is in the global registry. More... | |
static QString | code (QString nodename, QString libname, QString &error) |
Fetch code or any other resource from a node. More... | |
![]() | |
VFS_children | _children |
This node's children. More... | |
QMutex | _lock |
A recursive mutex that is local to this node. More... | |
VFS_subscriptionType | _subscribers |
This node's subscribers. These subscribers will receive diff notifications. More... | |
The VFS_curlauth authenticator performs a POST request to a url for authentication.
VFS_curlauth will post username
and password
to the _url.
The response from that url will need to populate the _user and _success fields of a VFS_request.
Definition at line 11 of file VFS_curlauth.h.
|
explicit |
url | The url to curl |
token | An (optional) token string |
Auth requests will perform a POST request to the specified url. The request is performed asynchronously without blocking.
The token, if present, will be sent during ls() commands to the remote url.
Definition at line 27 of file VFS_curlauth.cpp.
|
virtual |
Definition at line 43 of file VFS_curlauth.cpp.
|
protectedvirtual |
List the users available for this auth method.
r | The VFS_request object |
Reimplemented from VFS_node.
Definition at line 113 of file VFS_curlauth.cpp.
|
protectedvirtual |
Perform an authentication request by read()ing from this node, which will curl the _url via http POST.
r | The VFS_request object |
When a user requests authentication against this node, an http request is sent to the _url with the credentials provided in the metadata as POST data.
Credentials must be in the VFS_request::_data object:
d["username"] = "username"; d["password"] = "password";
Because this is an asynchronous non-blocking request, this method will set r->_isCallback=true
and call issueResponse() when the http request is complete.
The results of the http request will be parsed as json:
A null
or unparseable json response will result in authorization denied.
Reimplemented from VFS_node.
Definition at line 80 of file VFS_curlauth.cpp.
|
slot |
A network request has completed.
reply | The reply from a network request |
This method will call VFS_node::issueResponse() on the VFS_request or generate an error.
Definition at line 141 of file VFS_curlauth.cpp.
|
slot |
An ssl error has occurred...
show an error and call replyFinished()
reply | The reply from a network request |
errors | The list of ssl errors to display |
Definition at line 251 of file VFS_curlauth.cpp.
|
private |
The curl connection manager.
Definition at line 25 of file VFS_curlauth.h.
|
private |
A map of outstanding VFS_request objects to their QNetworkReply objects.
Definition at line 26 of file VFS_curlauth.h.
|
private |
A token sent when requesting a listing from a remote url.
Definition at line 27 of file VFS_curlauth.h.
|
private |
The url to curl.
Definition at line 24 of file VFS_curlauth.h.