1C и bCrypt шифрование

Опубликовано Опубликовано в рубрике 1C Программирование, Сайтостроение

Доброго времени суток, уважаемые читатели.

Сегодня я расскажу об одном весьма интересном опыте. Потребоваль для одного проекта вести базу логинов и паролей к сайту в 1С. Да так, чтоб в базе пароли хранились не в открытом виде, а зашифрованные методом bCrypt. Ввиду того, что 1С понятия не имеет что это такое, было принято шифрование выполнять на стороне веб-сервера, а со стороны 1С вызывать web-service, передавая в качестве параметра пароль в открытом виде, а в ответ получая зашифрованную строку.

Итак реализация:

На стороне веб-сервера находится файл Service.php

При вызове данного сервиса ожидается передача параметра Pass — методом GET, который содержит пароль в чистом виде. Сервис шифрует его и возвращает в формате JSON ответ, содержащий информацию об ошибке или ее осутствии и хеш пароля, который вернула функция шифрования.

выглядит это следующим образом:

Вызываем сервис http://hotel.skalnyy.com/api/Service.php без указания параметра Pass, получаем ответ:

Вызываем сервис http://hotel.skalnyy.com/api/Service.php?Pass=123 указывая параметру Pass пароль, который мы хотим зашифровать, получаем ответ:

 

на стороне 1С:7.7:

<< Продолжение следует… >>

Сброс пароля root для MySQL сервера

Опубликовано Опубликовано в рубрике Разное

Данная статья будет посвящена не столько проблемме сброса, сколько особенности на которую я наткнулся.
Многие кто пытаются сбросить пароль root сталкиваются с тем, что хоть и делают все по инструкции, но по какойто причине пароль не меняется.Visual Cage

Итак мой рецепт счастья:
1. Подготавливаем файл содержащий данную sql комманду:

Сохраняем данный файл например в /home/bitnami/mysql-init

2. Останавливаем mysql сервер

3. Запускаем сервер в безопасном режиме

4. Перезапускаем сервер

5. Удаляем наш файлик /home/bitnami/mysql-init

Ну а теперь самое главное в некоторых базах в таблице user поля Password нет. Вот такая петрушка…. вместо него необходимо использовать поле authentication_string

и файлик который мы готовили на шаге 1 будет выглядеть вот так:

Вот такие дела. Рад был помочь…

XML-RPC Спецификация

Опубликовано Опубликовано в рубрике Новости

Перевод оригинальной спецификации XML-RPC Specification

Перевод: Виталий Скальный 13 Январь 2016

Частичное или полное использование материалов данной статьи разрешается только при условии ссылки и/или прямой открытой для поисковых систем гиперссылки на непосредственный адрес материала на моем сайте.

Нарушение данного требования может трактоваться как нарушение авторского права.

 Данная страница содержит всю необходимую информацию, которая может вам понадобиться.

Обзор

XML-RPC — это протокол удаленного вызова процедур, который работает через Интернет.

XML-RPC запрос — это http — запрос отправленный методом Post. Тело запроса в формате XML. Процедура выполняется на сервере и ее результат, также возвращается в формате XML.

Параметрами процедуры могут быть скалярные величины, числа, строки, даты и т. д., а также могут быть сложными комбинированными и структурными.

Пример запроса

Это пример XML-RPC запроса:

[xml]POST /RPC2 HTTP/1.0
User-Agent: Frontier/5.1.2 (WinNT)
Host: betty.userland.com
Content-Type: text/xml
Content-length: 181

<?xml version="1.0"?>
<methodCall>
<methodName>examples.getStateName</methodName>
<params>
<param>
<value><i4>41</i4></value>
</param>
</params>
</methodCall>
[/xml]

Требование к заголовку

Формат URI в первой строке заголовка не обязателен. Например, он может быть пустым, одиночный сплеш, если сервер обрабатывает только XML-RPC запросы. Однако если сервер обрабатывает сочетание входящих http запросов, заголовок URI поможет серверу корректно перенаправить запрос на код обрабатывающий xml-RPC запросы. (В нашем примере URI /RPC2 говорит серверу что запросы XML-RPC необходимо перенаправлять скрипту /RPC2.)

User-Agent и Host должен быть указан.

Content-Type равен text/xml.

Content-Length должен быть указан и должен юыть правильным.

Требование к телу сообщения:

Тело сообщения должно быть в XML формате в единственной <methodCall> теге.

В теге <methodCall> должен содержаться <methodName> тег, это строка, содержащая имя метода, который мы вызываем. Строка может содержать только символы верхнего и нижнего регистра от A до Z, цифровые символы, 0-9, символ подчеркивания, точку, двоеточие и Слэш. Имя метода зависит исключительно от сервера, чтобы решить, как интерпретировать символы в имя_метода.

Например, параметр methodname может быть Именем файла, содержащего скрипт, который выполняется на входящий запрос. Это может быть имя ячейки в таблице базы данных. Или это может быть путь к файлу в иерархии папок и файлов.

Если у вызываемой процедуры есть параметры, то <methodCall> должен содержать тег <params>, который может содержать любое количество тэгов <param>, каждый из которых имеет <value>.

Скалярные значения

Тег <value> может содержать значения скалярного типа, тип обозначает вложенное значение внутри одного из тегов. Перечень возможных скалярных типов:

  • <i4> или <int> — четырехбайтовое знаковое целое число
  • <boolean> — булевое 0 (false) или 1 (true)
  • <string> — строка
  • <double> — число с плавающей точкой двойной точности
  • <dateTime.iso8601> — дата/время в формате 19980717T14:08:55
  • <base64> — в base64-кодировке

если тип не указан, по умолчанию принимается строка.

Структурное значение <struct>

Значение может также быть типа структура <struct>

Тег <struct> содержит теги <member>, а каждый тег <member> содержит тег  <name> и <value>

Пример двух-элементной структуры:

[xml]
<struct>
<member>
<name>lowerBound</name>
<value><i4>18</i4></value>
</member>
<member>
<name>upperBound</name>
<value><i4>139</i4></value>
</member>
</struct>
[/xml]

Структура может быть рекурсивной, значение <value> может содержать новую структуру <struct> или значение любого другого типа, включая Массивы <array>, которые будут описаны ниже.

Массив <array>

Значение <value> может быть типа Массив <array>.

Тег <array> содержит единичный тег <data>который, в свою очередь содержит любое количество тегов <value>.

Это пример четырег-элементного массива:

[xml]
<array>
<data>
<value><i4>12</i4></value>
<value><string>Egypt</string></value>
<value><boolean>0</boolean></value>
<value><i4>-31</i4></value>
</data>
</array>
[/xml]

<array> элементы не имеют имен.

Вы можете смешивать элементы, как на примере выше.

Массив может быть рекурсивным, значение <value> может содержать новый массив <array> или значение любого другого типа, включаю Структуру <struct>, которая была описана выше.

 

Ответы XML-RPC сервера будут описаны позже.

Спасибо за внимание.

VBS — Математические функции и конвертирование

Опубликовано Опубликовано в рубрике VBS

МАТЕМАТИЧЕСКИЕ ФУНКЦИИ
Abs() — Возвращает абсолютное значение числа, т.е. его модуль.RA Grani

Abs(-2)=2

Exp() — Возвращает результат возведения числа e (основание натуральных логарифмов) в указанную степень.

Exp(2)=7.38905609893065

Fix() и Int() — Отбрасывают дробрную часть. Разница в их работе только при работе с отрицательными числами.

Fix(2.4)=2 ; Fix(2.6)=2 ; Fix(-2.4)= -2 ; Fix(-2.6)=-2

Int(2.4)=2; Int(2.6)=2 ; Int(-2.4)=-3 ; Int(-2.6)=-3

Round() — Округление с заданной точностью.

Употребление: Round(число, колвознаковпослезапятой)

Round(5.7846357 , 3) = 5.784 ; Round(5.7846357)=6; Round(5.22323)=5

Sgn() — Возвращает, отрицательное ли число, положительное или ноль

Если аргумент меньше 0, то функция возвращает -1, если больше 0, то возвращается 1 и, если агрумент равен 0, то функция возвращает 0.

Sqr() — Возвращает квадратный корень указанного числа

Sqr(4)=2

Log()  — Возвращает значение натурального логорифма числа. Натуральным логарифмом называют логарифм по основанию e.

Для вычисления логарифма числа x по основанию n следует разделить натуральный логарифм числа x на натуральный логарифм числа n: Logn(x) = Log(x) / Log(n)

Так же в наличии стандартные тригонометрические функции:

Sin() — Синус, Cos() — Косинус, Tan() — тангенс.

Atn() — Возвращает значение угла в радианах.

ПРЕОБРАЗОВАНИЕ ПЕРЕМЕННЫХ

Для преобразования переменных используются следующие функции: CBool(), CByte(), CCur(), CDate(),CDbl(), CInt(), CLng(), CSng(), CStr()

Как вы видите, запомнить их легко по типу переменной. Чтобы преобразовать одну переменную в другую (преобразовать — convert, отсюда первый символ всех функций C). Поэтому давайте разберёмся, какие типы переменных могут быть.

Мы можете спросить, а почему так поздно об этом пишу? А всё дело в том, что до этого это всё было бы бесполезной информацией. Точнее, не бесполезной, а информацией не вовремя. VBS использует переменные типа Variant, т.е. мы не обязаны указывать какого типа переменная, VBS сама определяет это. Нам типы важны лишь уже непосредственно для вычислений и каких-либо операций. Поэтому, давайте взглянем на таблицу ниже:

Empty Инициализация типа Variant. Содержит 0 для числовых значений и пустую строку (“”) для строковых значений.
Null Не содержит никаких значащих данных.
Boolean Логический тип, может принимать значения True (истина) или False (ложь)
Byte Целое число в диапазоне 0…255.
Integer Целое число в диапазоне -32768…32767
Currency Денежный тип, диапазон от -922337203685477,5808 до 922337203685477,5807.
Long Целое число в диапазоне -2147483648…2147483647
Single Число с плавающей точкой в диапазоне от -3.402823E38 до -1.401298E-45 для отрицательных значений и от 1.401298E-45 до 3.402823E38 для положительных значений.
Double Число с плавающей точкой в диапазоне от -1.79769313486232E308 до -4.94065645841247E-324 для отрицательных значений и от 4.94065645841247E-324 до 1.79769313486232E308 для положительных значений.
Date (Time) Числовое значение, которое представляет дату в диапазоне от 1-го января 100 года до 31 декабря 9999 года.
String Строка переменной длины, которая может быть длиной до 2 миллиардов символов.
Object Объект.
Error Код ошибки.

Есть ещё полезная функция  — TypeName()

Var1 = CInt(InputBox(«Введите значение»))

MsgBox TypeName(Var1)

После того, как вы введёте число вам будет выдано «Integer», т.к. было преобразование String в Integer(CInt).

Есть ещё целый набор функций для проверки значения переменной:

IsNumeric(), IsDate(),IsArray(), IsEmpty(), IsError(), IsMissing(), IsNull(), IsObject()

Все они возвращают либо True(верно) и False(не верно).

Т.е . если нам нужно проверить, число ли в переменной Num, то можно выполнить что-нибудь вроде IF IsNumeric(Num) THEN…

VBS — Работа с папками при помощи FSO

Опубликовано Опубликовано в рубрике VBS, Разное

При помощи FSO можно работать с папками. Алгоритм начала работы такой:

1. Объявляем переменную. Не обязательно такое же название, но оно наиболее логичное. А ещё, ваш код будет понятнее для других.

Dim FSO

2. Записываем в переменную FSO копию объекта FileSystemObject, который предназначен для работы с файловой системой Windows

Set FSO=CreateObject(«Scripting.FileSystemObject»)

3. Получаем доступ к папке в переменной fold

Set fold= fso.GetFolder(«c:\Windows\»)

А теперь давайте посмотрим, что мы можем сделать с папками? (далее…)

VBS — Visual Basic Script

Опубликовано Опубликовано в рубрике VBS, Разное

Visual Basic Script — скриптовый язык программирования, интерпретируемый компонентом Windows Script Host. Он широко используется при создании скриптов в операционных системах семейства Microsoft Windows.

VBS-сценарий — это обычный текстовый файл с расширением *.vbs, который легко править в блокноте, а запускать на исполнение — двойным щелчком мыши или вызовом по имени в консоли.

Сценарии не компилируются, а интерпретируются. То есть для обработки скрипта в системе должен присутствовать интерпретатор языка VBS, и таких интерпретаторов в Windows два: оконный WScript и консольный CScript, оба интерпретатора это Windows Script Host (WSH).

В Visual Basic работают следующие правила:

  • длина строки не ограничена;
  • регистр символов не учитывается;
  • количество пробелов между параметрами не учитывается;
  • строку команды можно разрывать, а на месте разрыва нужно вставлять символ » _ «;
  • максимальная длина имени переменной 255 символов;
  • комментарии обозначаются символом » ‘ «.
  • несколько строк можно объединять в одну, предварительно разделив их символом » : «

Перечень объектов с которыми позволяет работать VB Script

  • Объекты
  • Объект Class
  • Объект Dictionary
    • Свойства объекта Dictionary
    • Методы объекта Dictionary
  • Объект Err
    • Свойства объекта Err
    • Методы объекта Err
  • Объект FileSystemObject
    • Свойства объекта FileSystemObject
    • Методы объекта FileSystemObject
  • Объект Drive
    • Свойства объекта Drive
  • Объект File
    • Свойства объекта File
    • Методы объекта File
  • Объект TextStream
    • Свойства объекта TextStream
    • Методы объекта TextStream
  • Объект Match
    • Свойства объекта Match
  • Объект RegExp
    • Свойства объекта RegExp
    • Методы объекта RegExp

Источник: vbsabout.wordpress.com

VBS — Работа с дисками при помощи FSO

Опубликовано Опубликовано в рубрике VBS, Разное

FileSystemObject

В VBS для работы с файлами существует FileSystemObject. Это специальный объект, для работы с файловой системой.

Для работы с ним необходимо использовать следующую конструкцию:

Dim FSO

Set FSO=CreateObject(«Scripting.FileSystemObject»)

Scripting — это имя библиотеки типов, а FileSystemObject — это имя объекта, который нужно создать.

Данная конструкцию объявляет переменную FSO и копирует туда объект FileSystemObject(в дальнейшем мы будем сокращать его до FSO).

Перед тем, как работать с чем-либо необходимо получить к этому доступ. Для этого используются следующие методы:

GetDrive() — Получить доступ к диску
GetFolder() — Получить доступ к папке
GetFile() — Получить доступ к файлу (далее…)

Ошибка при подключении к Analytics Service (OLAP)

Опубликовано Опубликовано в рубрике MS SQL Server, Разное

При попытке подключения к службе Analytics Service возникает ошибка, говорящая о том. что сервер не доступен.

Одной из прицин такого сообщения может быть отсутствие в системе необходимого провайдера — OLE DB Provider

Взять необходимый можно с оффициального сайта Microsoft:

For SQL Server 2012: http://www.microsoft.com/download/en/details.aspx?id=29065

For SQL Server 2008 R2: http://www.microsoft.com/download/en/details.aspx?id=16978

For SQL Server 2008: http://www.microsoft.com/download/en/details.aspx?id=8824

For SQL Server 2005: http://www.microsoft.com/download/en/details.aspx?id=15748

Как восстановить перезаписанный (удаленный) файл

Опубликовано Опубликовано в рубрике Разное

Случилась со мной такая напасть, был правильный рабочий файл и я случайно перезаписал поверх правильного пустой. Информация как бы потеряна, но поиск по сети интернет привел меня на один интересный совет. Как я понимаю при удалении файла  рецепт будет таким же.

Ситуация у меня была не совсем стандартная, так как перезаписана была внешняя обработка 1С 7.7 (файл с расширением *.ert) (далее…)