Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Быстрое создание учёток через freeipa
- // Скрипт исполняется в браузере, после авторизации в freeipa
- // Сюда пишем пользователей (!) и группы (!)
- // Больше ничего менять не надо
- const users = [
- {
- first_name: 'Данёк',
- last_name: 'Якубович',
- email: 'dtestov@example.com', // указываем email человека (можно пропустить, тогда будет без email)
- // пароль - генерируем отсюда https://www.random.org/passwords/?num=5&len=12&format=html&rnd=new
- password: 'MR132kKk9123123az5gnm',
- // (!) указываем нужные группы (например 'internal-interns' или 'internal-developers')
- groups: [
- 'internal-interns',
- ],
- },
- ];
- // ===================================================== //
- const api_version = window.ipa_loader ? window.ipa_loader.api_version : '2.237';
- const rusToLat = function (str) {
- let ru = {
- а: 'a',
- б: 'b',
- в: 'v',
- г: 'g',
- д: 'd',
- е: 'e',
- ё: 'e',
- ж: 'zh',
- з: 'z',
- и: 'i',
- к: 'k',
- л: 'l',
- м: 'm',
- н: 'n',
- о: 'o',
- п: 'p',
- р: 'r',
- с: 's',
- т: 't',
- у: 'u',
- ф: 'f',
- х: 'h',
- ц: 'c',
- ч: 'ch',
- ш: 'sh',
- щ: 'sch',
- ы: 'i',
- э: 'e',
- ю: 'yu',
- я: 'ja',
- ъ: '',
- ь: '',
- й: 'j',
- };
- return [...str]
- .map((l) => {
- let latL = ru[l.toLocaleLowerCase()];
- if (l !== l.toLocaleLowerCase()) {
- latL = latL.charAt(0).toLocaleUpperCase() + latL.slice(1);
- } else if (latL === undefined) {
- latL = l;
- }
- return latL;
- })
- .join('');
- };
- const callApi = (data) => {
- return fetch('/ipa/session/json', {
- headers: {
- accept: 'application/json',
- 'accept-language': 'en-US,en;q=0.9,ru-RU;q=0.8,ru;q=0.7',
- 'cache-control': 'no-cache',
- 'content-type': 'application/json',
- pragma: 'no-cache',
- 'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
- 'sec-ch-ua-mobile': '?0',
- 'sec-ch-ua-platform': '"Windows"',
- 'sec-fetch-dest': 'empty',
- 'sec-fetch-mode': 'cors',
- 'sec-fetch-site': 'same-origin',
- 'x-requested-with': 'XMLHttpRequest',
- 'x-sarah-locale': 'ru',
- },
- referrerPolicy: 'strict-origin-when-cross-origin',
- body: JSON.stringify(data),
- method: 'POST',
- mode: 'cors',
- credentials: 'include',
- }).then((r) => r.json());
- };
- const createUser = async (user) => {
- const login = `${rusToLat(user.first_name.trim()[0])}${rusToLat(user.last_name.trim())}`.toLocaleLowerCase();
- const userData = {
- method: 'user_add',
- params: [
- [login.trim()],
- {
- givenname: user.first_name.trim(),
- sn: user.last_name.trim(),
- userpassword: user.password.trim(),
- version: api_version,
- },
- ],
- };
- console.log(
- 'Начинаем создавать пользователя',
- login,
- user.first_name,
- user.last_name,
- user.password,
- user.groups && user.groups.join(' '),
- );
- await callApi(userData);
- if (user.email) {
- const emailData = {
- method: 'user_mod',
- params: [
- [login.trim()],
- {
- all: true,
- rights: true,
- mail: user.email.trim(),
- version: api_version,
- },
- ],
- };
- console.log('Выставляем email', login, user.email);
- await callApi(emailData);
- }
- if (user.groups && user.groups.length > 0) {
- const groupsData = {
- method: 'batch',
- params: [
- user.groups.map(group => [
- {
- method: 'group_add_member',
- params: [
- [group.trim()],
- {
- user: login.trim(),
- },
- ],
- },
- ]),
- {
- version: api_version,
- },
- ],
- };
- console.log('Выставляем группы', login, user.groups.join(' '));
- await callApi(groupsData);
- }
- };
- const createUsers = async (users) => {
- for (const user of users) {
- const index = users.indexOf(user);
- console.log('----------------------------');
- console.log(`Создаём пользователя ${index + 1}/${users.length}`);
- try {
- await createUser(user);
- } catch (err) {
- console.error(`Не удалось создать ${user.first_name} ${user.last_name}`);
- console.error(err);
- }
- }
- console.log('----------------------------');
- console.log('----------------------------');
- console.log('----------------------------');
- console.log('Все пользователи обработаны, проверьте, что все создались успешно!');
- console.log('----------------------------');
- console.log('----------------------------');
- console.log('----------------------------');
- };
- await createUsers(users);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement