Remoto - VFS: VFS_session Class Reference
Remoto - VFS

The VFS_session object represents a single session. More...

#include <VFS_session.h>

Inheritance diagram for VFS_session:
VFS_node

Public Slots

virtual void applyDiff (VFS_request *r)
 Receive diffs from our subscriptions. More...
 
virtual void receiveResponse (VFS_request *t)
 VFS_sessionManager::receiveResponse. More...
 
- Public Slots inherited from VFS_node
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

 VFS_session (VFS_node *client, VFS_sessionManager *manager, QJsonObject data)
 Construct a new VFS_session from a QJSonObject. More...
 
 VFS_session (VFS_node *client, VFS_sessionManager *manager, QString user, QString type, QString home, QString authpath, QDateTime expires=QDateTime(), QString address="", QJsonObject parameters=QJsonObject(), QString authtoken="")
 Construct a new VFS_session. More...
 
virtual ~VFS_session ()
 
QString authtoken ()
 Return the file component of the _authtoken path. More...
 
QJsonValue fetchSessionValue (QString key)
 Fetch a value from the _sessionData, by key. More...
 
virtual bool isContainer ()
 A VFS_session cannot have children. More...
 
bool isMemberOf (QString group)
 Check if this session's group list includes the specified group. More...
 
bool isMemberOf (QStringList groups)
 Check if this session's group list includes a member of the groups argument. More...
 
virtual QString reportDetails ()
 Report data about a connected client. More...
 
qint64 secondsToExpire ()
 Given the current time, calculate the number of seconds until this session will expire. More...
 
QJsonObject toJson ()
 Return a json object with the salient data from this session. More...
 
- Public Member Functions inherited from VFS_node
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_nodeappend (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_requestcreateRequest (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_nodefind (QString path)
 Find a node by string path. More...
 
virtual VFS_nodefind (VFS_request *r)
 Find a node using a VFS_request. More...
 
VFS_nodefindChildWithName (QString name)
 Check if a child with a given name exists. More...
 
virtual VFS_nodemount ()
 Mount this node. More...
 
QString uniqueChildName (QString name)
 Generate a unique child name. More...
 
virtual VFS_nodeunmount ()
 Unmount this node. More...
 
virtual bool validChildName (QString name)
 Check if a node name is valid. More...
 

Static Public Member Functions

static QJsonValue fetchDefaultSessionValue (QString type, QString key)
 Fetch a session type's default value by key, as registered by registerSessionType() More...
 
static VFS_sessionfetchSession (QString address)
 Try to resolve and cast a string address to a VFS_session. More...
 
static bool registerSessionType (QString type, QJsonObject definition, QJsonObject defaults=QJsonObject())
 Register a new session type by name. More...
 
- Static Public Member Functions inherited from VFS_node
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...
 

Protected Member Functions

virtual QByteArray icon ()
 Return the user icon from VFS_icons. More...
 
virtual void initializeUser (VFS_request *r)
 Check and create session files for a user. More...
 
virtual void read (VFS_request *r)
 Read the session data. More...
 
QJsonObject resolveTokens (QJsonObject _data)
 Resolve the tokens for a session type based on variables gathered in the _tokens object. More...
 
virtual void rm (VFS_request *r)
 Remove (delete) this node, and also the _client associated with it. More...
 
virtual void timerEvent (QTimerEvent *event)
 The timer event used to check if the session is still valid. More...
 
- Protected Member Functions inherited from VFS_node
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 ls (VFS_request *r)
 List the contents of this node. 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 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...
 

Protected Attributes

int timerID
 The ID of the session timer. More...
 
- Protected Attributes inherited from VFS_node
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...
 

Private Member Functions

void dequeueInitializer ()
 Remove the first initializer item from _initializers and call issueRequest(). More...
 

Static Private Member Functions

static void initializeTypes ()
 Initialize the VFS_session::_sessionTypes member. More...
 

Private Attributes

QString _address
 The remote address of the client. More...
 
QString _authpath
 The VFS_auth path that authenticated this session. More...
 
QString _authtoken
 The authtoken VFS path associated with this session, which corresponds to an entry at VFS_sessionManager::_tokendata. More...
 
VFS_node_client
 The client this session is for, which will usually be a subclass of VFS_websocket_client. More...
 
QDateTime _created
 The creation date/time of this session. More...
 
QDateTime _expires
 The Expiration date/time of this session. More...
 
QJsonArray _groups
 The list of groups this user is a member of. More...
 
QString _home
 The VFS path to this user's home directory. More...
 
bool _initialized
 false until initialization is complete More...
 
QQueue< VFS_request * > _initializers
 The list of initialization requests which must be empty for _initialized to become true. More...
 
VFS_sessionManager_manager
 The sessionManager tracking this session. More...
 
QString _realname
 The real name of the user associated with this session. More...
 
QJsonObject _sessionData
 The resolved session data for this user type. More...
 
QJsonObject _tokens
 The tokens available to resolve session values. More...
 
QString _type
 The session or client type. More...
 
quint16 _uidnumber
 The uidnumber of the user associated with this session. More...
 
QString _user
 The username associated with this session. More...
 

Static Private Attributes

static bool _initializedTypes = false
 Whether or not VFS_session static variables have been initialized. More...
 
static QJsonObject _sessionDefaults = QJsonObject()
 The default values, per type, per entry. More...
 
static QJsonObject _sessionTypes = QJsonObject()
 The registered session types. The entries here will be de-tokenized on read() More...
 
static QMutex _sessionTypesLock
 A mutex to protect thread safety during initialization. More...
 

Friends

class VFS_acl
 
class VFS_sessionManager
 

Additional Inherited Members

- Signals inherited from VFS_node
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...
 

Detailed Description

The VFS_session object represents a single session.

A session may represent an actual user or some other logged-in thing, which may be another VFS, as defined by the _type.

Depending on the session type, it may report session data like user preferences, interface state, or per-application settings. Plugins will need to register themselves to a VFS_sessionManager for this to be complete.

Definition at line 13 of file VFS_session.h.

Constructor & Destructor Documentation

◆ VFS_session() [1/2]

VFS_session::VFS_session ( VFS_node client,
VFS_sessionManager manager,
QString  user,
QString  type,
QString  home,
QString  authpath,
QDateTime  expires = QDateTime(),
QString  address = "",
QJsonObject  parameters = QJsonObject(),
QString  authtoken = "" 
)
explicit

Construct a new VFS_session.

Parameters
clientThe VFS_node that represents the client connection.
managerThe VFS_sessionManager that is tracking this session.
userThe username associated with this session.
typeThe client/session type.
homeThe VFS path to the user's home directory.
authpathThe path to the VFS_auth node that authenticated this session
expiresA time in the future for expiration, or a null time which will never expire.
addressThe address of the remote client, used only for reporting
parametersParameters passed from the client during authentication
authtokenThe authtoken to create or update, if present.

A created session should only exist for a fixed amount of time, and then expire. New activity does not reset the expiration... A user will need to need to re-login at some interval.

The constructor will start a timer at an interval of one minute. That timer will check if the current system time is greater than the expiration time, and emit finished() if so.

If an authtoken exists the token data will be deleted later by the VFS_sessionManager::_pruner.

See also
VFS_session::timerEvent()

Definition at line 51 of file VFS_session.cpp.

◆ VFS_session() [2/2]

VFS_session::VFS_session ( VFS_node client,
VFS_sessionManager manager,
QJsonObject  data 
)
explicit

Construct a new VFS_session from a QJSonObject.

Parameters
clientThe VFS_node that represents the client connection.
managerThe VFS_sessionManager that is tracking this session.
dataThe data used to construct this session

This contstructor is used to create sessions transmitted to sub-VFS instances, and is later used for ACLs. Generally a VFS_tcp_export_client will request a session if its VFS_tcp_export_sessionManager doesn't have one registered with a provided ID.

The data parameter should contain:

  • created
  • address
  • user
  • type
  • groups
  • home
  • tokens
  • sessionData

If an expiration is provided it will be ignored, and instead an expiration of approximately 10 minutes will be set.

The constructor will start a timer at an interval of one minute. That timer will check if the current system time is greater than the expiration time, and emit finished() if so.

See also
VFS_session::timerEvent()
VFS_tcp_export_sessionManager

Definition at line 121 of file VFS_session.cpp.

◆ ~VFS_session()

VFS_session::~VFS_session ( )
virtual

Definition at line 160 of file VFS_session.cpp.

Member Function Documentation

◆ applyDiff

void VFS_session::applyDiff ( VFS_request r)
virtualslot

Receive diffs from our subscriptions.

Parameters
rThe VFS_request object

We have subscribed to the nodes/paths registered for the profile type. Here we receive their diffs.

If a diff's data is null, we consider that the deletion of an important session file, and we will kill this session.

Definition at line 824 of file VFS_session.cpp.

◆ authtoken()

QString VFS_session::authtoken ( )

Return the file component of the _authtoken path.

Returns
The authtoken for this session

Definition at line 400 of file VFS_session.cpp.

◆ dequeueInitializer()

void VFS_session::dequeueInitializer ( )
private

Remove the first initializer item from _initializers and call issueRequest().

If this is the last item in the queue, we assume it's the original request from a sessionManager and populate the response data with type-dependent paths for a user session.

For instance, for a session of type "browser":

{
"accepted": true, //for the client to know authentication and authorization are complete
"username": "[username]", //from the credentials
"uidnumber": "[uidnumber]", //from the authentication response
"realname": "[realname]", //from the authentication response, or [username] if missing
"home": "@home@/", //the home folder, which must end with a slash
"layoutsPath": "@home@/layouts/", //alternate layouts for the client, which must end with a slash
"preferencesPath": "@home@/preferences.rfm", //user preferences
"interfacePath": "@home@/layouts/current.rui", //current layout
"settingsPath": "@home@/settings/" //settings root, for per-application settings, which must end with a slash
}

Tokens will have already been replaced with corresponding values from _sessionData.

The VFS_sessionManager (_manager) will add authtoken data to this.

This method will check/create all the paths resolved by the type template.

Definition at line 654 of file VFS_session.cpp.

◆ fetchDefaultSessionValue()

QJsonValue VFS_session::fetchDefaultSessionValue ( QString  type,
QString  key 
)
static

Fetch a session type's default value by key, as registered by registerSessionType()

Parameters
typeThe session type.
keyThe key of the default value being fetched.
Returns
The QJsonValue value.

Definition at line 304 of file VFS_session.cpp.

◆ fetchSession()

VFS_session * VFS_session::fetchSession ( QString  address)
static

Try to resolve and cast a string address to a VFS_session.

Parameters
addressThe string representation of a pointer
Returns
The resolved VFS_session, or nullptr

Definition at line 324 of file VFS_session.cpp.

◆ fetchSessionValue()

QJsonValue VFS_session::fetchSessionValue ( QString  key)

Fetch a value from the _sessionData, by key.

Parameters
keyThe key to fetch
Returns
The value of the key

If the key does not exist in _sessionData, QJsonValue::Undefined will be returned.

Definition at line 268 of file VFS_session.cpp.

◆ icon()

QByteArray VFS_session::icon ( )
protectedvirtual

Return the user icon from VFS_icons.

Returns
The user icon

Reimplemented from VFS_node.

Definition at line 742 of file VFS_session.cpp.

◆ initializeTypes()

void VFS_session::initializeTypes ( )
staticprivate

Initialize the VFS_session::_sessionTypes member.

Additional types can be registered later with VFS_session::registerType()

See also
VFS_stdlib::initialize

Definition at line 174 of file VFS_session.cpp.

◆ initializeUser()

void VFS_session::initializeUser ( VFS_request r)
protectedvirtual

Check and create session files for a user.

Parameters
rThe VFS_request from the sessionManager, which will be the callback for when initialization is complete
Returns
Success or fail of user initialization

This method will initialize the _sessionData object and ensure that folders are created and files are copied from skeleton entries as needed.

Definition at line 509 of file VFS_session.cpp.

◆ isContainer()

bool VFS_session::isContainer ( )
virtual

A VFS_session cannot have children.

Returns
false

Reimplemented from VFS_node.

Definition at line 453 of file VFS_session.cpp.

◆ isMemberOf() [1/2]

bool VFS_session::isMemberOf ( QString  group)

Check if this session's group list includes the specified group.

Parameters
groupThe group name to search for in this session's group list
Returns
Boolean group membership

Definition at line 415 of file VFS_session.cpp.

◆ isMemberOf() [2/2]

bool VFS_session::isMemberOf ( QStringList  groups)

Check if this session's group list includes a member of the groups argument.

Parameters
groupsThe group names to search for in this session's group list
Returns
Boolean group membership

Definition at line 435 of file VFS_session.cpp.

◆ read()

void VFS_session::read ( VFS_request r)
protectedvirtual

Read the session data.

Parameters
rThe VFS_request object
{
"username": _user,
"uidnumber": _uidnumber,
"realname": _realname,
"groups": _groups, //as a QJsonArray
"created": _created, //as msecs since epoch
"expires": _expires, //as msecs since epoch
"authpath": _authpath, //the path to the VFS_auth that granted this session
"type": _type, //the session type ("default")
"home": _home, //the home folder
"address": _address, //the remote address of the client
"self": bool //only set and true if the _session in the VFS_request r is this session
}
QString _realname
The real name of the user associated with this session.
Definition: VFS_session.h:77
QDateTime _expires
The Expiration date/time of this session.
Definition: VFS_session.h:72
QString _type
The session or client type.
Definition: VFS_session.h:79
quint16 _uidnumber
The uidnumber of the user associated with this session.
Definition: VFS_session.h:76
QString _user
The username associated with this session.
Definition: VFS_session.h:75
QJsonArray _groups
The list of groups this user is a member of.
Definition: VFS_session.h:78
QString _authpath
The VFS_auth path that authenticated this session.
Definition: VFS_session.h:81
QString _address
The remote address of the client.
Definition: VFS_session.h:73
QString _home
The VFS path to this user's home directory.
Definition: VFS_session.h:80
QDateTime _created
The creation date/time of this session.
Definition: VFS_session.h:71

Reimplemented from VFS_node.

Definition at line 769 of file VFS_session.cpp.

◆ receiveResponse

void VFS_session::receiveResponse ( VFS_request r)
virtualslot

VFS_sessionManager::receiveResponse.

Parameters
rThe VFS_request response object

Definition at line 839 of file VFS_session.cpp.

◆ registerSessionType()

bool VFS_session::registerSessionType ( QString  type,
QJsonObject  definition,
QJsonObject  defaults = QJsonObject() 
)
static

Register a new session type by name.

Parameters
typeThe session type.
definitionThe tokenized session definition.
defaultsThe json objects representing the default values for a session definition field.
Returns
boolean success or fail at registering the type.

When a client connects to the system via websocket, a session is created for that user. The client should identify itself by type during the authentication/authorization process. New session types can be added using this method.

A series of tokens are recognized by default:

  • @username@ - the username for the session
  • @authpath@ - the authpath for the session
  • @type@ - the type of session
  • @home@ - the home directory for the user's session
  • @address@ - the IP address of the connected session
  • @data@ - the data directory for all sessions for the VFS_sessionManager

In addition, any parameters passed during the authorization request are added to the token list.

{
"home": "@home@/", //the home folder, which must end with a slash
"layoutsPath": "@home@/layouts/", //alternate layouts for the javascript client, which must end with a slash
"preferencesPath": "@home@/preferences.rfm", //user preferences
"interfacePath": "@home@/layouts/current.rui", //current layout
"settingsPath": "@home@/settings/" //settings root, for per-application settings, which must end with a slash
}

Any path referenced here will be checked by VFS_session::initializeUser() to validate the existence of directories and files. Any entry ending with a slash '/' be considered a directory, and those without are considered a file.

For those that are files, you will probably want to provide default values in the defaults object.

Note
Using junk entries in a registered type will probably result in an error if the path doesn't or can't exist, and ultimately a new user like this will be disconnected because of that error. The server will report better errors than a client; the client will be dropped due to inability to create a session.
See also
VFS_session::initializeUser()
VFS_session::initializeTypes()

Definition at line 241 of file VFS_session.cpp.

◆ reportDetails()

QString VFS_session::reportDetails ( )
virtual

Report data about a connected client.

Returns
A string containing the details.

Reimplemented from VFS_node.

Definition at line 464 of file VFS_session.cpp.

◆ resolveTokens()

QJsonObject VFS_session::resolveTokens ( QJsonObject  data)
protected

Resolve the tokens for a session type based on variables gathered in the _tokens object.

Parameters
dataThe data to resolve
Returns
The resolved data based on existing tokens

Definition at line 701 of file VFS_session.cpp.

◆ rm()

void VFS_session::rm ( VFS_request r)
protectedvirtual

Remove (delete) this node, and also the _client associated with it.

Parameters
rThe VFS_request object

Reimplemented from VFS_node.

Definition at line 795 of file VFS_session.cpp.

◆ secondsToExpire()

qint64 VFS_session::secondsToExpire ( )

Given the current time, calculate the number of seconds until this session will expire.

Returns
The number of seconds until expiration

This is to be used for browser cookie expiration, which receives a "max-age" field when setting a cookie.

Definition at line 386 of file VFS_session.cpp.

◆ timerEvent()

void VFS_session::timerEvent ( QTimerEvent *  event)
protectedvirtual

The timer event used to check if the session is still valid.

Parameters
eventThe QTimerEvent

If the currentDateTimeUtc is greater than _expires, this node will emit a finished() signal, which will kill the session and cause the connection to drop.

Definition at line 488 of file VFS_session.cpp.

◆ toJson()

QJsonObject VFS_session::toJson ( )

Return a json object with the salient data from this session.

Returns
The json representation of this session

This is used to transmit data to sub-vfs instances. It does not (cannot) transmit meaningful object pointers (like _client or _manager), and therefore will not be constructable in that way on a receiving side.

Definition at line 354 of file VFS_session.cpp.

Friends And Related Function Documentation

◆ VFS_acl

friend class VFS_acl
friend

Definition at line 18 of file VFS_session.h.

◆ VFS_sessionManager

friend class VFS_sessionManager
friend

Definition at line 17 of file VFS_session.h.

Member Data Documentation

◆ _address

QString VFS_session::_address
private

The remote address of the client.

Definition at line 73 of file VFS_session.h.

◆ _authpath

QString VFS_session::_authpath
private

The VFS_auth path that authenticated this session.

Definition at line 81 of file VFS_session.h.

◆ _authtoken

QString VFS_session::_authtoken
private

The authtoken VFS path associated with this session, which corresponds to an entry at VFS_sessionManager::_tokendata.

Definition at line 82 of file VFS_session.h.

◆ _client

VFS_node* VFS_session::_client
private

The client this session is for, which will usually be a subclass of VFS_websocket_client.

Definition at line 69 of file VFS_session.h.

◆ _created

QDateTime VFS_session::_created
private

The creation date/time of this session.

Definition at line 71 of file VFS_session.h.

◆ _expires

QDateTime VFS_session::_expires
private

The Expiration date/time of this session.

Definition at line 72 of file VFS_session.h.

◆ _groups

QJsonArray VFS_session::_groups
private

The list of groups this user is a member of.

Definition at line 78 of file VFS_session.h.

◆ _home

QString VFS_session::_home
private

The VFS path to this user's home directory.

Definition at line 80 of file VFS_session.h.

◆ _initialized

bool VFS_session::_initialized
private

false until initialization is complete

Definition at line 65 of file VFS_session.h.

◆ _initializedTypes

bool VFS_session::_initializedTypes = false
staticprivate

Whether or not VFS_session static variables have been initialized.

Definition at line 88 of file VFS_session.h.

◆ _initializers

QQueue<VFS_request *> VFS_session::_initializers
private

The list of initialization requests which must be empty for _initialized to become true.

Definition at line 66 of file VFS_session.h.

◆ _manager

VFS_sessionManager* VFS_session::_manager
private

The sessionManager tracking this session.

Definition at line 70 of file VFS_session.h.

◆ _realname

QString VFS_session::_realname
private

The real name of the user associated with this session.

Definition at line 77 of file VFS_session.h.

◆ _sessionData

QJsonObject VFS_session::_sessionData
private

The resolved session data for this user type.

Definition at line 85 of file VFS_session.h.

◆ _sessionDefaults

QJsonObject VFS_session::_sessionDefaults = QJsonObject()
staticprivate

The default values, per type, per entry.

Definition at line 91 of file VFS_session.h.

◆ _sessionTypes

QJsonObject VFS_session::_sessionTypes = QJsonObject()
staticprivate

The registered session types. The entries here will be de-tokenized on read()

Definition at line 90 of file VFS_session.h.

◆ _sessionTypesLock

QMutex VFS_session::_sessionTypesLock
staticprivate

A mutex to protect thread safety during initialization.

Definition at line 89 of file VFS_session.h.

◆ _tokens

QJsonObject VFS_session::_tokens
private

The tokens available to resolve session values.

Definition at line 84 of file VFS_session.h.

◆ _type

QString VFS_session::_type
private

The session or client type.

Definition at line 79 of file VFS_session.h.

◆ _uidnumber

quint16 VFS_session::_uidnumber
private

The uidnumber of the user associated with this session.

Definition at line 76 of file VFS_session.h.

◆ _user

QString VFS_session::_user
private

The username associated with this session.

Definition at line 75 of file VFS_session.h.

◆ timerID

int VFS_session::timerID
protected

The ID of the session timer.

Definition at line 44 of file VFS_session.h.


The documentation for this class was generated from the following files: