Корпоративная система управления идентификационной информацией на базе FreeIPA
Леонид Кантер
acl internal {
127.0.0.1;
::1;
192.168.0.0/16;
172.30.0.0/15;
172.27.224.0/24;
};
# firewall-cmd --add-service=dns
# firewall-cmd --add-service=kerberos
# firewall-cmd --add-service=kpasswd
# firewall-cmd --add-service=http
# firewall-cmd --add-service=https
# firewall-cmd --add-service=ntp
# firewall-cmd --add-service=ldap
# firewall-cmd --add-service=ldaps
# firewall-cmd --runtime-to-permanent
# firewall-cmd --list-services
# yum install freeipa-server
# ipa-server-install --domain=corp.example.com --realm=CORP.EXAMPLE.COM --setup-dns --no-forwarders --mkhomedir --idstart=10000 --dirsrv-cert-file auth.crt --http-cert-file auth.crt --dirsrv-cert-file intermediate.crt --http-cert-file intermediate.crt --ca-cert-file ca.crt
# ipa hbacrule-show allow_all
# yum install ipa-client
# ipa-client-install --domain=corp.example.com --hostname=idp.corp.example.com --no-nisdomain --mkhomedir
[puiterwijk-ipsilon]
name=Copr repo for ipsilon owned by puiterwijk
baseurl=https://copr-be.cloud.fedoraproject.org/results/puiterwijk/ipsilon/epel-7-$basearch/
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://copr-be.cloud.fedoraproject.org/results/puiterwijk/ipsilon/pubkey.gpg
enabled=1
enabled_metadata=1
# yum install ipsilon ipsilon-authgssapi ipsilon-saml2-base ipsilon-authpam ipsilon-base ipsilon-tools-ipa ipsilon-saml2 ipsilon-authform ipsilon-filesystem ipsilon-infosssd
# ipa hbacrule-show allow_ipsilon
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
# kinit username@CORP.EXAMPLE.COM
# yum install ipsilon-client
# ipsilon-client-install --saml-idp-metadata \https://idp.corp.example.com/idp/saml2/metadata --auth-location /site --hostname site.corp.example.com
-----------------------------------------------------------------------------------------
Apache Mesos. Знакомимся с конкурентом Kubernetes и Docker Swarm
Денис Силаков
# rpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesospehere-el-repo-7-1.noarch.rpm
# yum install mesos mesosphere-zookeeper
# echo 1 > /var/lib/zookeeper/myid
# echo 10.0.3.4 > /etc/mesos-master/ip
# echo 10.0.3.4 > /etc/mesos-master/hostname
# echo 'zk://10.0.3.4:2181,10.0.3.3:2181,10.0.3.2:2181/mesos' > /etc/mesos/zk
server.1 = 10.0.3.4:2888:3888
server.2 = 10.0.3.3:2888:3888
server.3 = 10.0.3.2:2888:3888
# echo "2" > /etc/mesos-master/quorum
# systemctl disable mesos-slave
# systemctl start mesos-master
# systemctl start zookeeper
# rpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesospehere-el-repo-7-1.noarch.rpm
# yum install mesos
# echo 10.0.3.5 >> /etc/mesos-slave/ip
# cp /etc/mesos-slave/ip /etc/mesos-slave/hostname
# systemctl disable mesos-master
# echo "zk://10.0.3.4:2181,10.0.3.3:2181,10.0.3.2:2181/mesos" > /etc/mesos/zk
# yum install docker
# echo "docker,mesos" > /etc/mesos-slave/containerizers
# echo '5mins' > /etc/mesos-slave/executor_registration_timeout
# systemctl start mesos-slave
-----------------------------------------------------------------------------------------
Реализация классического метода «Шифр четырех квадратов» в 1С
Кирилл Ткаченко
Перем Размер, Алфавит, Матрица;
Процедура Инициализация()
Размер = 5;
Алфавит = "ABCDEFGHIJKLMNOPRSTUVWXYZ";
КонецПроцедуры
Функция ОграничитьсяАлфавитом(текст)
Перем ТекстПрописные, Результат, Символ, i;
Результат = "";
ТекстПрописные = ВРег(текст);
Для i = 1 По СтрДлина(ТекстПрописные) Цикл
Символ = Сред(ТекстПрописные, i, 1);
Если Найти(Алфавит, Символ) <> 0 Тогда
Результат = Результат + Символ;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
Функция Дополнить(текст)
Перем Врем, Результат, Символ, i;
Результат = "";
Врем = текст + Алфавит;
Для i = 1 По СтрДлина(Врем) Цикл
Символ = Сред(Врем, i, 1);
Если Найти(Результат, Символ) = 0 Тогда
Результат = Результат + Символ;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
Процедура СоздатьМатрицу(пароль1, пароль2)
Перем ПарольДляМатрицы1, ПарольДляМатрицы2;
Перем i, j;
Матрица = Новый Массив(Размер + Размер, Размер + Размер);
ПарольДляМатрицы1 = Дополнить(ОграничитьсяАлфавитом(пароль1));
ПарольДляМатрицы2 = Дополнить(ОграничитьсяАлфавитом(пароль2));
Для i = 0 По Размер - 1 Цикл
Для j = 0 По Размер - 1 Цикл
Матрица[i][j] = Сред(Алфавит, i * Размер + j + 1, 1);
Матрица[i + Размер][j + Размер] = Сред(Алфавит, i * Размер + j + 1, 1);
Матрица[i][j + Размер] = Сред(ПарольДляМатрицы1, i * Размер + j + 1, 1);
Матрица[i + Размер][j] = Сред(ПарольДляМатрицы2, i * Размер + j + 1, 1);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Функция Зашифровать(текст)
Перем Результат, ТекстДляМатрицы;
Перем x1, y1, x2, y2;
Перем i, j, k;
Результат = "";
ТекстДляМатрицы = ОграничитьсяАлфавитом(текст);
Если СтрДлина(ТекстДляМатрицы) % 2 <> 0 Тогда
ТекстДляМатрицы = ТекстДляМатрицы + "X";
КонецЕсли;
Для k = 1 По Цел(СтрДлина(ТекстДляМатрицы) / 2) Цикл
Символ1 = Сред(ТекстДляМатрицы, 2 * k - 1, 1);
Символ2 = Сред(ТекстДляМатрицы, 2 * k, 1);
y1 = 0;
x1 = 0;
y2 = 0;
x2 = 0;
Для i = 0 По Размер - 1 Цикл
Для j = 0 По Размер - 1 Цикл
Если Матрица[i][j] = Символ1 Тогда
y1 = i;
x1 = j;
КонецЕсли;
Если Матрица[i + Размер][j + Размер] = Символ2 Тогда
y2 = i + Размер;
x2 = j + Размер;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Результат = Результат + Матрица[y1][x2] + Матрица[y2][x1];
КонецЦикла;
Возврат Результат;
КонецФункции
Функция Расшифровать(текст)
Перем Результат, ТекстДляМатрицы;
Перем x1, y1, x2, y2;
Перем i, j, k;
Результат = "";
ТекстДляМатрицы = ОграничитьсяАлфавитом(текст);
Если СтрДлина(ТекстДляМатрицы) % 2 <> 0 Тогда
ТекстДляМатрицы = ТекстДляМатрицы + "X";
КонецЕсли;
Для k = 1 По Цел(СтрДлина(ТекстДляМатрицы) / 2) Цикл
Символ1 = Сред(ТекстДляМатрицы, 2 * k - 1, 1);
Символ2 = Сред(ТекстДляМатрицы, 2 * k, 1);
y1 = 0;
x1 = 0;
y2 = 0;
x2 = 0;
Для i = 0 По Размер - 1 Цикл
Для j = 0 По Размер - 1 Цикл
Если Матрица[i][j + Размер] = Символ1 Тогда
y1 = i;
x1 = j + Размер;
КонецЕсли;
Если Матрица[i + Размер][j] = Символ2 Тогда
y2 = i + Размер;
x2 = j;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Результат = Результат + Матрица[y1][x2] + Матрица[y2][x1];
КонецЦикла;
Возврат Результат;
КонецФункции
Процедура ПечатьДвумерногоМассива(массив)
Перем Результат;
Перем i, j;
Результат = "";
Для i = 0 По массив.Количество() - 1 Цикл
Для j = 0 По массив[0].Количество() - 1 Цикл
Результат = Результат + " " + массив[i][j];
КонецЦикла;
Результат = Результат + ""
"";
КонецЦикла;
Сообщить(Результат);
КонецПроцедуры
Процедура Главная()
Перем пароль1, пароль2;
Перем СтрокаИсходная, СтрокаЗашифрованная, СтрокаРасшифрованная;
Инициализация();
пароль1 = "Example";
пароль2 = "SAMAG";
СоздатьМатрицу(пароль1, пароль2);
СтрокаИсходная = "http://samag.ru/";
СтрокаЗашифрованная = Зашифровать(СтрокаИсходная);
СтрокаРасшифрованная = Расшифровать(СтрокаЗашифрованная);
Сообщить(Алфавит);
Сообщить(пароль1);
Сообщить(пароль2);
ПечатьДвумерногоМассива(Матрица);
Сообщить(СтрокаИсходная);
Сообщить(СтрокаЗашифрованная);
Сообщить(СтрокаРасшифрованная);
КонецПроцедуры
Главная();
-----------------------------------------------------------------------------------------
Олимпиада по программированию: разбираем задачу, выбираем подход и язык для решения
Оксана Селендеева, Андрей Лозицкий
#include
using namespace std;
bool neravenstvo(long long x, long long y, long long p, long long q, long long r)
{
return (p*r >= x) && (q*r - p*r >= y - x);
}
int main()
{
long long x, y, p, q, t;
cin >> t;
for(int i = 0; i < t; ++i)
{
cin >> x >> y >> p >> q;
if(!neravenstvo(x, y, p, q, 1e9))
{
cout << -1 << endl;
continue;
}
for(long long r = 1; r <= 1e9; ++r)
{
if(neravenstvo(x, y, p, q, r))
{
cout << q*r – y << endl;
break;
}
}
}
}
#include
using namespace std;
bool neravenstvo(long long x, long long y, long long p, long long q, long long r) {
return p * r >= x && q * r - p * r >= y - x;
}
int main() {
int t;
cin >> t;
for(int i = 0; i < t; ++i)
{
long long x, y, p, q;
cin >> x >> y >> p >> q;
long long l = -1;
long long r = 1e9;
if (!neravenstvo(x, y, p, q, r)) {
cout << -1 << endl;
continue;
}
while (r - l > 1) {
ll m = (l + r) / 2;
if (neravenstvo(x, y, p, q, m)) {
r = m;
} else {
l = m;
}
}
cin << r * q - y << endl;
}
return 0;
}
#include
using namespace std;
int main() {
int t;
cin >> t;
for(int i = 0; i < t; ++i){
int x, y, p, q;
cin >> x >> y >> p >> q;
if (p == 0) {
cout << (x == 0 ? 0 : -1) << endl;
continue;
}
if (p == q) {
cout << (x == y ? 0 : -1) << endl;
continue;
}
int r1 = (x + p - 1) / p;
int r2 = ((y - x) + (q - p) - 1) / (q - p);
cout << (q * max(t1, t2) - y) << endl;
}
}
-----------------------------------------------------------------------------------------
Что должен знать и уметь системный администратор. Часть 3. Другие способы администрирования
Сергей Болдин
Enable-CsUser –Identity "Андреев Андрей Андреевич" –RegistrarPool srv-s4b.dd.org –SipAddress sip:andreev.aa@dd.org
Set-CsUser -Identity andreev.aa@dd.org –LineURI tel:1112233
Add-ADGroupMember "IT Department" -Members andreev.aa
Get-ADGroupMember "IT Department"
get-adcomputer "BUH-MASHA" | Disable-ADAccount
Get-ADUser sadmin -properties name, title, employeeid, physicaldeliveryofficename, telephonenumber, proxyaddresses, mail | select name, title, employeeid, physicaldeliveryofficename, telephonenumber, proxyaddresses, mail
Remove-CMDevice –DeviceName MININT-DGF34K
Get-CMDevice | where {$_.name –like ‘MININT*’} | Remove-CMDevice -Force
AdobeReader11.0.9.exe /S /Q
Far3_x32.msi /qn
FirefoxSetup.exe –ms
xcopy "\\pc111\install\Far3\Addons" "C:\Program Files\Far Manager" /q/e/s/y
reg add "HKU\.DEFAULT\Keyboard Layout\Preload" /v 1 /t REG_SZ /d 00000409 /f
reg add "HKU\.DEFAULT\Keyboard Layout\Preload" /v 2 /t REG_SZ /d 00000419 /f
SELECT DISTINCT SystemName, MachineID, PortName00, Name00, Status00, Nom_Kab, Inv_Nom, Password, Department, Description
FROM dbo.PRINTER_DEVICE_DATA
WHERE PortName00 (like '192.168.18.%')
sp_addlinkedserver 'ConnectAD',
'Active Directory Service Interfaces',
'ADSDSOObject',
'adsdatasource',
SELECT * FROM openquery (ConnectAD, 'SELECT Name, department, mail, physicalDeliveryOfficeName, telephoneNumber
FROM ''LDAP://DC=ASD,DC=OWN''
WHERE objectClass = ''User'' AND objectCategory = ''Person''
ORDER BY Name'),
-----------------------------------------------------------------------------------------
Генератор псевдослучайных чисел на основе линейного конгруэнтного метода в 1С
Кирилл Ткаченко
Перем семя;
Функция ЛКГ()
семя = (214013 * семя + 2531011) % 2147483648;
Возврат Цел(семя / 65536);
КонецФункции
Процедура Игра(номерИгры)
Перем буквыКарт;
Перем буквыМасти;
Перем карты;
Перем картыРез;
Перем карта, масть;
Перем i;
Перем инд;
Перем Рез;
буквыКарт = "A23456789TJQK";
буквыМасти = "♣♦♥♠";
карты = Новый Массив(52);
картыРез = Новый Массив(52);
Для i = 0 По 51 Цикл
карта = Сред(буквыКарт, Цел(i / 4) + 1, 1);
масть = Сред(буквыМасти, (i % 4) + 1, 1);
карты[i] = карта + масть;
КонецЦикла;
семя = номерИгры;
Для i = 0 По 51 Цикл
инд = ЛКГ() % (52 - i);
картыРез[i] = карты[инд];
карты[инд] = карты[51 - i];
КонецЦикла;
Рез = "";
Для i = 0 По 51 Цикл
Рез = Рез + " " + картыРез[i];
Если (i + 1) % 8 = 0 Тогда
Рез = Рез + ""
"";
КонецЕсли;
КонецЦикла;
Сообщить(Рез);
КонецПроцедуры
Игра(1);
Игра(617);
-----------------------------------------------------------------------------------------
Проверка работоспособности алгоритмов определения изменения агрегатного состояния металла
Шкундин С.З., Колистратов М.В., Белобокова Ю.А.
h = ones(7,7) / 49; %размер маски
Im = imfilter(Im,h);
…
sx0=[];spr0=[];K0=[];
…
%диапазон яркости изображения [0 1]
% step_expoz – уровень смещения яркости
for step_expoz=-0.4:0.1:0.4
…
Z=Im(:,:,1)+step_expoz;
%определение площади поверхности
sx(x)=S_Im(Z,1); %метод триангуляции
spr(x)=S_perimetr(Z,1); %метод рассечения
sp(x)=S_Im_pr(Z,1); %метод площадок
%накопление данных
sx0=[sx0 ;sx]; spr0=[spr0 ;spr]; K0=[K0 ;K];
end
-----------------------------------------------------------------------------------------