{ 

    serverPort: 11007,
    siteUrl: 'http://localhost:8080',
    verifyBaseUrl: 'http://localhost:11007', //後端 API base URL, 用於組出註冊驗證信內連結, 正式機須給對外可連網址
    subfolder: '', //msso

    showLanguage: 'y', //'n',
    language: 'eng', //eng, cht

    showModeEditUsers: 'y',
    modeEditUsers: 'y',
    showModeEditTokens: 'y',
    modeEditTokens: 'y',
    showModeEditIps: 'y',
    modeEditIps: 'y',

    webName: {
        eng: 'Single Sign-On System',
        cht: '單一登入系統',
    },
    webDescription: {
        eng: 'A web service package for Single Sign-On.',
        cht: '建構精簡框架之使用者及資訊管理來提供使用者單一登入之功能',
    },
    webLogo: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgaWQ9Ikljb25zIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDp1cmwoI2xpbmVhci1ncmFkaWVudCk7fS5jbHMtMntmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50LTIpO30uY2xzLTN7ZmlsbDojM2QzYzQ0O30uY2xzLTR7ZmlsbDp1cmwoI2xpbmVhci1ncmFkaWVudC0zKTt9PC9zdHlsZT48bGluZWFyR3JhZGllbnQgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGlkPSJsaW5lYXItZ3JhZGllbnQiIHgxPSIxMiIgeDI9IjEyIiB5MT0iMC4xOTEiIHkyPSI4Ljk4NCI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWQ1YzY2Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNDg0NzRmIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGlkPSJsaW5lYXItZ3JhZGllbnQtMiIgeDE9IjEyIiB4Mj0iMTIiIHkxPSI5LjA4NSIgeTI9IjIzLjAwMSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZmNjUwIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZhYjE3Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImxpbmVhci1ncmFkaWVudC0zIiB4Mj0iMTIiIHhsaW5rOmhyZWY9IiNsaW5lYXItZ3JhZGllbnQiIHkxPSIxMi45MTUiIHkyPSIxNy4wOTYiLz48L2RlZnM+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTcsMTBhMSwxLDAsMCwxLTEtMVY2QTQsNCwwLDAsMCw4LDZWOUExLDEsMCwwLDEsNiw5VjZBNiw2LDAsMCwxLDE4LDZWOUExLDEsMCwwLDEsMTcsMTBaIi8+PHJlY3QgY2xhc3M9ImNscy0yIiBoZWlnaHQ9IjE0IiByeD0iMyIgd2lkdGg9IjE4IiB4PSIzIiB5PSI5Ii8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTIsMjBhMSwxLDAsMCwxLTEtMVYxNmExLDEsMCwwLDEsMiwwdjNBMSwxLDAsMCwxLDEyLDIwWiIvPjxjaXJjbGUgY2xhc3M9ImNscy00IiBjeD0iMTIiIGN5PSIxNSIgcj0iMiIvPjwvc3ZnPg==',
    webBackgoundGradientColors: ['#FFE0B2', '#FFCC80', '#FFF59D', 'rgba(255, 224, 178, 0.5)', 'rgba(240, 220, 190, 0.7)'],
    webKey: 'ksso',
    userLogo: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMjQgMjQiPgogIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyLDEyKSBzY2FsZSgxLjIpIHRyYW5zbGF0ZSgtMTIsLTEyKSI+CiAgICA8cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGQ9Ik02LjE5NiAxNy40ODVxMS4yNzUtLjkxOCAyLjcwNi0xLjQ1MVExMC4zMzIgMTUuNSAxMiAxNS41dDMuMDk4LjUzNHQyLjcwNiAxLjQ1cS45OS0xLjAyNSAxLjU5My0yLjQyUTIwIDEzLjY2NyAyMCAxMnEwLTMuMzI1LTIuMzM3LTUuNjYzVDEyIDRUNi4zMzcgNi4zMzhUNCAxMnEwIDEuNjY3LjYwMyAzLjA2NHEuNjAzIDEuMzk2IDEuNTkzIDIuNDJtNS44MDUtNC45ODRxLTEuMjY0IDAtMi4xMzMtLjg2OFQ5IDkuNTAxdC44NjgtMi4xMzNUMTIgNi41dDIuMTMyLjg2OFQxNSA5LjV0LS44NjggMi4xMzJ0LTIuMTMxLjg2OE0xMiAyMXEtMS44ODMgMC0zLjUyNS0uNzAxdC0yLjg1OC0xLjkxNnQtMS45MTYtMi44NThUMyAxMnQuNzAxLTMuNTI1dDEuOTE2LTIuODU4cTEuMjE2LTEuMjE1IDIuODU4LTEuOTE2VDEyIDN0My41MjUuNzAxdDIuODU4IDEuOTE2dDEuOTE2IDIuODU4VDIxIDEydC0uNzAxIDMuNTI1dC0xLjkxNiAyLjg1OHEtMS4yMTYgMS4yMTUtMi44NTggMS45MTZUMTIgMjFtMC0xcTEuMzgzIDAgMi43MjEtLjQ4NHExLjMzOC0uNDgzIDIuMzEzLTEuMzI0cS0uOTc0LS43ODMtMi4yNTUtMS4yMzdUMTIgMTYuNXQtMi43ODkuNDQ1dC0yLjI0NiAxLjI0N3EuOTc1Ljg0IDIuMzE0IDEuMzI0VDEyIDIwbTAtOC41cS44NDIgMCAxLjQyMS0uNTc5VDE0IDkuNXQtLjU3OS0xLjQyMVQxMiA3LjV0LTEuNDIxLjU3OVQxMCA5LjV0LjU3OSAxLjQyMVQxMiAxMS41bTAgNi43NSIvPgogIDwvZz4KPC9zdmc+',

    // kpLangExt: {
    //     mmUsersList: {
    //         eng: `Users list`,
    //         cht: `使用者`,
    //     },
    // },

    salt: '{salt}',

    minExpired: 129600, //min, 60*24*30*3=525600, 約3個月
    minForAccountLoginFailed: 10,
    numForAccountLoginFailed: 3,
    minBlockForAccountLoginFailed: 30,
    minForTokenCallApi: 10,
    numForTokenCallApi: 1000,
    minBlockForTokenCallApi: 30,
    minForIpCallApi: 10,
    numForIpCallApi: 12000, //假設每ip每秒2次, 10分鐘須10*60*2=1200, 同網段ip使用者共10位, 須12000
    minBlockForIpCallApi: 30,

    cleanKpIpCallApiForIps: ['127.0.0.1'],
    cleanKpIpCallApiForToken: '{cleanKpIpCallApiForToken}',
    cleanKpAccountLoginFailedForIps: ['127.0.0.1'],
    cleanKpAccountLoginFailedForToken: '{cleanKpAccountLoginFailedForToken}',

    allowUserRegistration: true,

    //信件文字(逐語系), 各值可給文字, 或給檔案路徑(絕對或基於啟動路徑之相對, 檔案存在即讀檔作為內容, 不存在則原樣視為文字); 未給採內建語系文字
    chpwEmTitle: { //變更密碼通知信標題
        eng: 'Password has been changed',
        cht: '密碼已進行變更',
    },
    chpwEmContent: { //變更密碼通知信內容, 支援 {sender}/{name} 置換
        eng: 'Dear User {name},<br><br>This is to inform you that the password for your {sender} account has been successfully changed.<br><br>If you did not perform this action or have any concerns regarding your account security, please contact the system administrator as soon as possible to ensure the safety of your account.<br><br>This is an automated system notification. Please do not reply to this email.',
        cht: '使用者 {name} 您好：<br><br>您於「{sender}」的密碼已成功變更。<br><br>若您未曾進行此操作，或對帳號安全有任何疑慮，請您儘速聯絡系統管理單位，以確保帳號安全。<br><br>此為系統自動通知信件，請勿直接回覆。',
    },
    regVerifyEmTitle: { //註冊驗證信標題
        eng: 'Please verify your email',
        cht: '請驗證您的電子郵件',
    },
    regVerifyEmContent: { //註冊驗證信內容, 支援 {sender}/{name}/{verifyUrl} 置換
        eng: 'Dear {name},<br><br>Thank you for registering at {sender}.<br><br>Please click the link below to verify your email and activate your account:<br><a href="{verifyUrl}">{verifyUrl}</a><br><br>If you did not register, please ignore this email.<br><br>This is an automated notification. Please do not reply.',
        cht: '{name} 您好：<br><br>感謝您註冊「{sender}」。<br><br>請點擊以下連結以驗證您的電子郵件並啟用帳號：<br><a href="{verifyUrl}">{verifyUrl}</a><br><br>若您未曾進行此操作，請忽略此信。<br><br>此為系統自動通知信件，請勿直接回覆。',
    },
    resetPwEmTitle: { //重設密碼通知信標題
        eng: 'Your password has been reset',
        cht: '您的密碼已被重設',
    },
    resetPwEmContent: { //重設密碼通知信內容, 支援 {sender}/{name}/{account}/{newPassword} 置換
        eng: 'Dear {name},<br><br>The administrator has reset the password for your {sender} account.<br><br>Account: {account}<br>New password: <strong>{newPassword}</strong><br><br>Please log in with this password and immediately set your own new password upon login.<br><br>If you did not expect this change, please contact the administrator.<br><br>This is an automated notification.',
        cht: '使用者 {name} 您好：<br><br>管理員已重設您於「{sender}」的密碼。<br><br>帳號：{account}<br>新密碼：<strong>{newPassword}</strong><br><br>請以此密碼登入後，立即變更為您自己的新密碼。<br><br>若非您預期之操作，請聯繫管理員。<br><br>此為系統自動通知信件。',
    },
    //驗證結果頁, 可給HTML文字或檔案路徑(支援 {title}/{message} 置換); 未給採 pathTemplate 之 verifyEmailResult.html(缺檔回退套件內建)
    verifyEmailResultContent: '',
    pathTemplate: '', //自訂結果頁模板資料夾, 內放 verifyEmailResult.html 即覆寫內建

    passwordPolicy: {
        minLength: 8,
        maxLength: 16,
        requireLetter: true,
        requireUppercase: false,
        requireLowercase: false,
        requireDigit: true,
        requireSpecial: true,
        noSpace: true,
        onlyAscii: true,
        forbiddenChars: ['\\'],
        noConsecutiveCharsFromAccount: true,
        consecutiveCharsMinMatch: 2,
        commonPasswordBlacklist: [
            '1234', '12345', '123456', '1234567', '12345678',
            '123456789', '1234567890', '12345678910',
            '111111', '000000', '666666', '888888', '7777777', '11111111',
            '123123', '123321', '654321', '987654321',
            'qwerty', 'qwerty123', 'qwerty1', 'qwertyuiop', 'qazwsx',
            '1q2w3e4r', '1q2w3e4r5t', '1q2w3e', '1qaz2wsx', 'zxcvbnm',
            'password', 'password1', 'passw0rd', 'admin', 'admin123',
            'welcome', 'letmein', 'login', 'master', 'monkey', 'dragon',
            'shadow', 'sunshine', 'superman', 'batman', 'football',
            'baseball', 'soccer', 'hockey', 'michael', 'jordan', 'jennifer',
            'hunter', 'ranger', 'harley', 'thomas', 'charlie', 'andrew',
            'daniel', 'ashley', 'bailey', 'mustang', 'access', 'secret',
            'ninja', 'jesus', 'hello', 'freedom', 'trustno1',
            '1qaz@WSX', 'P@ssw0rd', 'Pass@123', 'Aa123456', 'Aa@123456',
            'Admin@123', 'abc@123',
            'abc123', 'abcdef', 'abcd1234', 'abc',
            'iloveyou', 'fuckyou', 'f*ckyou', 'whatever', 'nothing',
            'google', 'computer', 'internet', 'samsung', 'apple', 'killer',
            'princess', 'lovely', 'tigger', 'starwars', 'pokemon',
            'minecraft', '123qwe', 'zaq1zaq1', 'photoshop', 'adobe123',
            '18atcskd2w', 'mynoob',
        ],
    },

    logFd: './logs',
    logInterval: 'hr',
    logNumKeep: 8760, //log 檔保留數上限, 超出者自最舊刪除; hr 模式每小時 1 檔, 8760 約 1 年 (= w-syslog 預設, 未給亦同)

    emSrcEmail: 'example@gmail.com',
    emSrcPW: '{pw}',
    emSrcHost: 'smtp.gmail.com',
    emSrcPort: 587,

}