Как стать автором
Обновить
13
0

Программист

Отправить сообщение

По сути, с момента утраты зуба мы начинаем терять кость в этой области.

Так всегда же можно "подсыпать" искусственной кости и восстановить её объём. Так-что на это можно закрыть глаза.

Хорошая работа. Плюсую!
Есть люди, которым этого как раз не хватает)

Android в этом плане смотрится выигрешнее. На Java относительно легко можно запрограммировать то, что не хватает. Система достаточно открыта. С iOS в этом плане гораздо сложнее.

В телеграмме Kandinsky 3.1 вышел и похоже отключили Kandinsky 2.х. Эх, а 2.2 версия красивее всего генерировала женских персонажей по моим промптам. Грусть, печаль.

Например промпт: full body view, look at viewer, beautiful happy princess sitting on the throne, blond, blue eyes, angelic smile, no makeup, perfect body,
large breast, wide hips, very thin waist, golden ball gown dress, white sleeves, ruffles, backlight glow
Стиль: Детальное фото

Kandinsky 2.2

Kandinsky 3.1

Да, смориться неплохо, но уже что-то не то, как на мой взгляд.

Годная справочная статья. Плюсую.

Я так вижу, Вы хотите начать спор, который превратиться в "срач". Простите, нет. Я не люблю такие вещи. Я за конструктивное общение уважающих друг друга людей. И ещё, я за свободный мир и предлагаю остаться при своих мнениях, убеждениях, взглядах на мир и ограничиться только темой статьи)

За подсказку: как найти контактную информацию админа инстанса - спасибо)

Правда, к сожалению, не все pixelfed-инстансы умеют отвечать на это. Например https://insta.sdns.club/api/v2/instance выдаёт 404-страницу(

HTTPS тормозной протокол. С ним сайты открываются медленнее. Я не хочу чтоб мои сайты открывались и работали медленно.

А с точки зрения безопасности: мне нечего скрывать. У меня ничего ценного нет. Да и мнения я о себе невысокого. Кому я вообще нужен?))

Можно конечно заморочится с самоподписным сертификатом, но мне пока-что лень.

Вы, кстати, не знаете, есть ли какой-нибудь стандартизованный способ узнать кто администратор инстанца и как с ним связаться?

Очень интересная статья) Прям уровня Варламова или даже выше, как на мой
взгляд. К IT конечно почти не относиться, но всё равно интересно.

Если ещё будут такие статьи, то я уверен, что на хабре найдутся люди, которые с удовольствием их почитают и плюсанут)

Тогда я зря потратил свои силы и время. Печалька.

Похоже что с activitypub мне не по пути.

Я перепроверил KeyId, там всё правильно, https нет. У меня на сервере нет и не будет поддержки https.

Я перепроверил подпись на джаве и подпись у меня генерируется правильная.

Вот код, которым проверял:

String message = "(request-target): post /users/1/inbox\nhost: friends.grishka.me\ndate: Sun, 19 Nov 2023 00:04:03 MSK\ndigest: SHA-256=VMA4hX2mi+Wa88vu97Q+JWHm8fWAO1s8xW2Jc7y72eQ=";
byte[] sign = Base64.getDecoder().decode("obYfri5qtRScx51y4JQsn7McQtTU22ZKNTjPWlF7Muq8aQuezlGMsDX7Pwuss7OnLyPrTwMhb2fOBEzsHzWIEtBBD1Le4YDlHBweADTMOX0YymCoAXu4DQezo17U8g3eaM3eNHkI8o1Toh0dkjmTTKg0aciRswwvFDVXxUz99au1UhDk3b68uG2YIw9r3dAuZQTk2SYIliMNSy9K5scc1aoTz87cpl+A/RQm2GXYnp5vml8rzb7J69rOaFckSfRbIMf1sSaiAKR4Ivmt4ltVn1VR+2rwyRoxTGKinmOiJHqx3AwAhCS3rf5yUAHT/tBiTxja4o/SVgN0SaFAYq1NaA=="); 

// 1 - reading public key :
Scanner scanner = new Scanner(new File("activitypub.public.pem"));
StringBuilder sb = new StringBuilder();
while (scanner.hasNextLine()) {
	String line = scanner.nextLine();
	if (line.startsWith("---") == false)
		sb.append( line );
}

// 2 - loading public key 
X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec( Base64.getDecoder().decode(sb.toString()));
PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(publicKeySpec);

// 3 - verifying content with signature and content :
Signature sig = Signature.getInstance("SHA256withRSA");
sig.initVerify(publicKey);
sig.update(message.getBytes());
if (sig.verify(sign) == false)
	System.out.println("Bad signature!");
else 
	System.out.println("OK!");

Теперь Ваш сервер отвечает: Bad request: In the absence of a valid LD-signature, HTTP signature must be made by the activity actor

Хотя я проверяю подпись публичным ключём и подпись корректная.

Может алгоритм не sha256WithRSAEncryption, а какой-то другой должен быть?

...на тот же адрес, по которому вы видите профиль в браузере:

Профиль чей и где? Непонятно. У меня вообще нет никакого профиля. Я только экспериментирую. Я так понял надо вместо mastodon.social указать свой домен?

Не понятно что за ACTOR_ID когда надо формировать заголовок Signature. Решил ставить URL до своего профиля.

В общем, с третьего захода удалось сгенерировать корректную подпись и начать правильно отдавать информацию о своём акторе. Но выскакивает ошибка Вашего сервера.

Unhandled exception: smithereen.exceptions.InternalServerErrorException: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry 'SaemonZixel-y777.ru' for key 'users.username'

Тестирую вот отсюда: http://y777.ru/test-send-activity

Код на PHP следующий:

    $body = '{
  "@context": "https://www.w3.org/ns/activitystreams",
  "id": "http://y777.ru/createTestPost1",
  "type": "Create",
  "actor": "http://y777.ru/users/saemonzixel",
  "to": "https://www.w3.org/ns/activitystreams#Public",
  "object": {
    "id": "http://y777.ru/testPost1",
    "type": "Note",
    "published": "2023-11-05T12:00:00Z",
    "attributedTo": "http://y777.ru/users/saemonzixel",
    "to": "https://www.w3.org/ns/activitystreams#Public",
    "inReplyTo": "https://friends.grishka.me/posts/884435",
    "content": "<p>Привет с Хабра!</p>"
  }
}';
	$date = date('D, j M Y H:i:s T');
	$digest = "SHA-256=".base64_encode(hash('sha256', $body, true));
	$toSign = "(request-target): post /users/1/inbox\nhost: friends.grishka.me\ndate: $date\ndigest: $digest";
	$private_key = file_get_contents('activitypub.private.pem');
	$binary_signature = "";
	openssl_sign($toSign, $binary_signature, $private_key, 'sha256WithRSAEncryption');

	$public_key_pem = file_get_contents('activitypub.public.pem');
	$r = openssl_verify($toSign, $binary_signature, $public_key_pem, "sha256WithRSAEncryption");
	echo "--- toSign ---\n$toSign\n--- openssl_verify() ---\n$r\n";
	
	$context = stream_context_create(array(
				'http' => array(
					'method' => 'POST',
					'content' => $body,
					'header'=> "Date: $date\r\n" .
						"Digest: $digest\r\n" .
						"Signature: keyId=\"http://y777.ru/users/saemonzixel#main-key\",headers=\"(request-target) host date digest\",signature=\"".base64_encode($binary_signature)."\",algorithm=\"rsa-sha256\"\r\n" .
						"Content-Type: application/jrd+json; charset=utf-8\r\n",
					'ignore_errors' => '1'
				),
				"ssl"=>array(
					"verify_peer"=>false,
					"verify_peer_name"=>false,
				)
			));
	$http_resp = file_get_contents("https://friends.grishka.me/users/1/inbox", false, $context);
	echo "--- Response ---\n$http_resp\n\n----------------\n";
	echo "Signature: keyId=\"http://y777.ru/users/saemonzixel#main-key\",headers=\"(request-target) host date digest\",signature=\"".base64_encode($binary_signature)."\",algorithm=\"rsa-sha256\"\r\n";
	file_put_contents('activitypub.log', print_r($http_resp, true), FILE_APPEND);
	exit;

Интересно, cons-строки могут хранить только 2 части строки или больше?

Есть такая Нижегородская компания - Гарда. И она тоже занимается сетевыми программами комплексами. У них есть система "Периметр", которая специализируется по сетевой защите. Система достаточно большая и, вроде как, много что умеет. Я, к сожалению, слабо разбираюсь в теме, но мне кажется половину из приведённого в статье - она умеет.

Странно, что не в упоминается CoffeeScript. Во времена пика популярности Ruby on Rails был тоже весьма популярен.

И кстати, у DevOps ещё bash-скрипт популярен. Тоже странно, что его нет в опросе.

Хмм... У меня на iOS 7.1 стоит Телеграм 4.9.2 и продолжает работать. Но естественно не всё поддерживает. Всплывает "Unsupported User" для контактов зарегистрированных недавно. В каналах иногда встречаются "Not compatible message type". Звонки тоже не работают. Но пользоваться вполне можно)

Это инстанс социальной сети mastodon. Есть предположение, что он как-то связан с linux.org.ru. Как-бы альтернатива "голубой птички", которая у нас заблокирована. Я там зареган. Аудитория может и скудная, но старается быть дружелюбной)

А вы не хотите завести mastadon-аккаунт например на lor.sh? И делиться время от времени своими успехами более публично?

Несложно догадаться, что непопулярен тут и питон. Вместо него в ходу язык Anaconda.

Гугль говорит, что Anaconda это дистрибутив языков программирования Python и R, включающий набор популярных свободных библиотек и т.д.
Или что-то другое имелось ввиду?

Все пишут на LatinC (произносится как "Латин Эс").

А вот по поводу этой штуки гугл ничего не говорит. А очень интересно, что это за прародитель 1С такой. Очень хотелось бы взглянуть на него)

Разговор на форуме --
Абонент: Да сделайте уже хоть что-нибудь! Ваше
оборудование у нас в подъезде за такой хлипкой дверью лежит.. Эту дверь
уже ни один раз какие-то отморозки оторвать пытались.. Только вчера вот
отгонял каких-то...
Представитель Тех.поддержки: Уважаемый.. Это были наши сотрудники...

Взято с Bash.org.ru.

Информация

В рейтинге
Не участвует
Откуда
Краснодар, Краснодарский край, Россия
Дата рождения
Зарегистрирован
Активность