| 57 | if (fileOptions) Object.getOwnPropertyNames(fileOptions).forEach(n => args[n] = args[n] === undefined ? fileOptions[n] : args[n]); |
| 58 | |
| 59 | function parseUsers(path: string): { port: number, password: string, cipherAlgorithm: string, expireDate?: string, disableSelfProtection?: boolean }[] { |
| 60 | if (!path) return []; |
| 61 | if (!fs.existsSync(path)) return []; |
| 62 | |
| 63 | var content: string = fs.readFileSync(path).toString(); |
| 64 | return content.split('\n').where((l: string) => l.length > 0 && !l.trim().startsWith('#')).select((l: string) => { |
| 65 | var info = l.trim().split(' '); |
| 66 | return { port: Number(info[0]), password: info[1], cipherAlgorithm: info[2], expireDate: info[3], speed: Number(info[4]), disableSelfProtection: args.disableSelfProtection }; |
| 67 | }).toArray(); |
| 68 | } |
| 69 | |
| 70 | var users = parseUsers(args.users); |
| 71 | |