LINUX.ORG.RU

Сообщения ZeroMemory

 

Docker: error loading seccomp filter into kernel

Не могу разобраться с проблемой, которая сегодня начала возникать при запуске любых контейнеров в докере:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused «error loading seccomp filter into kernel: invalid argument»: unknown.

В гугле много обсуждений этой проблемы, но нет ни одного решения. У меня на рабочем месте стоит убунта 18.04, а докер я ставил по этому мануалу: https://docs.docker.com/install/linux/docker-ce/ubuntu/

Ошибка стала возникать неожиданно. Могу предположить, что это произошло после обновления системы, но я не заметил точный момент поломки. Что с этим делать?

После поломки я обновил убунту с версии 16.04 до 18.04, но это не помогло. Докер пеерустанавливал несколько раз, пробовал ставить разные версии.

 ,

ZeroMemory
()

Запустить RethinkDB в Docker

Мне нужно развернуть базу данных RethinkDB в докере. При этом нужно, чтобы данные таблиц не терялись при остановке контейнера. RethinkDB хранит все свои данные в одной директории. У меня на локалхосте это /home/aoizora/rethinkdb_data.

Сейчас я тестирую докеризацию ресинка только на локалхосте. Собрал образ на основе rethinkdb из репозитория при помощи такого докер-файла:

FROM rethinkdb
EXPOSE 8080
EXPOSE 28015
EXPOSE 29015
VOLUME /home/aoizora/rethinkdb_data
CMD ["rethinkdb", "-d", "/home/aoizora/rethinkdb_data"]

Здесь я открываю три порта по умолчанию (8080 используется для администрирования), пробрасываю директорию rethinkdb_data и запускаю сервер.

Собираю образ такой командой: docker build -t rethinkdb-img .

Запускаю образ так: docker run -p 8080:8080 -p 28015:28015 -p 29015:29015 -v /home/aoizora/rethinkdb_data rethinkdb-img

Здесь при помощи ключа -v я пытаюсь еще раз пробросить директорию с данными. Если зайти в админку по адресу localhost:8080, то виду ошибку Connection Reset и в админку зайти невозможно. Если остановить контейнер, то вижу сообщение о том, что соединиться вообще невозможно.

Как правильно докеризировать эту базу данных?

 ,

ZeroMemory
()

Как использовать xsd-схему с описанием soap-запроса

Мне нужно выполнять запросы в информационную систему по SOAP. Есть руководство программиста с описанием xml-запросов, но там описаны не все запросы. Часть запросов задекларирована и говорится, что описание запросов находится в xsd-схемах. Мне прислали эти схемы, но я не знаю, как ими пользоваться.

Вот wsdl-описание сервиса:

<?xml version="1.0"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" name="IEtranSysservice" targetNamespace="http://tempuri.org/" xmlns:tns="http://tempuri.org/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:SysEtranIntf">
    
    <types>
        <xsd:schema
            targetNamespace="EtranFiledCars.xsd"
            xmlns:EtranFiledCars="EtranFiledCars.xsd"
            xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            
            <xsd:include schemaLocation="schemas/EtranFiledCars.xsd"/>
        </xsd:schema>
    </types>
    
    <message name="SendBlockRequest">
        <part name="Text" type="xs:string"/>
    </message>
    <message name="SendBlockResponse">
        <part name="return" type="xs:boolean"/>
    </message>
    <message name="GetBlockRequest">
        <part name="Login" type="xs:string"/>
        <part name="Password" type="xs:string"/>
        <part name="Text" type="xs:string"/>
    </message>
    <message name="GetBlockResponse">
        <part name="Text" type="xs:string"/>
        <part name="return" type="xs:boolean"/>
    </message>
    <portType name="IEtranSys">
        <operation name="SendBlock">
            <input message="tns:SendBlockRequest"/>
            <output message="tns:SendBlockResponse"/>
        </operation>
        <operation name="GetBlock">
            <input message="tns:GetBlockRequest"/>
            <output message="tns:GetBlockResponse"/>
        </operation>
    </portType>
    <binding name="IEtranSysbinding" type="tns:IEtranSys">
        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="SendBlock">
            <soap:operation soapAction="urn:SysEtranInt" style="rpc"/>
            <input>
                <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="SysEtranInt"/>
            </input>
            <output>
                <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="SysEtranInt"/>
            </output>
        </operation>
        <operation name="GetBlock">
            <soap:operation soapAction="urn:SysEtranInt" style="rpc"/>
            <input>
                <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="SysEtranInt"/>
            </input>
            <output>
                <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="SysEtranInt"/>
            </output>
        </operation>
    </binding>
    <service name="IEtranSysservice">
        <port name="IEtranSysPort" binding="tns:IEtranSysbinding">
            <soap:address location="http://10.248.35.14:8092/EtranServer/EtranLR.dll/soap"/>
        </port>
    </service>
</definitions>

И вот xsd-схема из файла:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:ecat="http://intellex.ru/Etran/ASUASU/Categories">
    <xs:import namespace="http://intellex.ru/Etran/ASUASU/Categories" schemaLocation="EtranCategories.xsd"/>
    <xs:include schemaLocation="EtranCommonMessages.xsd"/>
    
    <xs:annotation>
        <xs:documentation>Сообщения информационного обмена АС Этран - внешнее АСУ. 
            Информация о наличии/отсутствии заготовок накладных на порожние собственные вагоны поданные, но не убранные с пути необщего пользования.</xs:documentation>
    </xs:annotation>
    
    <xs:element name="invoiceFiledCars">
        <xs:annotation>
            <xs:documentation>Запрос справки о наличии/отсутствии заготовок накладных на порожние собственные вагоны поданные, но не убранные с пути необщего пользования. 
                Поиск данных осуществляется за период 60 дней. В ответ АС Этран возвращает invoiceFiledCarsReply
            </xs:documentation>
        </xs:annotation>
    </xs:element>
    
    <xs:element name="invoiceFiledCarsReply">
        <xs:annotation>
            <xs:documentation>Список заготовок накладных на порожние собственные вагоны поданные, но не убранные с пути необщего пользования. 
                В ответе передается список порожних вагонов с накладными на порожняк, если они есть (только в состояниях "Приемосдатчиком принято" и "Согласование уведомления"). Ответ на запрос invoiceFiledCars. </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:complexContent>
                <xs:extension base="SimpleAnswer">
                    <xs:sequence>
                        <xs:element ref="invoiceFiledCar" minOccurs="0" maxOccurs="unbounded">
                        </xs:element>          
                    </xs:sequence>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="invoiceFiledCar">
        <xs:annotation>
            <xs:documentation> Накладная на поданный собственный порожний вагон</xs:documentation>
        </xs:annotation>
        <xs:complexType>   
            <xs:sequence>
                <xs:element name="Document" type="SimpleDocument" minOccurs="0" maxOccurs="1">
                    <xs:annotation>
                        <xs:documentation>Электронный документ на поданный собственный порожний вагон.</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="FiledCarDate" type="ecat:DateTimeType" minOccurs="1" maxOccurs="1">
                    <xs:annotation>
                        <xs:documentation>Дата подачи на путь необщего пользования</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="Car" type="TCar" minOccurs="1" maxOccurs="1">
                    <xs:annotation>
                        <xs:documentation>Поданный собственный порожний вагон</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="Station" type="TStation" minOccurs="1" maxOccurs="1">
                    <xs:annotation>
                        <xs:documentation>Станция подачи</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="ToStation" type="TStation" minOccurs="0" maxOccurs="1">
                    <xs:annotation>
                        <xs:documentation>Станция назначения</xs:documentation>
                    </xs:annotation>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Что, куда и как подключить?

 ,

ZeroMemory
()

Написать хедер для ассемблерной статической либы

У меня есть статическая либа BigLib для работы с длинной арифметикой, написанная на ассемблере. Я хочу использовать ее в проекте на си. Как написать для нее хедер, чтобы можно было использовать функции из этой либы? Вот пример деклараций в biglib.inc:

_BigCreate		proto	:dword				; dtValue
_BigDestroy		proto	:dword				; pBig
_BigCopy		proto	:dword,:dword			; pBig1,pBig2
_BigCompare		proto	:dword,:dword			; pBig1,pBig2
_BigCompare32		proto	:dword,:dword			; pBig,dtValue

Я пишу нечто такое:

#ifndef BIGLIB_H
#define BIGLIB_H

typedef unsigned long DWORD;

extern DWORD _BigCreate(DWORD initValue);

#endif

Но компилятор ругается на то, что Unresolved external symbol '__BigCreate'. В настройках линкера я подключил эту библиотеку. Что может быть не так?

 , ,

ZeroMemory
()

Свертка массива байт и разбиение на байты в реализации RSA при помощи GMP

Кто-нибудь пытался реализовывать криптосистемы при помощи библиотеки GMP? Я хочу написать функцию, которая получает на вход блок исходного текста в виде массива байт, сворачивает байты в длинное число по основанию 256 и шифрует это число стандартным способом. После этого полученное число разбивается на байты и записывается в выходной массив. Получилось как-то так:

void rsa_encrypt_block(char *result, char *source, struct RSA_CONTEXT *rsa)
{
	mpz_t base_256_encoded;
	mpz_t encrypted;
	mpz_t next_256_power;
	mpz_t quotient;
	int i;

	mpz_init(base_256_encoded);
	mpz_init(next_256_power);
	mpz_init(encrypted);
	mpz_init(quotient);

	// Переводим в систему счисления по основанию 256
	for (i = 0; i < RSA_BLOCK_SIZE_BYTES; i++)
	{
		mpz_ui_pow_ui(next_256_power, 256, i);
		mpz_addmul_ui(base_256_encoded, next_256_power, source[i]);
	}


	// Шифруем полученное на предыдущем шаге значение
	rsa_encrypt(&encrypted, &base_256_encoded, rsa);

	gmp_printf("Encrypted in [rsa_encrypt_block] = %Zd\n", encrypted);
	
	// Преобразуем зашифрованное сообщение в масив байт
	for (i = 0; i < RSA_BLOCK_SIZE_BYTES; i++)
	{
		result[i] = mpz_tdiv_q_ui(quotient, encrypted, 256);
		mpz_set(encrypted, quotient);
		printf("%u ", result[i]);
	}
}

Строка printf(«%u », result); показывает, что что-то пошло не так: часть значение со знаком минус. Такого быть не должно. Поэтому я думаю, что я выбрал неправильную функцию для деления. Как можно исправить эту ошибку?

Документацию читал здесь: https://gmplib.org/manual/Integer-Division.html

 ,

ZeroMemory
()

RSS подписка на новые темы