# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# The names of expected mount-points, devices, magic files, etc on chrome os.

# Constants used by other constants.
USER_DATA_DIR = '/home/chronos'
WHITELIST_DIR = '/var/lib/whitelist'
LOG_DIR = '/var/log'

# Rest of constants.
BROWSER = 'chrome'
BROWSER_EXE = '/opt/google/chrome/' + BROWSER

CHAPS_USER_DATABASE_PATH = '/home/chronos/user/.chaps/database'

CHROME_CORE_MAGIC_FILE = '/mnt/stateful_partition/etc/collect_chrome_crashes'
CHROME_LOG_DIR = '/var/log/chrome'
CHROME_VERSION_COMMAND = BROWSER_EXE + ' --version'

# Directory to save log files preserved during autoupdate.
AUTOUPDATE_PRESERVE_LOG = '/mnt/stateful_partition/unencrypted/preserve/log'

CLEANUP_LOGS_PAUSED_FILE = '/var/lib/cleanup_logs_paused'

CLIENT_LOGIN_URL = '/accounts/ClientLogin'
CLIENT_LOGIN_NEW_URL = '/ClientLogin'

CRASH_DIR = '/var/spool/crash'
CRASH_REPORTER_RESIDUE_DIR = '/tmp/crash_reporter'

# LOGS to collect from DUTs
LOG_PSTORE_DIRS = ('/dev/pstore', '/sys/fs/pstore')
LOG_I915_ERROR_STATE = '/sys/kernel/debug/dri/0/i915_error_state'

CREDENTIALS = {
    '$mockowner': ['mockowner.test.account@gmail.com', 'perfsmurf'],
    '$default': ['performance.test.account@gmail.com', 'perfsmurf'],
    '$apps': ['performance.test.account@googleapps.com', 'perfsmurf'],
    '$backdoor': ['chronos@gmail.com', 'chronos'],
}

SHADOW_ROOT = '/home/.shadow'

CRYPTOHOME_DEV_REGEX_ANY = r'.*'
CRYPTOHOME_DEV_REGEX_REGULAR_USER_SHADOW = r'^/home/\.shadow/.*/vault$'
CRYPTOHOME_DEV_REGEX_REGULAR_USER_DEVICE = r'^/dev/[^/]*$'
CRYPTOHOME_DEV_REGEX_REGULAR_USER_EPHEMERAL = r'^ephemeralfs/.*$'
# Ecryptfs-based user home directory mounts the SHADOW encrypted directory,
# while ext4-crypto based user home is a bind-mount to an encrypted directory
# part of a ext4 filesystem that mounts the main disk device. Both can be
# a home directory of a regular user.
CRYPTOHOME_DEV_REGEX_REGULAR_USER = r'(%s|%s|%s)' % (
   CRYPTOHOME_DEV_REGEX_REGULAR_USER_SHADOW,
   CRYPTOHOME_DEV_REGEX_REGULAR_USER_DEVICE,
   CRYPTOHOME_DEV_REGEX_REGULAR_USER_EPHEMERAL)
CRYPTOHOME_DEV_REGEX_GUEST = r'^guestfs$'

CRYPTOHOME_FS_REGEX_ANY = r'.*'
CRYPTOHOME_FS_REGEX_TMPFS = r'^tmpfs$'
CRYPTOHOME_FS_REGEX_EXT4 = r'^ext4$'
CRYPTOHOME_FS_REGEX_ECRYPTFS = r'^ecryptfs$'

CRYPTOHOME_MOUNT_PT = USER_DATA_DIR + '/user'

CRYPTOHOMED_LOG = '/var/log/cryptohomed.log'

# Directories to copy out of cryptohome, relative to CRYPTOHOME_MOUNT_PT.
CRYPTOHOME_DIRS_TO_RECOVER = ['crash', 'log']

DISABLE_BROWSER_RESTART_MAGIC_FILE = '/run/disable_chrome_restart'
DEFAULT_OWNERSHIP_TIMEOUT = 300  # Ownership is an inherently random process.

ENABLE_BROWSER_HANG_DETECTION_FILE = \
    '/run/session_manager/enable_hang_detection'

FLIMFLAM_TEST_PATH = '/usr/lib/flimflam/test/'

GUEST_USER = '$guest'

LOGIN_PROFILE = USER_DATA_DIR + '/Default'

LOGIN_PROMPT_STATUS_COMMAND = 'bootstat_get_last login-prompt-visible'

LSB_RELEASE = '/etc/lsb-release'

MOCK_OWNER_CERT = 'mock_owner_cert.pem'
MOCK_OWNER_KEY = 'mock_owner_private.key'
MOCK_OWNER_POLICY = 'mock_owner.policy'

NETWORK_MANAGER = 'flimflam'

ISSUE_AUTH_TOKEN_URL = '/accounts/IssueAuthToken'
ISSUE_AUTH_TOKEN_NEW_URL = '/IssueAuthToken'

OAUTH1_GET_REQUEST_TOKEN_URL = '/accounts/o8/GetOAuthToken'
OAUTH1_GET_REQUEST_TOKEN_NEW_URL = '/o/oauth/GetOAuthToken/'
OAUTH1_GET_ACCESS_TOKEN_URL = '/accounts/OAuthGetAccessToken'
OAUTH1_GET_ACCESS_TOKEN_NEW_URL = '/OAuthGetAccessToken'
OAUTH_LOGIN_URL = '/accounts/OAuthLogin'
OAUTH_LOGIN_NEW_URL = '/OAuthLogin'
MERGE_SESSION_URL = '/MergeSession'

OAUTH2_CLIENT_ID = '77185425430.apps.googleusercontent.com'
OAUTH2_CLIENT_SECRET = 'OTJgUOQcT7lO7GsGZq2G4IlT'
OAUTH2_WRAP_BRIDGE_URL = '/accounts/OAuthWrapBridge'
OAUTH2_WRAP_BRIDGE_NEW_URL = '/OAuthWrapBridge'
OAUTH2_GET_AUTH_CODE_URL = '/o/oauth2/programmatic_auth'
OAUTH2_GET_TOKEN_URL = '/o/oauth2/token'

OWNER_KEY_FILE = WHITELIST_DIR + '/owner.key'

PORTAL_CHECK_URL = '/generate_204'

SERVICE_LOGIN_URL = '/accounts/ServiceLogin'
SERVICE_LOGIN_NEW_URL = '/ServiceLogin'
SERVICE_LOGIN_AUTH_URL = '/ServiceLoginAuth'
SERVICE_LOGIN_AUTH_ERROR = 'The username or password you entered is incorrect.'

SESSION_MANAGER = 'session_manager'
SIGNED_POLICY_FILE = WHITELIST_DIR + '/policy'
SPECIAL_CASE_DOMAIN = 'gmail.com'
USER_POLICY_DIR = '/run/user_policy'
USER_POLICY_KEY_FILENAME = 'policy.pub'

TOKEN_AUTH_URL = '/accounts/TokenAuth'
TOKEN_AUTH_NEW_URL = '/TokenAuth'

UI_LOG = '/var/log/ui/ui.LATEST'
UI_RESPAWN_TIMESTAMPS_FILE = '/tmp/ui-respawn-timestamps'
UI_TOO_CRASHY_TIMESTAMPS_FILE = '/tmp/ui-too-crashy-timestamps'
UPDATE_ENGINE_LOG = '/var/log/update_engine.log'

RESOLV_CONF_FILE = '/etc/resolv.conf'

PENDING_SHUTDOWN_PATH = '/var/lib/crash_reporter/pending_clean_shutdown'
UNCLEAN_SHUTDOWN_DETECTED_PATH = '/run/unclean-shutdown-detected'

INTERACTIVE_XMLRPC_SERVER_PORT = 9980
INTERACTIVE_XMLRPC_SERVER_COMMAND = (
        'cd /usr/local/autotest/common_lib/cros; '
        './interactive_xmlrpc_server.py')
INTERACTIVE_XMLRPC_SERVER_CLEANUP_PATTERN = 'interactive_xmlrpc_server'
INTERACTIVE_XMLRPC_SERVER_READY_METHOD = 'ready'

SHILL_XMLRPC_SERVER_PORT = 9989
SHILL_XMLRPC_SERVER_COMMAND = (
        'cd /usr/local/autotest/cros/networking; '
        './shill_xmlrpc_server.py')
SHILL_BRILLO_XMLRPC_SERVER_COMMAND = (
        '/system/bin/shill-test-rpc-proxy --port=%s' % SHILL_XMLRPC_SERVER_PORT)
# /usr/local/bin is write-accessible on both ChromeOS and test-station platforms
ANDROID_XMLRPC_SERVER_FMT ='android_xmlrpc_server-%s.py'
ANDROID_XMLRPC_SERVER_TARGET_DIR = '/usr/local/bin'
ANDROID_XMLRPC_SERVER_COMMAND_FMT = 'cd %s; ./' + ANDROID_XMLRPC_SERVER_FMT
ANDROID_XMLRPC_SERVER_CLEANUP_PATTERN = 'android_xmlrpc_server-%s'

SHILL_XMLRPC_SERVER_CLEANUP_PATTERN = 'shill_xmlrpc_server'
SHILL_BRILLO_XMLRPC_SERVER_CLEANUP_PATTERN = 'shill-test-rpc-proxy'
SHILL_XMLRPC_SERVER_READY_METHOD = 'ready'

BLUETOOTH_DEVICE_XMLRPC_SERVER_PORT = 9990
BLUETOOTH_DEVICE_XMLRPC_SERVER_COMMAND = (
        'cd /usr/local/autotest/cros/bluetooth; '
        './bluetooth_device_xmlrpc_server.py')
BLUETOOTH_DEVICE_XMLRPC_SERVER_CLEANUP_PATTERN = (
        'bluetooth_device_xmlrpc_server')
BLUETOOTH_DEVICE_XMLRPC_SERVER_READY_METHOD = 'ready'

BLUETOOTH_TESTER_XMLRPC_SERVER_PORT = 9990
BLUETOOTH_TESTER_XMLRPC_SERVER_COMMAND = (
        'cd /usr/local/autotest/cros/bluetooth;  '
        './bluetooth_tester_xmlrpc_server.py')
BLUETOOTH_TESTER_XMLRPC_SERVER_CLEANUP_PATTERN = (
        'bluetooth_tester_xmlrpc_server')
BLUETOOTH_TESTER_XMLRPC_SERVER_READY_METHOD = 'ready'

MULTIMEDIA_XMLRPC_SERVER_PORT = 9991
MULTIMEDIA_XMLRPC_SERVER_COMMAND = (
        'cd /usr/local/autotest/cros/multimedia; '
        './multimedia_xmlrpc_server.py')
MULTIMEDIA_XMLRPC_SERVER_CLEANUP_PATTERN = 'multimedia_xmlrpc_server'
MULTIMEDIA_XMLRPC_SERVER_READY_METHOD = 'ready'
MULTIMEDIA_XMLRPC_SERVER_LOG_FILE= '/var/log/multimedia_xmlrpc_server.log'
MULTIMEDIA_XMLRPC_SERVER_REQUEST_TIMEOUT = 180

MULTIMEDIA_TEST_EXTENSION = (
        '/usr/local/autotest/cros/multimedia/multimedia_test_extension')

APMANAGER_XMLRPC_SERVER_PORT = 9992
APMANAGER_XMLRPC_SERVER_COMMAND = (
        'cd /usr/local/autotest/cros/networking; '
        './apmanager_xmlrpc_server.py')
APMANAGER_XMLRPC_SERVER_CLEANUP_PATTERN = 'apmanager_xmlrpc_server'
APMANAGER_XMLRPC_SERVER_READY_METHOD = 'ready'

DARK_RESUME_XMLRPC_SERVER_PORT = 9993
DARK_RESUME_XMLRPC_SERVER_COMMAND = (
        'cd /usr/local/autotest/cros; '
        './dark_resume_xmlrpc_server.py')
DARK_RESUME_XMLRPC_SERVER_CLEANUP_PATTERN = 'dark_resume_xmlrpc_server'
DARK_RESUME_XMLRPC_SERVER_READY_METHOD = 'ready'

# Bug filing
CHROME_VERSION = 'CHROME_VERSION'

# Moblab Environment Constants.
MOBLAB_USER = 'moblab'

# Variant test keyval
VARIANT_KEY = 'variant_key'
