Рейтинг статьи: 3.400/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
Комментариев нет. Станьте первым!