nettips.ru

Работа программы a4980 со станцией Alcatel Omni PCX Enterprise

На главную Cisco Systems VoIP Arduino маршрутизатор Беларусь Android Asterisk коммутатор Умный сетевой хаос дом Nateks Alcatel MTS Velcom Python Gigaset ZTE Grandstream Huawei админы шутят о сайте Zelax Allied Telesis D-Link Штрихкоды HP
Телефонные номера доступа sip операторов VitebskPets - инфопомощь животным в Витебске Телефонные коды городов и стран мира.

Рейтинг статьи: 3.400/5 Рейтинг 3.40 из 5Рейтинг 3.40 из 5Рейтинг 3.40 из 5Рейтинг 3.40 из 5Рейтинг 3.40 из 5 (5 голосов).

Кто пользовался программой a4980 на Alcatel 4400 помнят эту старую програмку, на которую давалось 5 бесплатных лицензий. После перехода на Enterpricse лицензии стали неограниченными, однако после очередного обновления станции программа перестало работать управление, хотя сама программа работает.

Спонсор этой страницы:

После некоторых размышлений решили не отказываться от программы, и попытаться распотрошить базу.

Расположение базы A4980

База пользователей находится на сервере в файле
c:\Program Files\Alcatel\OmniPCXTSA\dyn\alcatel@3595\cfg\users_lines
alcatel это имя сервера. У Вас скорее всего другое.

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

Выключить сервисы

net stop "Alcatel Open Telephony Server"
net stop "a47xxsrv"

Включить сервисы

net start "a47xxsrv"
net start "Alcatel Open Telephony Server"

Структура файла users_lines базы A4980

В файле содержится список пользователей и список линий, привязанных к пользователям. К пользователю может быть подключено несколько линий (номеров)

  • Заголовок RELEASE: 12 - 12 байт
  • количество пользователей - слово, или 2 байта
  • Пользователь 1 - 104 байта
    • Имя 1 - 16 байт
    • Номер 1 - 16 байт
    • Номер 1 - 12 байт
    • login 1 - 16 байт
    • Пароль и прочие параметры - 44 байта
  • Пользователь 2 - 104 байта
    • Имя 2 - 16 байт
    • Номер 2 - 16 байт
    • Номер 2 - 12 байт
    • login 2 - 16 байт
    • Пароль и прочие параметры - 44 байта
  • Пользователь 3 - 104 байта
  • ...
  • количество линий (номеров)- слово, или 2 байта
  • линия (номер) 1 - 124 байта
    • номер главного телефона (номер пользователя) - 12 байт
    • пароль для блокировки телефона на АТС - 16 байт
    • Тип телефонного аппарата - 17 байт
    • номер линии - 12 байт
    • прочие параметры - ..67 байта
  • линия (номер) 2 - 124 байта
  • линия (номер) 3 - 124 байта
  • ...

Потрошение файла users_lines базы A4980

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

var f_in,f_out:file of byte;
  col,i,j:word;
  c_in:byte;
  c_col:byte;
  st,name:string;
  u_l:array[1..124] of byte;
begin
  assign(f_in,'users_lines');
  reset(f_in);
  {Заголовок}
  assign(f_out,'1_start');
  rewrite(f_out);
  for i:=1 to 11 do
   begin
   read(f_in,c_in);
   write(f_out,c_in);
   end;
  close(f_out);
 
  {Количество пользователей}
  assign(f_out,'2_users');
  rewrite(f_out);
  read(f_in,c_col);
  write(f_out,c_col);
  col:=c_col;
  read(f_in,c_col);
  write(f_out,c_col);
  col:=col+c_col*256;
  close(f_out);
 
  {Пользователи}
  for i:=1 to col do
  begin
    name:='';
    for j:=1 to 16 do
      begin
      read(f_in,c_col);
      u_l[j]:=c_col;
      end;
    for j:=17 to 20 do
      begin
      read(f_in,c_col);
      u_l[j]:=c_col;
      name:=name+chr(c_col);
      end;
    for j:=21 to 104 do
      begin
      read(f_in,c_col);
      u_l[j]:=c_col;
      end;
    assign(f_out,'users\u_'+name);
    rewrite(f_out);
    for j:=1 to 104 do
      write(f_out,u_l[j]);
  close(f_out);
  end;
 
 {Количество line}
  assign(f_out,'4_lines');
  rewrite(f_out);
  read(f_in,c_col);
  write(f_out,c_col);
  col:=c_col;
  read(f_in,c_col);
  write(f_out,c_col);
  col:=col+c_col*256;
  close(f_out);
 
  {lines}
  for i:=1 to col do
  begin
    name:='';
    for j:=1 to 4 do
      begin
      read(f_in,c_col);
      u_l[j]:=c_col;
      name:=name+chr(c_col);
      end;
    for j:=5 to 124 do
      begin
      read(f_in,c_col);
      u_l[j]:=c_col;
      end;
    assign(f_out,'lines\l_'+name);
    rewrite(f_out);
    for j:=1 to 124 do
      write(f_out,u_l[j]);
    close(f_out);
  end;
  close(f_in);
end.

Работа с пользователями и линиями A4980

Для создания новых пользователей есть заготовка пользователей и линий для a4980. Пароль в заготовленном файле пользователя Alcatel (с большой буквы). Заготовки линий для 4-х самых распространенных типов телефонов. Для новых телефонов, типа 4019 маркировка в программе не предусмотрена, выбирайте ближайший по типу.

С помощью любого HEX редактора (я вообще правил в FARe) можно подправить файлы пользователей и линий (не значащие байты заполнены кодом 0). Можно добавить новых пользователей или удалить старых.
При добавлении или удалении пользователя не забудьте про линии.

Сборка файла users_lines базы A4980

Посмотреть количество пользователей и линий в папка users и lines.
Подправить соответственно фалы 4_LINES и 2_USERS, не забыв, что первым идет младший байт, вторым старший.
Я подправил в том же FARe использовав клавишу ALT и цифровую клавиатуру.

Далее выполняем батник.

COPY /B 1_START + 2_USERS users_lines
FOR /R users %%I in (*.*) do copy /b users_lines + %%I users_lines
copy /b users_lines + 4_LINES users_lines
FOR /R lines %%I in (*.*) do copy /b users_lines + %%I users_lines

Получаем новый файл users_lines с базой a4980.

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

На этом пока все. Текущих данных мне хватает. Если народу тема будет интересна, могу покапать дальше.

п.с. Может кто подскажет, как избавиться от ошибки падения клиентской проги a4980 при попытке перемещения окна по windws 7?

Alcatel Программирование Pascal

Пожалуйста, оцените и ВЫ эту статью:

Комментариев нет. Станьте первым!


Ваши отзывы и предложения по работе сайта направляйте на форму обратной связи.

Яндекс.Метрика