.. _cu_config: Configuration ============= ConsoleUser can be configured by the :ref:`userdb_config` tool, and then use :ref:`winuser_convert` to suitable config files. Below details the manual configuration process that can be used to create or modify files. Except Markov files (noted below) the files are ``key = value`` pairs, and often the ``value`` portion can be a comma delimited list of values. ConsoleUser will start by loading a primary config file, traditionally named ``user.conf``. From there other files may be loaded that can have application specific configs. All keys share a single namespace, so values defined in different files could collide. All keys are case insensitive. Main Values ----------- Below are the main values that ConsoleUser needs to have to be able to connect and be useful. .. table:: ConsoleUser Behavior +------------------+--------------------------------------------------+ | Key | Description | +==================+==================================================+ | KeyboardStrategy | The way this user types. The most common values | | | are ``Simple`` or ``SimpleNoShift`` | +------------------+--------------------------------------------------+ | ListenPort | The local port on which this instance will listen| +------------------+--------------------------------------------------+ | MouseStrategy | The way this user moves the mouse. Only supports| | | ``Simple`` right now. | +------------------+--------------------------------------------------+ | RegionTarget | The type of Region source files that should be | | | used. This will generally correspond to the | | | type of server ConsoleUser will interact with. | | | The most common is qemu, but others have been | | | used as well. Not all use image files. | +------------------+--------------------------------------------------+ | RegionType | The type of Region objects this instance will use| +------------------+--------------------------------------------------+ | RegionMatcher | The matcher strategy to use when searching for | | | matches in a Region | +------------------+--------------------------------------------------+ Connection Characteristics -------------------------- One of the most important set of configuration options is the collection that tells ConsoleUser how to connect to and interact with the target system. This can be over direct RFB (a.k.a., VNC), or be mediated by a VMWare server, or it could use local accessibility options to drive the host. The type of connection is specified in the `SystemType` field, and which one is selected determines what other fields are required. .. table:: ConsoleUser User SystemType field +------------------+--------------------------------------------------+ | Key | Description | +==================+==================================================+ | SystemType | The type of connection to make. (Required) | +------------------+--------------------------------------------------+ An RFB system (either `RFB` or `rfbpy` for the `SystemType`) needs the address and port for the server to connect to. As such, it will require `SystemHost` and `SystemPort` both be specified. .. table:: ConsoleUser User RFB/VNC values +------------------+--------------------------------------------------+ | Key | Description | +==================+==================================================+ | SystemHost | The IP/name of the VNC server to connect to | +------------------+--------------------------------------------------+ | SystemPort | The port number the VNC server to connect to | +------------------+--------------------------------------------------+ If the system is negotiating the connection via VMWare vCenter and/or ESXi the `SystemType` must be `rfb-vmware`. When that is given the fields describing where to find the VM in question and how to authenticate will be needed. These are stored in `VMServer`, `VMID`, `VMUser`, `VMPassword`. .. table:: ConsoleUser User VMWare connection values +------------------+--------------------------------------------------+ | Key | Description | +==================+==================================================+ | VMServer | The IP/name of the vCenter server to connect to | +------------------+--------------------------------------------------+ | VMID | The vm ID VMWare has assigned to the target VM | +------------------+--------------------------------------------------+ | VMUser | The VMWare user to authenticate as | +------------------+--------------------------------------------------+ | VMPassword | The password to authenticate to VMWare with | +------------------+--------------------------------------------------+ Using the local accessibility layer can be done using ATASPI and the associated System type, namely `atspi`. This system does not need to know connection or authentication information, so no other values are required. User Characteristics -------------------- These are the parameters that define who the user is that ConsoleUser is embodying. Application specific characteristics are not reflected here. .. table:: ConsoleUser User +------------------+--------------------------------------------------+ | Key | Description | +==================+==================================================+ | Apps | The comma separated list of applications this | | | user "knows" how to use | +------------------+--------------------------------------------------+ | fname | The user's "first" name | +------------------+--------------------------------------------------+ | lname | The user's "last" name | +------------------+--------------------------------------------------+ | LoginName | The username used to login to the "main" system | +------------------+--------------------------------------------------+ | LoginPass | The password used to login to the "main" system | +------------------+--------------------------------------------------+ | LoginDomain | The (Windows) domain the user will login to | +------------------+--------------------------------------------------+ | LoginManager | The type of login style this user uses--reflects | | | the type of system and things like whether a | | | PIN or domain name or things are required | +------------------+--------------------------------------------------+ | LogInTime | The time of day this user typically logs in. | | | Times should be either HH:MM [ap]m for 12 hour | | | time or HHMM for a 24 hour time | +------------------+--------------------------------------------------+ | LogOutTime | The time of day this user typically logs out. | | | Times should be either HH:MM [ap]m for 12 hour | | | time or HHMM for a 24 hour time | +------------------+--------------------------------------------------+ Markov Brain Specific --------------------- The Markov Brain (see :ref:`cu_brain`) looks for additional values in the config file, and will load additional per application files (see below). .. table:: Markov Brain Options +-------------------+--------------------------------------------------+ | Key | Description | +===================+==================================================+ | ActionTimeMax | An int that is the maximum number of seconds to | | | sleep between performing actions within a module | +-------------------+--------------------------------------------------+ | ActionTimeMin | An int that is the minimum number of seconds to | | | sleep between performing actions within a module | +-------------------+--------------------------------------------------+ | MaxTransitionSleep| An int that is the maximum number of seconds to | | | sleep between ending one module and starting the | | | next. | +-------------------+--------------------------------------------------+ | MinTransitionSleep| An int that is the minimum number of seconds to | | | sleep between ending one module and starting the | | | next. | +-------------------+--------------------------------------------------+ | ModulesFormat | The format of the module transition file. Right | | | now the only supported valued is ``markov`` | +-------------------+--------------------------------------------------+ | ModulesPath | The path to the module transition file | +-------------------+--------------------------------------------------+ Application Specific -------------------- Every application listed in the ``Apps`` line will also provide its own configuration and transition matrices (when using the Markov brain). Blog ^^^^ This is the configuration for Blog modules, which typically involve using a browser to login to a site and writing posts or commenting on them/reading them. The transition file (see :ref:`markov_transition_file`) for this module is called ``BlogActions.conf``. .. table:: Blog Options +--------------------+--------------------------------------------------+ | Key | Description | +====================+==================================================+ | BlogBaseURI | This is the main URI for the blogging site. | +--------------------+--------------------------------------------------+ | BlogLoginURI | Some sites will directly provide a URI to the | | | login page, rather than following it from the | | | main site URI. This is that value if needed | +--------------------+--------------------------------------------------+ | BlogLoginName | If a username other than the default LoginName | | | is used for this site, provide it here. | +--------------------+--------------------------------------------------+ | BlogLoginPass | If a password other than the default LoginPass | | | is used for this site, provide it here. | +--------------------+--------------------------------------------------+ | BlogTopic | Optionally the path to a :ref:`babble_file` this | | | user blogs about. | +--------------------+--------------------------------------------------+ | BlogType | The specific type of Blog this User will use. | | | Must match the ``TYPE`` field of a module | | | that implements ``Blog`` | +--------------------+--------------------------------------------------+ ChatClient ^^^^^^^^^^ This is the configuration for ChatClient modules, which could be stand alone applications or browser-based sites. The transition file (see :ref:`markov_transition_file`) for this module is called ``ChatClientActions.conf``. .. table:: Chat Client Options +--------------------+--------------------------------------------------+ | Key | Description | +====================+==================================================+ | ChatClientTopic | Optionally the path to a :ref:`babble_file` this | | | user chats about. | +--------------------+--------------------------------------------------+ | ChatClientType | The specific type of ChatClient this User will | | | use. Must match the ``TYPE`` field of a | | | module that implements ``Chat`` | +--------------------+--------------------------------------------------+ | ChatLoginName | For chat programs with logins, this is the | | | username to login with if different from the | | | User's normal login credentials. | +--------------------+--------------------------------------------------+ | ChatLoginPass | For chat programs with logins, this is the | | | username to login with if different from the | | | User's normal login credentials. | +--------------------+--------------------------------------------------+ |RocketChatURI [#f1]_| For RocketChat implementations, this is the URI | | | of the RocketChat server. | +--------------------+--------------------------------------------------+ CommandShell ^^^^^^^^^^^^ This is the configuration for CommandShell modules. The transition file (see :ref:`markov_transition_file`) for this module is called ``CommandShellActions.conf``. .. table:: Command Shell Options +--------------------+--------------------------------------------------+ | Key | Description | +====================+==================================================+ | CommandShellType | The specific type of CommandShell this User will | | | use. Must match the ``TYPE`` field of a | | | module that implements ``CommandShell`` | +--------------------+--------------------------------------------------+ | CommandShellTasks | This is a :ref:`cdf_line` listing the commands | | | to run in the shell. | +--------------------+--------------------------------------------------+ EmailClient ^^^^^^^^^^^ This is the configuration file for EmailClient, which naturally defines properties about how ConsoleUser, and especially with the MarkovBrain, provides email activity. The transition file for this module is called ``EmailClientActions.conf`` and is a Markov transition file (see :ref:`markov_transition_file`). .. table:: Email Client Options +--------------------+--------------------------------------------------+ | Key | Description | +====================+==================================================+ | AttachmentFiles | A comma separated list of paths to files to use | | | as attachments for outgoing messages | +--------------------+--------------------------------------------------+ | AttachmentSaveDir | The directory into which attachments on received | | | should be saved | +--------------------+--------------------------------------------------+ | EmailClientRecips | A :ref:`cdf_line` listing people this user will | | | send email to | +--------------------+--------------------------------------------------+ | EmailClientType | The specific type of EmailClient this User will | | | use. Must match the ``TYPE`` field of a | | | module that implements ``EmailClient`` | +--------------------+--------------------------------------------------+ | EmailFolders | A comma separated list of folder names to use | +--------------------+--------------------------------------------------+ | EmailTopic | Optionally the path to a :ref:`babble_file` this | | | user sends email about. | +--------------------+--------------------------------------------------+ | EmailAttachPercent | The chance (between 0.0 and 1.0) that an | | | attachment will be added to a new message | +--------------------+--------------------------------------------------+ File Sharing ^^^^^^^^^^^^ This config file, named ``FileSharing.conf``, contains configuration information about how to interact with a file sharing site, like OwnCloud or SharePoint or similar. The transition file for this module is called ``FileSharingActions.conf`` and is a Markov transition file (see :ref:`markov_transition_file`). .. table:: File Sharing Options +-------------------------+--------------------------------------------------+ | Key | Description | +=========================+==================================================+ | DownloadSharing | This is a :ref:`cdf_line` of files that this user| | | will download from the sharing site. | +-------------------------+--------------------------------------------------+ | FileSharingLoginName | The name to use when logging in, if omitted the | | | User's default login name will be used | +-------------------------+--------------------------------------------------+ | FileSharingLoginPassword| The password to use when logging in, if ommitted | | | the User's default login name will be used | +-------------------------+--------------------------------------------------+ | FileSharingType | The specific type of FileSharing this User will | | | use. Must match the ``TYPE`` field of a | | | module that implements ``FileSharing`` | +-------------------------+--------------------------------------------------+ | FileSharingURI | The base URI for the site to use. | +-------------------------+--------------------------------------------------+ | FTPFiles | This is a :ref:`cdf_line` of files that this user| | | will upload to the sharing site. This value is | | | used if UploadSharing is not populated | +-------------------------+--------------------------------------------------+ | FTPUploads | This is a :ref:`cdf_line` of files that this user| | | will upload to the sharing site. This value is | | | used if both UploadSharing and FTPFiles are not | | | populated | +-------------------------+--------------------------------------------------+ | UploadSharing | This is a :ref:`cdf_line` of files that this user| | | will upload to the sharing site. | +-------------------------+--------------------------------------------------+ FTP ^^^ This config file, named ``FTP.conf``, contains configuration information about how to interact with FTP sites. The :ref:`markov_transition_file` for this module is called ``FTPActions.conf`` .. table:: FTP Options +-------------------------+--------------------------------------------------+ | Key | Description | +=========================+==================================================+ | FTPDownloadDir | This is the local directory into which files will| | | be "getted". | +-------------------------+--------------------------------------------------+ | FTPDownloads | A :ref:`cdf_line` of files available to get | +-------------------------+--------------------------------------------------+ | FTPFileList | This is a comma delimited list of files that this| | | user will upload to the sharing site. | +-------------------------+--------------------------------------------------+ | FTPSites | This is a :ref:`cdf_line` of sites that this user| | | will connect to. | +-------------------------+--------------------------------------------------+ | FTPType | The specific type of FTP client this User will | | | use. Must match the ``TYPE`` field of a | | | module that implements ``FTP`` | +-------------------------+--------------------------------------------------+ | FTPUploadDir | This is the remote path into which files are put | +-------------------------+--------------------------------------------------+ | FTPUploads | This is a :ref:`cdf_line` of files that this user| | | will upload to the ftp site. | +-------------------------+--------------------------------------------------+ Image Sharing ^^^^^^^^^^^^^ This config file, named ``ImageSharing.conf``, contains configuration information about how to interact with Image Sharing sites, like CopperMine. The :ref:`markov_transition_file` for this module is called ``ImageSharingActions.conf`` .. table:: Image Sharing Options +-------------------------+--------------------------------------------------+ | Key | Description | +=========================+==================================================+ | ImageCommentTopic | A :ref:`babble_file` for the topic of comments | +-------------------------+--------------------------------------------------+ | ImageDescriptionTopic | A :ref:`babble_file` for the topic of image | | | descriptions | +-------------------------+--------------------------------------------------+ | ImageSharingLoginName | Optionally, the username to use to login to the | | | site. Defaults to the User's normal loginName | +-------------------------+--------------------------------------------------+ |ImageSharingLoginPassword| Optionally, the password to use to login to the | | | site. Defaults to the User's normal loginPass | +-------------------------+--------------------------------------------------+ | ImageSharingType | The specific type of Image Sharing client this | | | User will use. Must match the ``TYPE`` field of | | | a module that implements ``ImageSharing`` | +-------------------------+--------------------------------------------------+ | UploadImages | A :ref:`cdf_line` of local files to upload. | +-------------------------+--------------------------------------------------+ IM ^^ This config file, named ``IM.conf``, contains configuration information about how to interact with instant messengers. The :ref:`markov_transition_file` for this module is called ``IMActions.conf`` .. table:: IM Options +-------------------------+--------------------------------------------------+ | Key | Description | +=========================+==================================================+ | IMTopic | A :ref:`babble_file` for this user to write about| +-------------------------+--------------------------------------------------+ | IMRecips | A :ref:`cdf_line` of people this user will send | | | messages to. | +-------------------------+--------------------------------------------------+ | IMType | The specific type of IM client this User will | | | use. Must match the ``TYPE`` field of a | | | module that implements ``IM`` | +-------------------------+--------------------------------------------------+ Media Player ^^^^^^^^^^^^ This config file, named ``MediaPlayer.conf``, contains configuration information about how to interact with media players like VLC or Windows Media Player. The :ref:`markov_transition_file` for this module is called ``MediaPlayerActions.conf`` .. table:: Media Player Options +-------------------------+--------------------------------------------------+ | Key | Description | +=========================+==================================================+ | MediaSites | A :ref:`cdf_line` of sources of media to play | +-------------------------+--------------------------------------------------+ | MediaPlayerSites | A :ref:`cdf_line` of sources of media to play. | | | This is only used if MediaSites is empty | +-------------------------+--------------------------------------------------+ | MediaPlayerType | The specific type of media player this User will | | | use. Must match the ``TYPE`` field of a | | | module that implements ``MediaPlayer`` | +-------------------------+--------------------------------------------------+ Node Goat ^^^^^^^^^ This config file, named ``NodeGoat.conf``, contains configuration information about how to interact with the Node Goat web app. The :ref:`markov_transition_file` for this module is called ``NodeGoatActions.conf`` .. table:: Node Goat Options +-------------------------+--------------------------------------------------+ | Key | Description | +=========================+==================================================+ | NodeGoatType | The specific type of node goat client this User | | | will use. Must match the ``TYPE`` field of a | | | module that implements ``NodeGoat`` | +-------------------------+--------------------------------------------------+ | NodeGoatPassword | The password to use when logging into Node Goat | +-------------------------+--------------------------------------------------+ | NodeGoatURI | The URI of the Node Goat server to use | +-------------------------+--------------------------------------------------+ | NodeGoatUserName | The Username to use when logging into Node Goat | +-------------------------+--------------------------------------------------+ PDF Viewer ^^^^^^^^^^ This config file, named ``PDFViewer.conf``, contains configuration information about how to view PDF files. The :ref:`markov_transition_file` for this module is called ``PDFViewerActions.conf`` .. table:: PDF Viewer Options +-------------------------+--------------------------------------------------+ | Key | Description | +=========================+==================================================+ | PDFViewerType | The specific type of pdf viewer client this User | | | will use. Must match the ``TYPE`` field of a | | | module that implements ``PDFViewer`` | +-------------------------+--------------------------------------------------+ | Sources | A :ref:`cdf_line` of PDF sources to load and read| +-------------------------+--------------------------------------------------+ Project Management ^^^^^^^^^^^^^^^^^^ This config file, named ``ProjectManagement.conf``, contains configuration information about how to use project management software. The :ref:`markov_transition_file` for this module is called ``ProjectManagementActions.conf`` .. table:: Project Management Options +-------------------------+--------------------------------------------------+ | Key | Description | +=========================+==================================================+ | ProjectMangementType | The specific type of project management client | | | this User will use. Must match the ``TYPE`` | | | field of a module that implements | | | ``ProjectManagement`` | +-------------------------+--------------------------------------------------+ | TaskNameTopic | A :ref:`babble_file` to generate task names. | +-------------------------+--------------------------------------------------+ SCM (Source Code Management) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This config file, named ``SCM.conf``, contains configuration information about how to use SCM software. The :ref:`markov_transition_file` for this module is called ``SCMActions.conf`` .. table:: SCM Options +-------------------------+--------------------------------------------------+ | Key | Description | +=========================+==================================================+ | RemoteRepos | A :ref:`cdf_line` listing remote repos to use | +-------------------------+--------------------------------------------------+ | SCMCommitTopic | A :ref:`babble_file` to generate commit messages | +-------------------------+--------------------------------------------------+ | SCMModifyCommands | A :ref:`cdf_line` listing commands to modify the | | | local repo which will perhaps later be committed | +-------------------------+--------------------------------------------------+ | SCMType | The specific type of SCM client this User will | | | use. Must match the ``TYPE`` field of a module | | | that implements ``SCM`` | +-------------------------+--------------------------------------------------+ SCP (secure copy) ^^^^^^^^^^^^^^^^^ This config file, named ``SCP.conf``, contains configuration information about how to use SCP software. The :ref:`markov_transition_file` for this module is called ``SCPActions.conf`` .. table:: SCP Options +-------------------------+--------------------------------------------------+ | Key | Description | +=========================+==================================================+ | SCP_Password | The password to use when connecting to a server | +-------------------------+--------------------------------------------------+ | SCPDownloads | A :ref:`cdf_line` listing files to download | +-------------------------+--------------------------------------------------+ | SCMCommitTopic | A :ref:`babble_file` to generate commit messages | +-------------------------+--------------------------------------------------+ | SCPFileList | A comma seperated list of files to be downloaded | | | This is only used if SCPUploads is empty | +-------------------------+--------------------------------------------------+ | SCPFiles | A :ref:`cdf_line` listing files to upload. This | | | is only used if SCPUploads is empty | +-------------------------+--------------------------------------------------+ | SCPUploads | A :ref:`cdf_line` listing files to upload | +-------------------------+--------------------------------------------------+ | SCPType | The specific type of SCP client this User will | | | use. Must match the ``TYPE`` field of a module | | | that implements ``SCP`` | +-------------------------+--------------------------------------------------+ Streaming Media ^^^^^^^^^^^^^^^ This config file, named ``StreamingMedia.conf``, contains configuration information about how to use streaming media sites, like Media Goblin. The :ref:`markov_transition_file` for this module is called ``StreamingMediaActions.conf`` .. table:: Streaming Media Options +----------------------------+-----------------------------------------------+ | Key | Description | +============================+===============================================+ | MediaCommentTopic | A :ref:`babble_file` file to generate the text| | | of comments. Defaults to ``techno.babble`` | +----------------------------+-----------------------------------------------+ | MediaDescriptionTopic | A :ref:`babble_file` file to generate new post| | | descriptions. Defaults to ``techno.babble`` | +----------------------------+-----------------------------------------------+ | MediaTagsTopic | A :ref:`babble_file` file to generate new post| | | tag list. Defaults to ``techno.babble`` | +----------------------------+-----------------------------------------------+ | MediaTitlesTopic | A :ref:`babble_file` file to generate new post| | | titles. Defaults to ``techno.babble`` | +----------------------------+-----------------------------------------------+ | UploadMedia | A :ref:`cdf_line` listing files to upload | +----------------------------+-----------------------------------------------+ | StreamingMediaLoginName | The username to login to the media site with | +----------------------------+-----------------------------------------------+ | StreamingMediaLoginPassword| The password to login to the media site with | +----------------------------+-----------------------------------------------+ | StreamingMediaType | The specific type of streaming media this User| | | will use. Must match the ``TYPE`` field of a | | | module that implements ``StreamingMedia`` | +----------------------------+-----------------------------------------------+ | StreamingMediaURI | The URI of the streaming media site to use | +----------------------------+-----------------------------------------------+ Web Browser ^^^^^^^^^^^ This config file, named ``WebBrowser.conf`` contains configuration information about how to interact with web browsers for general browsing activities. Visiting social media sites or similar will be their own apps and have their own configuration files. The :ref:`markov_transition_file` for this module is called ``WebBrowserActions.conf`` .. table:: Web Browser Options +--------------------+--------------------------------------------------+ | Key | Description | +====================+==================================================+ | BrowserType | The specific type of WebBrowser this User will | | | use. Must match the ``TYPE`` field of a | | | module that implements ``WebBrowser`` | +--------------------+--------------------------------------------------+ | WebBrowserURIs | A :ref:`cdf_line` of URIs this User will type to | | | visit. | +--------------------+--------------------------------------------------+ Web Forum ^^^^^^^^^ This config file, named ``WebForum.conf`` contains configuration information about how to interact with web fora like one provided by Simple Machines, for example. The :ref:`markov_transition_file` for this module is called ``WebForumActions.conf`` .. table:: Web Browser Options +--------------------+--------------------------------------------------+ | Key | Description | +====================+==================================================+ | WebForumType | The specific type of WebForum this User will | | | use. Must match the ``TYPE`` field of a | | | module that implements ``WebForum`` | +--------------------+--------------------------------------------------+ | WebForumTopic | A :ref:`babble_file` to generate text while | | | writing on the forum. | +--------------------+--------------------------------------------------+ | WebForumURI | The URI of the forum this User will use | +--------------------+--------------------------------------------------+ | ForumUname | If a name other than the default LoginName should| | | specify it here. | +--------------------+--------------------------------------------------+ | ForumPassword | If a name other than the default LoginPass should| | | specify it here. | +--------------------+--------------------------------------------------+ Word Processor ^^^^^^^^^^^^^^ This config file, named ``WordProcessor.conf`` contains configuration information about how to interact with word processors like Word or Libre Office Writer. The :ref:`markov_transition_file` for this module is called ``WordProcessorActions.conf`` .. table:: Word Processor Options +--------------------+--------------------------------------------------+ | Key | Description | +====================+==================================================+ | WordProcessorType | The specific type of Word Processor this User | | | will use. Must match the ``TYPE`` field of a | | | module that implements ``WordProcessor`` | +--------------------+--------------------------------------------------+ | WordTopic | A :ref:`babble_file` to generate text content | +--------------------+--------------------------------------------------+ .. rubric:: Footnotes .. [#f1] Only applies to instances supporting RocketChat