View RawView Markdown # Configuration Guide
This guide covers advanced configuration options, settings management, and customization features of the CCLS Games CLI Tool.
## Table of Contents
1. [Configuration Overview](#configuration-overview)
2. [Settings File Structure](#settings-file-structure)
3. [Directory Configuration](#directory-configuration)
4. [Cache Management](#cache-management)
5. [Credential Management](#credential-management)
6. [Logging Configuration](#logging-configuration)
7. [Startup Messages](#startup-messages)
8. [Performance Tuning](#performance-tuning)
9. [Security Settings](#security-settings)
10. [Advanced Options](#advanced-options)
## Configuration Overview
The CLI Tool stores its configuration in the `settings/` folder within the script directory:
```
[CLI Tool Directory]/
├── CLI.ps1
├── settings/
│ ├── settings.json # Main configuration
│ ├── credentials.dat # Encrypted login credentials
│ ├── lib.json # Library cache
│ └── start-message/ # Startup message templates
│ ├── default/
│ │ ├── template.json
│ │ └── info.txt
│ └── [template_name].json
└── logs/ # Session logs
└── ccls_session_*.log
```
## Settings File Structure
### settings.json
The main configuration file containing user preferences and system settings:
```json
{
"RememberLogin": true,
"DownloadPath": "C:\\Games\\CCLS-Games",
"TempDownloadPath": "C:\\Temp\\CCLS-Downloads",
"HasCompletedSetup": true,
"Version": "2.1.5",
"DevMode": false
}
```
### Configuration Parameters
#### RememberLogin
- **Type**: Boolean
- **Default**: `false`
- **Description**: Enables automatic login using stored credentials
- **Security Note**: Credentials are encrypted using Windows DPAPI
#### DownloadPath
- **Type**: String (File Path)
- **Default**: `".\downloads"`
- **Description**: Directory where games are permanently installed
- **Requirements**: Must be writable, sufficient disk space recommended
#### TempDownloadPath
- **Type**: String (File Path)
- **Default**: `".\tmp"`
- **Description**: Temporary directory for downloads and extraction
- **Requirements**: Must be writable, space for largest game download
#### HasCompletedSetup
- **Type**: Boolean
- **Default**: `false`
- **Description**: Tracks whether initial setup has been completed
- **Note**: Set to `true` after running the `setup` command
#### Version
- **Type**: String
- **Default**: Current CLI Tool version
- **Description**: Tracks installed version for update detection
- **Note**: Automatically updated during version upgrades
#### DevMode
- **Type**: Boolean
- **Default**: `false`
- **Description**: Enables Developer Mode for offline testing
- **Features**: Disables online API calls, allows local-only operation
## Directory Configuration
### Initial Setup
Configure directories using the interactive setup command:
```
CCLS>setup
```
### Manual Configuration
Edit the `settings.json` file directly to change paths:
```json
{
"DownloadPath": "D:\\Games\\CCLS",
"TempDownloadPath": "E:\\Temp\\Downloads"
}
```
### Path Requirements
#### Download Path
- **Purpose**: Permanent game storage
- **Recommendations**:
- Use fast storage (SSD preferred)
- Ensure adequate space (100GB+ recommended)
- Choose easily accessible location
- Avoid system directories
#### Temp Download Path
- **Purpose**: Temporary file storage during downloads
- **Recommendations**:
- Can be on different drive from DownloadPath
- Should have space for largest expected download
- Fast I/O performance beneficial
- Regular cleanup recommended
### Path Validation
The CLI Tool validates paths during:
- Initial setup
- Settings load
- Game download initiation
Invalid paths trigger:
- Error messages
- Automatic directory creation (if possible)
- Fallback to default locations
## Cache Management
### Library Cache (lib.json)
Stores metadata about installed games for fast access:
```json
{
"lastUpdated": "2024-01-15 14:30:25",
"totalGames": 25,
"totalSize": 524288000000,
"totalSizeFormatted": "488.28 GB",
"games": [
{
"folderName": "The Long Drive",
"gameName": "The Long Drive",
"gameId": "cg0023",
"localVersion": "1.2.0",
"localSize": 2147483648,
"localSizeFormatted": "2.00 GB",
"localPath": "C:\\Games\\CCLS-Games\\The Long Drive",
"hasMetadata": true,
"isOutdated": false,
"onlineVersion": "1.2.0",
"jsonLastModified": "2024-01-15 10:15:30"
}
]
}
```
### Cache Management Commands
```
CCLS>sys cache status # View cache information
CCLS>sys cache refresh # Rebuild cache
```
### Cache Invalidation
The cache is automatically refreshed when:
- Games are installed or deleted
- Game folders are modified
- JSON metadata files change
- Cache validation fails
### Manual Cache Maintenance
For corrupted or outdated cache:
1. Delete `settings/lib.json`
2. Restart CLI Tool
3. Cache will be rebuilt automatically
## Credential Management
### Storage Method
Credentials are encrypted using Windows Data Protection API (DPAPI):
- User-specific encryption
- Machine-bound security
- No cross-user access
- Automatic decryption for owner
### Credential File (credentials.dat)
Binary file containing encrypted login information:
- Username and password
- Encrypted per-user
- Automatically created when "Remember Login" is enabled
### Security Features
- **Encryption**: Windows DPAPI with user context
- **Access Control**: File system permissions
- **Automatic Cleanup**: Cleared on logout/forget commands
- **Validation**: Credentials verified on each use
### Credential Commands
```
CCLS>forget # Remove stored credentials
CCLS>logout # Log out and clear session
```
### Security Best Practices
- Regular password changes
- Avoid shared computers for saved credentials
- Use `forget` command before system transfers
- Monitor for unauthorized access
## Logging Configuration
### Log File Naming
```
ccls_session_YYYY-MM-DD_HH-mm-ss.log
```
### Log Levels
The CLI Tool uses different log entry types:
- **Standard Entries**: User commands and responses
- **Debug Entries**: Internal operations (prefixed with #)
- **Error Entries**: Exception and error information
- **System Entries**: Session start/end, configuration changes
### Log Retention
- **Automatic**: No automatic cleanup
- **Manual**: Use log management commands
- **Storage**: Limited only by disk space
### Log Management
```
CCLS>log list # Browse and manage logs
CCLS>log del [filename] # Delete specific log
```
### Privacy Considerations
Logs may contain:
- Usernames (not passwords)
- File paths
- Game names and IDs
- System information
- Error details
## Startup Messages
### Template System
Customizable welcome screens displayed after login.
### Template Structure
```json
{
"template": {
"type": "static",
"messages": [
{
"text": "Welcome to CCLS Games!",
"color": "Green",
"newline": true
},
{
"text": "Ready to game? ",
"color": "Cyan",
"newline": false
}
]
}
}
```
### Dynamic Templates
Special templates that show real-time data:
- `installed_games`: Shows installed game list
- `library_stats`: Displays library statistics
### Template Management
```
CCLS>sys start-message list # Available templates
CCLS>sys start-message get [name] # Download template
CCLS>sys start-message enable [name] # Enable template
CCLS>sys start-message default # Disable custom messages
```
### Custom Template Creation
1. Create JSON file with template structure
2. Place in `settings/start-message/` folder
3. Enable using `sys start-message enable [name]`
## Performance Tuning
### Download Performance
- **Python Installation**: Enables high-speed downloads
- **Requests Library**: Required for optimal performance
- **Disk I/O**: Use fast storage for temp directory
- **Network**: Stable high-speed connection recommended
### Cache Performance
- **SSD Storage**: Faster cache access
- **Regular Refresh**: Maintain cache validity
- **Size Management**: Monitor cache file growth
### Memory Optimization
- **Session Length**: Restart for long sessions
- **Large Libraries**: Regular cache refresh
- **Log Cleanup**: Remove old log files
### System Requirements Optimization
```
CCLS>check # Verify optimal configuration
```
## Security Settings
### PowerShell Execution Policy
Required setting for script execution:
```powershell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
```
### File System Permissions
Ensure appropriate permissions:
- CLI Tool directory: Read/Write/Execute
- Download directories: Full control
- Settings folder: Read/Write
### Network Security
- **HTTPS**: All API communications use HTTPS
- **Certificate Validation**: SSL certificates verified
- **User-Agent**: Identifies CLI Tool to server
### Data Protection
- **Credentials**: Encrypted using DPAPI
- **Local Storage**: No plain-text passwords
- **Transmission**: Secure HTTPS protocol
## Advanced Options
### Developer Mode
Enable for testing and development:
```
CCLS>devmode # Toggle developer mode
```
Features in Developer Mode:
- No login required
- Offline operation
- Disabled online API calls
- Local command testing
### Environment Variables
The CLI Tool respects these environment variables:
- `TEMP`: Used for temporary file operations
- `USERPROFILE`: Used for default paths
- `PATH`: Required for Python detection
### Command Line Parameters
Currently, the CLI Tool doesn't support command-line parameters, but this may be added in future versions.
### Debugging Features
For troubleshooting:
- Enable debug mode in source code
- Detailed logging automatically enabled
- Error tracking and reporting
- Performance monitoring
### Backup and Restore
#### Configuration Backup
To backup your configuration:
1. Copy the entire `settings/` folder
2. Store in secure location
3. Restore by copying back to CLI Tool directory
#### Game Metadata Backup
Game metadata is stored in:
- Individual `[GameID].json` files in game folders
- Library cache (`lib.json`)
- Session logs for installation history
#### Restore Process
1. Copy settings folder to new installation
2. Update paths in `settings.json` if needed
3. Run `sys cache refresh` to rebuild cache
4. Verify with `check` command
### Migration Between Systems
When moving to a new computer:
1. Copy CLI Tool directory
2. Update paths in settings.json
3. Clear credentials.dat (machine-specific)
4. Re-run setup if needed
5. Re-authenticate with login
### Troubleshooting Configuration
Common configuration issues:
- **Invalid Paths**: Use `setup` command to reconfigure
- **Corrupted Settings**: Delete settings.json to reset
- **Cache Issues**: Use `sys cache refresh`
- **Permission Problems**: Run as administrator for setup