cd ..; cd foo можно сделать cd ../tmp/q$ ls -l
total 0
-rw-rw-r-- 1 lynn lynn 0 nov 1 16:01 2
$ rm -r ../q
$ mkdir ../q
$ touch ../q/3
$ ls -l
total 0
$ cd .
$ ls -l
total 0
-rw-rw-r-- 1 lynn lynn 0 nov 1 16:04 3 # key
$ echo qEExPE+jkJxQUt8fSO+XwzXgRGh6kLHy+lWEe6Z8T6s= | xxd -l 32 -ps -c 256
7145457850452b6a6b4a785155743866534f2b58777a5867524768366b4c4879
# iv
$ echo jPNGTNLtGIBc7Jv2UXj7a3FNQk13eUJ5T3VIUXlOS0ZVOEpnMUpPMnhvQXg5bE5kMGFHejVxaTFnYTA9 | base64 -d | xxd -l 16 -ps
8cf3464cd2ed18805cec9bf65178fb6b
# encrypted text
$ echo jPNGTNLtGIBc7Jv2UXj7a3FNQk13eUJ5T3VIUXlOS0ZVOEpnMUpPMnhvQXg5bE5kMGFHejVxaTFnYTA9 | base64 -d | cut -b 17-
qMBMwyByOuHQyNKFU8Jg1JO2xoAx9lNd0aGz5qi1ga0=
# результат
$ echo qMBMwyByOuHQyNKFU8Jg1JO2xoAx9lNd0aGz5qi1ga0= | openssl AES-256-CBC -d -a -K 7145457850452b6a6b4a785155743866534f2b58777a5867524768366b4c4879 -iv 8CF3464CD2ED18805CEC9BF65178FB6B
/playlist.m3u8+1729705980// Вспомогательные функции
const B = (str) => Uint8Array.from(str, c => c.charCodeAt(0));
const S = (buf) => String.fromCharCode(...new Uint8Array(buf));
// дано
const encryptedData = "jPNGTNLtGIBc7Jv2UXj7a3FNQk13eUJ5T3VIUXlOS0ZVOEpnMUpPMnhvQXg5bE5kMGFHejVxaTFnYTA9";
const key = "qEExPE+jkJxQUt8fSO+XwzXgRGh6kLHy+lWEe6Z8T6s=";
const iv = B(atob(encryptedData).slice(0, 16));
const cryptoKey = await crypto.subtle.importKey(
'raw',
// На самом деле используется только 32 байта из key
B(key.slice(0, 32)),
'AES-CBC',
true,
['encrypt', 'decrypt']
);
const encryptedText = B(atob(atob(encryptedData).slice(16)));
let decrypted = S(await crypto.subtle.decrypt({ name: 'AES-CBC', iv }, cryptoKey, encryptedText));
console.log(decrypted); // /playlist.m3u8+1729705980 background: url("../images/hogwarts.jpeg") center / cover no-repeat;имя_пользователя.github.io<meta name="viewport" content="width=device-width, initial-scale=1">credentials: 'include'Access-Control-Allow-Credentials и Access-Control-Allow-Origin:nth-child(3n + 1) выберет нам первые элементы каждого ряда.:nth-last-child(-n + 2).:nth-child(3n + 1):nth-last-child(-n + 2).~ что бы выбрать все (в вашем случае не больше одного) элементы которые идут после уже выбранного.li:nth-child(3n + 1):nth-last-child(-n + 2),
li:nth-child(3n + 1):nth-last-child(-n + 2) ~ li {
.....
}-n + 2 на -n + 3.li:nth-child(3n):nth-last-child(-n + 3) ~ li {
.....
}&) заменить на HTML-сущность (&).TEXT_ARTIFACT_URL="$CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/artifacts/$CI_COMMIT_BRANCH/download?job=$3&job_token=$ARTIFACT_TOKEN"
TEXT_ARTIFACT_URL_HREF="Ссылка на артефакт: "'<a href="'$TEXT_ARTIFACT_URL'">Download Artifact</a>'
echo $TEXT_ARTIFACT_URL_HREFTEXT_ARTIFACT_URL_HREF="Ссылка на артефакт: <a href='$TEXT_ARTIFACT_URL'>Download Artifact</a>" # вместо настоящих серверов указываем тут промежуточные,
# которые определены в этом же конфиге ниже
upstream valid {
server 127.0.10.1:80;
server 127.0.10.2:80;
}
# промежуточный сервер
server {
listen 127.0.10.1:80;
location / {
proxy_pass http://validator.amd.ru;
# тут nginx автоматически добавляет proxy_set_header Host validator.amd.ru;
# (берёт имя домена из proxy_pass)
}
}
# второй промежуточный сервер
server {
listen 127.0.10.2:80;
location / {
proxy_pass http://validator.bm.ru;
# тут nginx автоматически добавляет proxy_set_header Host validator.bm.ru;
}
}
# тут ничего не меняем
server {
...
location /api/valid {
proxy_pass http://valid/api/validators;
# теперь запросы проксируются в промежуточные сервера, которые проксируют
# в настоящие с правильным именем домена
}
} $ echo -n 'hello habr' | openssl enc -a -aes-256-ecb -K 4446323738323245364331303639424446323738434435393532324536333130
GoMz9XzmRJ3m5QKwxuIceA==$ echo 'GoMz9XzmRJ3m5QKwxuIceA==' | openssl enc -a -aes-256-ecb -K 4446323738323245364331303639424446323738434435393532324536333130 -d
hello habr$ echo -n DF27822E6C1069BDF278CD59522E6310 | xxd -pu -c 32
4446323738323245364331303639424446323738434435393532324536333130 ssh://user@xxx.xxx.xxx.xxx:60321/var/www/webshop/.gitdocument.querySelectorAll('link').forEach((e => t(e)))
function t(e){"text/css"!=e.type&&"stylesheet"!=e.rel||!e.href||new URL(e.href,document.baseURI).origin==location.origin&&fetch(e.getAttribute("href")).then((async t=>{const i=await t.text();let n=Pt.transpileStyleSheet(i,!0);if(n=Pt.transpileStyleSheet(i,!1),n!=i){const t=new Blob([n],{type:"text/css"}),i=URL.createObjectURL(t);e.setAttribute("href",i)}}))} git log -S user.access