dvolodin Опубликовано 30 мая, 2009 · Жалоба Здравствуйте. Поставил себе NOC 0.2.2, при установке особых проблем не возникло, но при выполнении ./manage.py migrate возникла такая ошибка: Running migrations for main: psycopg2.DataError: character 0xd090 of encoding "UTF8" has no equivalent in "LATIN1" Надо было создать базу с кодировкой UTF8При запуске, в веб-интерфейсе, во всех таблицах кроме main происходит следующее: Environment: Exception Type: ProgrammingError at /admin/sa/managedobject/ Exception Value: relation "sa_managedobject" does not exist Вопрос: связано-ли первое со вторым и как с этим бороться. Система Slackware 12.1, все пакеты ставил по мануалу. Заранее спасибо. Связано, из-за ошибки с кодировкой базы не были построены все необходимые таблицы Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
flash.one Опубликовано 1 июня, 2009 · Жалоба Тогда в noc-sae.conf и noc-activator.conf надо прописать: loglevel = debug перезапустить активатор и SAE, повторить попытку и посмотреть, что в логах Лежит куча файликов одинакового сожержания:(dp1S'component' p2 S'noc-activator' p3 sS'source' p4 S'system' p5 sS'traceback' p6 VUNHANDLED EXCEPTION (2009-06-01 16:25:59.245719)\u000AWorking directory: /opt/noc\u000A<class 'socket.error'>\u000A(111, 'Connection refused')\u000ASTART OF TRACEBACK\u000A------------------------------------------------------------------------\u000AFile: /opt/noc/lib/nbsocket.py (Line: 437)\u000AFunction: loop\u000A 430 raise\u000A 431 if r or w:\u000A 432 # Write events processed before read events\u000A 433 # to catch connection refused causes\u000A 434 for f in w:\u000A 435 if f in self.sockets:\u000A 436 try:\u000A 437 ==> self.sockets[f].handle_write()\u000A 438 except:\u000A 439 error_report()\u000A 440 try:\u000A 441 self.sockets[f].close()\u000A 442 except:\u000A 443 pass\u000AVariables:\u000A w = [4]\u000A f = 4\u000A self = <noc.lib.nbsocket.SocketFactory object at 0x8dd69ac>\u000A s = <noc.sa.activator.ActivatorSocket object at 0x8f081cc>\u000A r = [4]\u000A timeout = 1\u000A x = []\u000A------------------------------------------------------------------------\u000AFile: /opt/noc/lib/nbsocket.py (Line: 271)\u000AFunction: handle_write\u000A 264 try:\u000A 265 self.socket.send("")\u000A 266 except socket.error,why:\u000A 267 if why[0]==EPIPE:\u000A 268 self.on_conn_refused()\u000A 269 self.close()\u000A 270 return\u000A 271 ==> raise socket.error,why\u000A 272 self.handle_connect()\u000A 273 return\u000A 274 TCPSocket.handle_write(self)\u000A 275 \u000A 276 def on_conn_refused(self): pass\u000A 277 ##\u000AVariables:\u000A self = <noc.sa.activator.ActivatorSocket object at 0x8f081cc>\u000A why = error(111, 'Connection refused')\u000A------------------------------------------------------------------------\u000AEND OF TRACEBACK p7 sS'type' p8 S'Unhandled Exception' p9 sS'ts' p10 I1243862759 s. Почему 111-ая ошибка не понимаю, если через консоль все отлично. Снес систему и поставил заново нок на чистый дебиан ,та же ситуация. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 1 июня, 2009 · Жалоба Вышел NOC 0.2.3. Изменений достаточно много: Демон noc-correlator переписан полностью, правила корреляции событий теперь записываются в новой, более простой форме. noc-correlator ищет связи между событиями и, в случае обнаружения, выполняет заданные действия. Наиболее простой тип событий - чередующиеся события (например link up/link down). В таком случае можно настроить, чтобы следующее событие автоматически закрывало предыдущее. В более сложных случаях коррелятор может найти событие-первопричину и спрятать за ней все последствия. Таким образом, в списке активных событий будут видны только события, требующие непосредственной реакции. Появилась подсветка синтаксиса в просмотре конфигов с устройств, теперь длинные конфиги удобнее читать. Вылечен memory leak в SAE. В "Address Space Management" теперь можно нажатием одной кнопки показать все свободные адреса. Обновлена документация к модулю DNS. Описан один из способов интеграции NOC и BIND, в дистрибутиве теперь лежат все необходимые скрипты и конфиги. Множество багфиксов и мелких улучшений. Поный Changelog: по ссылке Тогда в noc-sae.conf и noc-activator.conf надо прописать: loglevel = debug перезапустить активатор и SAE, повторить попытку и посмотреть, что в логах Лежит куча файликов одинакового сожержания: Активатор не может достучаться до SAE? в конфигах правильно адреса и порты прописаны? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
flash.one Опубликовано 1 июня, 2009 (изменено) · Жалоба noc-activator.conf [main] logfile = /var/log/noc/noc-activator.log loglevel = debug pidfile = /var/log/noc/noc-activator.pid [activator] name = unknown listen_traps = listen_syslog = secret = thesecretkey software_update = true max_pull_config = 10 [sae] host = 127.0.0.1 port = 19701 local_address = [path] fping = /usr/bin/fping noc-sae.conf [main] logfile = /var/log/noc/noc-sae.log loglevel = debug pidfile = /var/log/noc/noc-sae.pid [sae] listen = 127.0.0.1 port = 19701 refresh_event_filter = 600 [xmlrpc] listen = 127.0.0.1 port = 19702 пробовал в конфиге активатора указать name= noc secret = *passw* ниего не поменялось Изменено 1 июня, 2009 пользователем flash.one Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
White_Alex Опубликовано 1 июня, 2009 · Жалоба пробовал в конфиге активатора указатьname= noc secret = *passw* ниего не поменялось в конфиге активатора надо указывать реквизиты, под которыми сей активатор в базе noc зарегистрирован - настраивается с web-интерфейса Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
flash.one Опубликовано 1 июня, 2009 · Жалоба сделал соответствие web-интерфейса и конфига, все равно ошибка: (dp1 S'component' p2 S'noc-activator' p3 sS'source' p4 S'system' p5 sS'traceback' p6 VUNHANDLED EXCEPTION (2009-06-01 18:45:59.217445)\u000AWorking directory: /opt/noc\u000A<class 'socket.error'>\u000A(111, 'Connection refused')\u000ASTART OF TRACEBACK\u000A------------------------------------------------------------------------\u000AFile: /opt/noc/lib/nbsocket.py (Line: 437)\u000AFunction: loop\u000A 430 raise\u000A 431 if r or w:\u000A 432 # Write events processed before read events\u000A 433 # to catch connection refused causes\u000A 434 for f in w:\u000A 435 if f in self.sockets:\u000A 436 try:\u000A 437 ==> self.sockets[f].handle_write()\u000A 438 except:\u000A 439 error_report()\u000A 440 try:\u000A 441 self.sockets[f].close()\u000A 442 except:\u000A 443 pass\u000AVariables:\u000A w = [4]\u000A f = 4\u000A self = <noc.lib.nbsocket.SocketFactory object at 0x947592c>\u000A s = <noc.sa.activator.ActivatorSocket object at 0x94a2c0c>\u000A r = [4]\u000A timeout = 1\u000A x = []\u000A------------------------------------------------------------------------\u000AFile: /opt/noc/lib/nbsocket.py (Line: 271)\u000AFunction: handle_write\u000A 264 try:\u000A 265 self.socket.send("")\u000A 266 except socket.error,why:\u000A 267 if why[0]==EPIPE:\u000A 268 self.on_conn_refused()\u000A 269 self.close()\u000A 270 return\u000A 271 ==> raise socket.error,why\u000A 272 self.handle_connect()\u000A 273 return\u000A 274 TCPSocket.handle_write(self)\u000A 275 \u000A 276 def on_conn_refused(self): pass\u000A 277 ##\u000AVariables:\u000A self = <noc.sa.activator.ActivatorSocket object at 0x94a2c0c>\u000A why = error(111, 'Connection refused')\u000A------------------------------------------------------------------------\u000AEND OF TRACEBACK p7 sS'type' p8 S'Unhandled Exception' p9 sS'ts' p10 I1243871159 s. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
White_Alex Опубликовано 1 июня, 2009 · Жалоба сделал соответствие web-интерфейса и конфига, все равно ошибка: netstat -anp | grep python cat /opt/noc/etc/noc-activator.conf cat /opt/noc/etc/noc-sae.conf "в студию" (с) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
flash.one Опубликовано 2 июня, 2009 · Жалоба flash@flash:~$ netstat -anp | grep python (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) unix 3 [ ] STREAM CONNECTED 9756 3504/python unix 3 [ ] STREAM CONNECTED 9719 3510/python unix 3 [ ] STREAM CONNECTED 9714 3510/python unix 3 [ ] STREAM CONNECTED 9712 3510/python unix 3 [ ] STREAM CONNECTED 9708 3504/python flash@flash:~$ su - Пароль: flash:~# netstat -anp | grep python unix 3 [ ] STREAM CONNECTED 9756 3504/python unix 3 [ ] STREAM CONNECTED 9719 3510/python unix 3 [ ] STREAM CONNECTED 9714 3510/python unix 3 [ ] STREAM CONNECTED 9712 3510/python unix 3 [ ] STREAM CONNECTED 9708 3504/python unix 3 [ ] STREAM CONNECTED 7722 3116/python unix 3 [ ] STREAM CONNECTED 7213 3020/python Конфиги на два сообщения выше. Изменилось только noc-activator.conf [activator] name = default listen_traps = listen_syslog = secret = default software_update = true max_pull_config = 10 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
White_Alex Опубликовано 2 июня, 2009 · Жалоба flash:~# netstat -anp | grep pythonunix 3 [ ] STREAM CONNECTED 9756 3504/python unix 3 [ ] STREAM CONNECTED 9719 3510/python unix 3 [ ] STREAM CONNECTED 9714 3510/python unix 3 [ ] STREAM CONNECTED 9712 3510/python unix 3 [ ] STREAM CONNECTED 9708 3504/python unix 3 [ ] STREAM CONNECTED 7722 3116/python unix 3 [ ] STREAM CONNECTED 7213 3020/python[/code] а это.... где noc-sae? запустите и гляньте, оно вообще порты открывает нужные? tcp 0 0 127.0.0.1:19701 0.0.0.0:* LISTEN 14331/python tcp 0 0 127.0.0.1:19702 0.0.0.0:* LISTEN 14331/python tcp 0 0 127.0.0.1:19701 127.0.0.1:35665 ESTABLISHED 14331/python tcp 0 0 127.0.0.1:35665 127.0.0.1:19701 ESTABLISHED 11599/python udp 0 0 192.168.4.15:162 0.0.0.0:* 11599/python udp 0 0 192.168.4.15:514 0.0.0.0:* 11599/python вот так примерно оно работающее выглядит Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
flash.one Опубликовано 2 июня, 2009 · Жалоба что до запуска sae и активатора, что после картина не меняется:( flash:/opt/noc# netstat -anp | grep python unix 3 [ ] STREAM CONNECTED 64353 3595/python unix 3 [ ] STREAM CONNECTED 10191 3595/python unix 3 [ ] STREAM CONNECTED 10095 3601/python unix 3 [ ] STREAM CONNECTED 10077 3601/python unix 3 [ ] STREAM CONNECTED 10075 3601/python unix 3 [ ] STREAM CONNECTED 10073 3595/python unix 3 [ ] STREAM CONNECTED 7959 3239/python unix 3 [ ] STREAM CONNECTED 7447 3134/python что от рута запускать что от noc'а Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 2 июня, 2009 · Жалоба что до запуска sae и активатора, что после картина не меняется:( flash:/opt/noc# netstat -anp | grep python unix 3 [ ] STREAM CONNECTED 64353 3595/python unix 3 [ ] STREAM CONNECTED 10191 3595/python unix 3 [ ] STREAM CONNECTED 10095 3601/python unix 3 [ ] STREAM CONNECTED 10077 3601/python unix 3 [ ] STREAM CONNECTED 10075 3601/python unix 3 [ ] STREAM CONNECTED 10073 3595/python unix 3 [ ] STREAM CONNECTED 7959 3239/python unix 3 [ ] STREAM CONNECTED 7447 3134/python что от рута запускать что от noc'а SAE строго от noc. Активатор, если без коллекторов snmp и syslog - от noc,с коллекторами и на linux - от root'а. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
flash.one Опубликовано 2 июня, 2009 · Жалоба все время обоих запускал именно от noc просто для полной статистики выдал вам оба варианта Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 3 июня, 2009 · Жалоба все время обоих запускал именно от nocпросто для полной статистики выдал вам оба варианта В noc-sae.log что вообще? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
flash.one Опубликовано 3 июня, 2009 (изменено) · Жалоба Огромное спасибо за помощь, наконец-то нашел ошибку. В noc-sae.log что вообще?В noc-sae.log писало: Working directory: /opt/noc <type 'exceptions.IOError'> [Errno 2] No such file or directory: 'etc/noc-activator.defaults' START OF TRACEBACK Странно конечно что оно пытается считывать конфиг с defaults. До этого видел эту ошибку но никак не мог понять зачем ему defaults.Переименовал noc-activator.conf в noc-activator.defaults и сразу все заработало. Но по моему так быть не должно если в самом дефолте пишется что надо его переименовывать в conf. Изменено 3 июня, 2009 пользователем flash.one Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 3 июня, 2009 · Жалоба Огромное спасибо за помощь, наконец-то нашел ошибку.В noc-sae.log что вообще?В noc-sae.log писало: Working directory: /opt/noc <type 'exceptions.IOError'> [Errno 2] No such file or directory: 'etc/noc-activator.defaults' START OF TRACEBACK Странно конечно что оно пытается считывать конфиг с defaults. До этого видел эту ошибку но никак не мог понять зачем ему defaults.Переименовал noc-activator.conf в noc-activator.defaults и сразу все заработало. Но по моему так быть не должно если в самом дефолте пишется что надо его переименовывать в conf. Это нормальное и описанное поведение. Сначала читается .defaults (в любом случае), потом .conf, если он есть. Настройки из .conf перебивают настройки из .defaults. .default идут вместе с дистрибутивом и перебиваются апдейтами. .conf - локальные настройки, которые не перебиваются апдейтами, их можно править из web-интерфейса. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
venter Опубликовано 6 июня, 2009 · Жалоба 2dvolodin А можно еще пару фичереквестов? 1. К virtual circuit добавить что-то вроде long description, чтобы можно было дописывать связанную информацию, ну и как вариант какие-то поля куда можно заносить порты свичей/рутеров, которыми заканчиваются вланы. Типа в влане 2 - свич 172.16.0.5 порт 3 тегированный (клиентская сторона), свич 172.16.0.100 порт 10 тегированный (рутер 172.16.1.1), рутер 172.16.1.1 интерфейс gi0/3.15. 2. В Peering management/Peers - localpref используется при построении RPSL объектов как есть, многие так и делают, хотя по правилам RPSL'евский pref это 65535-localpref. Можно ли туда какой-то костыль вставить, чтобы можно было переключать localpref/pref в этом поле? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
White_Alex Опубликовано 8 июня, 2009 · Жалоба Дмитрий, день добрый! еще момент - при логине в noc не супервайзером, который встроенный noc, а обычным юзером с правами например делать все и везде при обновлении страниц с конфигами (в принципе любых страниц) при отображении оно залипает на некоторое время, я так понимаю обрабатывает чего юзеру можно, чего нельзя, если под noc зайти, то этой задержки нет, оно излечимо или это генетика? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 8 июня, 2009 · Жалоба еще момент - при логине в noc не супервайзером, который встроенный noc, а обычным юзером с правами например делать все и везде при обновлении страниц с конфигами (в принципе любых страниц) при отображении оно залипает на некоторое время, я так понимаю обрабатывает чего юзеру можно, чего нельзя, если под noc зайти, то этой задержки нет,оно излечимо или это генетика? Да, там дополнительная обработка, которая проверяет, что показывать юзеру, а что нет. Сильно притормаживает? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
White_Alex Опубликовано 9 июня, 2009 · Жалоба Да, там дополнительная обработка, которая проверяет, что показывать юзеру, а что нет. Сильно притормаживает? 2-3 секунды при тех мощностях, что сейчас выделено для noc Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
flash.one Опубликовано 9 июня, 2009 (изменено) · Жалоба Возвращаясь к теме конфигов.. В секции Configuration Management в меню Config вижу список конфигов для созданных мной обьектов, справа есть ссылка view, которая должна отображать полученный конфиг, я правильно понимаю.? А там отображается к примеру: Object info ID 2 Repo Path 10.77.1.10.cfg Revision Modified Categories Content None Plain Text Текстовки конфига нету как увидеть конфиг? Изменено 9 июня, 2009 пользователем flash.one Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 9 июня, 2009 · Жалоба Да, там дополнительная обработка, которая проверяет, что показывать юзеру, а что нет. Сильно притормаживает? 2-3 секунды при тех мощностях, что сейчас выделено для noc Долго. Попробую пооптимизировать запросы. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
White_Alex Опубликовано 10 июня, 2009 · Жалоба Дмитрий, вот еще какой функционал думается мне был бы многими востребован, на мой взгляд в noc почти все для этого есть: научить его исполнять определенные оператором наборы команд на определенных устройствах в определенное время, очень сильно поможет автоматизировать рутинные процедуры мелких изменений конфигураций на куче подконтрольных однотипных устройств. или если оно где-то описано, расскажите как система считывает периодическую задачу себе из базы и передает команду активатору дальше че-нить попробуем придумать в плане костылей Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 10 июня, 2009 · Жалоба Дмитрий, вот еще какой функционал думается мне был бы многими востребован, на мой взгляд в noc почти все для этого есть:научить его исполнять определенные оператором наборы команд на определенных устройствах в определенное время, очень сильно поможет автоматизировать рутинные процедуры мелких изменений конфигураций на куче подконтрольных однотипных устройств. или если оно где-то описано, расскажите как система считывает периодическую задачу себе из базы и передает команду активатору дальше че-нить попробуем придумать в плане костылей Да, про это спрашивают давно, руки не доходят :) С периодическими задачами все просто: в каждом приложении есть свой каталог periodic. Каждая задача лежит в отдельном .py файле. В файле должен присутсвовать класс Task с методом execute. cm.config_pull как пример. Для того, чтобы noc узнал про новую задачу необходимо перезапустить FCGI и SAE. Условия запуска задачи задаются в Service Activation > Task Shedules. На настоящий момент поддерживается только периодический перезапуск задачи через заданный интервал времени. Задачи выполняются SAE. Главный thread в SAE занимается мультиплексированием каналов и сбором событий от активаторов. Каждая периодическая задача запускается в отдельном thread'е. Для доступа к потрохам SAE из метода execute можно использовать атрибут self.sae. Пример, как можно дернуть SAE: Config.pull Важный момент: SAE-неблокирующий и вся работа с активатором программируется в стиле continuation passing. SAE шлет активатору RPC request с параметрами и запоминает функцию-continuation, связанную с данным запросом. При получении RPC reply от активатора SAE выполняет запомненный continuation, в который передает параметры result и error. Аналога call/cc в python'е нет, поэтому continuation делается в виде вложенной функции. Передается не только функция, а весь closure (указатель на функцию, текущее состояние переменных), поэтому на в момент возврата из вложенной функции можно использовать все значения переменных родительской функции. Отфильтровать нужные объекты можно через django'вский ORM. Выглядеть это будет примерно так: ManagedObject.objects.filter(.....). Сами скрипты, которые можно выполнять, кладутся в профиль устройства по аналогии с get_config и get_version. Скрипт выполняется в отдельном thread'е в активаторе и логика его работы вполне линейна. Из скриптов можно дергать другие скрипты. В качестве примера: скрипт может принять номер текущей версии firmware и URL для скачки, дернуть скрипт get_version, получить текущую версию, при несовпадении проапдейтить софт и перегрузить ящик. Апдейт софта и перезагрузку тоже целесообразно сделать отдельными скриптами, чтобы повторно использовать. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 10 июня, 2009 · Жалоба Вышел NOC 0.2.4. Среди основных изменений: Встроенные on-line справочники. Можно создавать собственные справочники с нужными полями. Вместе с NOC уже идет набор справочников, которые могут автоматически обновляться с сайта update.nocproject.org. В релиз включены справочники: * Коды стран в номерном плане E.164 * База IEEE OUI (фактически, первые три октета MAC-адреса) * Коды стран ISO 3166 * Коды завершения вызовов Q.931 * Российский план нумерации (коды ABC для субъектов федерации) * Выписка из реестра Российского плана нумерации (Выделенная номерная емкость в кодах ABC/DEF для россии) Данные для справочников можно загружать с любого ftp/http. Пока поддерживаются форматы CSV и csv.gz В Knowledge Base появились шаблоны статей. Шаблоны задают текст для заголовка и тела статьи и набор категорий по умолчанию. В шаблонах можно указывать переменные (заключены в {{...}}). При создании статьи из шаблона KB попросит заполнить значения для переменных и создаст новую статью. Шаблоны полезны, когда нужно добавлять в базу однотипные статьи (например, данные по BGP пирам, по клиентам, по SIP-транкам) и сразу разносить их по нужным категориям. В комбинации с макросом search шаблоны позволяют использовать NOC как простенькую систему документооборота. Среди других доработок: * В качестве допустимого адреса активатора в Service Activation > Setup > Activators можно указывать диапазон адресов. * Появилась базовая поддержка для VoiceFinder AddPack. Теперь NOC умеет выдирать конфиги с 25 типов устройств. * В модуле "Virtual Circuit Management" можно создавать новые типы VC со своими ограничениями. Рекомендую всем обновиться. RELEASE NOTES Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
flash.one Опубликовано 12 июня, 2009 · Жалоба Дмитрий, а что Вы скажете насчет моего вопроса ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...