Список форумов netup.ru netup.ru
Форум компании NetUP
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

urfaclient на php
На страницу Пред.  1, 2, 3 ... 34, 35, 36 ... 42, 43, 44  След.
 
Начать новую тему   Ответить на тему    Список форумов netup.ru -> UTM 5.0
Регистрация провайдеро-независимых IP-адресов и автономных систем в RIPE
Компания NetUP приглашает на работу технических специалистов
Решения для IPTV. Биллинг, Middleware, VoD, CAS/DRM, DVB IP стример
Предыдущая тема :: Следующая тема  
Автор Сообщение
nicol@s



Зарегистрирован: 14.10.2009
Сообщения: 68

СообщениеДобавлено: Пт Мар 05, 2010 11:35 am    Заголовок сообщения: Ответить с цитатой

Добрый день!
Честно прочитал данную тему. Стоит задача сменить пользователю тарифный план. У всех пользователей один расчетный период. Т.е. нужно сохранить необходимые данные (IP, внешний IP, логин, пароль и пр.), удалить тарифную связку, удалить сервисную связку, создать тарифную связку, создать сервисную связку, заполнить данными. Если я правильно понял, то мне нужно использовать функции:
удалить тарфиную связку - rpcf_unlink_user_tariff
удалить сервисную связку - rpcf_delete_slink
создать тарифную связку - rpcf_link_user_tariff
создать сервисную связку - rpcf_add_service_to_user
Правилен ли ход моих мыслей?
Смотрел в сторону Личного кабинета от Kayfolom. Там немного не то - там у абонентов индивидуальный РП.
Спасибо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Magnum72



Зарегистрирован: 22.09.2005
Сообщения: 1356
Откуда: Екатеринбург

СообщениеДобавлено: Пт Мар 05, 2010 11:43 am    Заголовок сообщения: Ответить с цитатой

nicol@s писал(а):
Добрый день!
Честно прочитал данную тему. Стоит задача сменить пользователю тарифный план. У всех пользователей один расчетный период. Т.е. нужно сохранить необходимые данные (IP, внешний IP, логин, пароль и пр.), удалить тарифную связку, удалить сервисную связку, создать тарифную связку, создать сервисную связку, заполнить данными. Если я правильно понял, то мне нужно использовать функции:
удалить тарфиную связку - rpcf_unlink_user_tariff
удалить сервисную связку - rpcf_delete_slink
создать тарифную связку - rpcf_link_user_tariff
создать сервисную связку - rpcf_add_service_to_user
Правилен ли ход моих мыслей?
Смотрел в сторону Личного кабинета от Kayfolom. Там немного не то - там у абонентов индивидуальный РП.
Спасибо.


Заблокировать пользователя (ПАП ППТП)
удалить сервисную связку - rpcf_delete_slink
удалить тарфиную связку - rpcf_unlink_user_tariff
создать тарифную связку - rpcf_link_user_tariff
создать сервисную связку - rpcf_add_service_to_user (не забыть указать чтобы не перерасчитывать абонентку и предоплаченный трафик в в момент создания услиги)
Разблокировать поьзователя
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
nicol@s



Зарегистрирован: 14.10.2009
Сообщения: 68

СообщениеДобавлено: Пт Мар 05, 2010 2:31 pm    Заголовок сообщения: Ответить с цитатой

Спасибо. А можно еще вопрос:
чтобы выполнить функцию rpcf_delete_slink, нужно в качестве параметра передать slink_id. Правильно ли понимаю, что slink_id есть не что иное,
как service_id в таблице service_links? Или slink_id - это link_ID (если смотреть через админку)?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
nicol@s



Зарегистрирован: 14.10.2009
Сообщения: 68

СообщениеДобавлено: Пт Мар 05, 2010 4:43 pm    Заголовок сообщения: Ответить с цитатой

nicol@s писал(а):
Спасибо. А можно еще вопрос:
чтобы выполнить функцию rpcf_delete_slink, нужно в качестве параметра передать slink_id. Правильно ли понимаю, что slink_id есть не что иное,
как service_id в таблице service_links? Или slink_id - это link_ID (если смотреть через админку)?



Через пару часов: разобрался. slink_id = service_links.id:
Код:

mysql> SELECT service_links.* FROM users,service_links WHERE users.id = service_links.user_id AND users.login = 'login' AND users.is_deleted = 0 AND service_links.is_deleted = 0 and service_links.tariff_link_id != 0;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
nicol@s



Зарегистрирован: 14.10.2009
Сообщения: 68

СообщениеДобавлено: Пт Мар 05, 2010 6:10 pm    Заголовок сообщения: Ответить с цитатой

При вызове функции rpcf_unlink_user_tariff вижу Error calling function, при этом в логах вижу:
Код:
Exception in rpcf_unlink_user_tariff: #22

Функцию вызываю так (на примере существующих данных):
$user_id=4691;
$account_id=4756;
$tariff_link_id=6063;
Код:
$delete_tariff = $urfa_admin->rpcf_unlink_user_tariff($user_id, $account_id, $tariff_link_id);


Последний раз редактировалось: nicol@s (Пт Мар 05, 2010 6:17 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
nicol@s



Зарегистрирован: 14.10.2009
Сообщения: 68

СообщениеДобавлено: Пт Мар 05, 2010 6:10 pm    Заголовок сообщения: Ответить с цитатой

РазобралсяSmile Поменял местами: сначала удаляю тарифную связку, потом сервисную
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
nicol@s



Зарегистрирован: 14.10.2009
Сообщения: 68

СообщениеДобавлено: Вт Мар 09, 2010 11:52 am    Заголовок сообщения: Ответить с цитатой

И снова яSmile
Помогите разобраться:
Код:

rpcf_link_user_tariff($user_id,$account_id, $tariff_current, $tariff_next, $discount_period_id, $tariff_link_id)

Что передавать в функцию в качестве $tariff_link_id: значение переменной соответствует старому тарифу или нужно генерировать новое уникальное значение?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
forgotten



Зарегистрирован: 28.08.2008
Сообщения: 26

СообщениеДобавлено: Вт Мар 09, 2010 11:58 am    Заголовок сообщения: Ответить с цитатой

nicol@s писал(а):

Код:

rpcf_link_user_tariff($user_id,$account_id, $tariff_current, $tariff_next, $discount_period_id, $tariff_link_id)

Что передавать в функцию в качестве $tariff_link_id: значение переменной соответствует старому тарифу или нужно генерировать новое уникальное значение?


При привязке нового тарифа я передаю '0' (ноль).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
nicol@s



Зарегистрирован: 14.10.2009
Сообщения: 68

СообщениеДобавлено: Вт Мар 09, 2010 2:25 pm    Заголовок сообщения: Ответить с цитатой

Большое спасибо. Здесь разобрался, но дальше встрялSad
В функции rpcf_add_service_to_user
Код:

<function name="rpcf_add_service_to_user" id="0x2551">
    <input>
      <integer name="user_id"/>
      <integer name="account_id" default="basic_account"/>
      <integer name="service_id"/>
      <integer name="service_type"/>
      <string name="return_type" default=""/>
      <integer name="tariff_link_id" default="0"/>
....

Что такое service_id? Чему оно равно?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
forgotten



Зарегистрирован: 28.08.2008
Сообщения: 26

СообщениеДобавлено: Вт Мар 09, 2010 2:32 pm    Заголовок сообщения: Ответить с цитатой

nicol@s писал(а):

В функции rpcf_add_service_to_user
Код:

<function name="rpcf_add_service_to_user" id="0x2551">
    <input>
      <integer name="user_id"/>
      <integer name="account_id" default="basic_account"/>
      <integer name="service_id"/>
      <integer name="service_type"/>
      <string name="return_type" default=""/>
      <integer name="tariff_link_id" default="0"/>
....

Что такое service_id? Чему оно равно?


Это идентификатор услуги (ID).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
nicol@s



Зарегистрирован: 14.10.2009
Сообщения: 68

СообщениеДобавлено: Вт Мар 09, 2010 2:35 pm    Заголовок сообщения: Ответить с цитатой

Да-да. Только запостил сообщение и додумася =)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
forgotten



Зарегистрирован: 28.08.2008
Сообщения: 26

СообщениеДобавлено: Вт Мар 09, 2010 3:07 pm    Заголовок сообщения: Ответить с цитатой

nicol@s писал(а):
Да-да. Только запостил сообщение и додумася =)


Вот поэтому не стоит торопиться с постами Wink
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
nicol@s



Зарегистрирован: 14.10.2009
Сообщения: 68

СообщениеДобавлено: Вт Мар 09, 2010 4:22 pm    Заголовок сообщения: Ответить с цитатой

Извините, но я опять встал в ступор. В функцию rpcf_add_service_to_user передаю такие данные
Код:

$service['user_id']        = $user_id;
      $service['account_id']     = $account_id;
      $service['service_id']     = 1;
      $service['service_type']   = 3; // IP trafic
      $service['return_type']    = '';
      $service['tariff_link_id'] = 0;
      $service['slink_id']    = 0;
      $service['is_blocked']  = 0;
      $service['discount_period_id'] = 59;
      $service['start_date']  = time();
      $service['expire_date'] = mktime(0, 0, 0, 1, 1, 2037);
      $service['unabon']      = 0;
      $service['unprepay']    = 0;
      $service['ip_groups'][0]['ip_address'] = '10.3.100.'.rand(1,255);
      $service['ip_groups'][0]['mask']       = '255.255.255.0';
      $service['ip_groups'][0]['mac']        = '';
      $service['ip_groups'][0]['iptraffic_login'] = '';
      $service['ip_groups'][0]['iptraffic_allowed_cid']= '';
      $service['ip_groups'][0]['iptraffic_password']   = '';
      $service['ip_groups'][0]['ip_not_vpn']           = 0;
      $service['ip_groups'][0]['dont_use_fw']          = 0;
      $service['ip_groups'][0]['router_id']            = 0;
      $service['quotas'] = array();
      $srv_id = $urfa_admin->rpcf_add_service_to_user($service);

Пробую на одном из пользователей - вроде как добавляет все. Делаю отчет в админке "изменение пользователей", смущает следующее:
Код:

service link <0>, ip group <0>, login '', ip '10.3.100.57', MAC

Когда делаю руками, то
Код:

service link <32081>, ip group <11822>, login '11111111', ip '10.3.100.57', MAC '11111111'

Делаю для следующего пользователя - добавляется все, кроме сервисной связки.
Интересует:
1. почему в service link 0?
2. нужно ли менять значение [0] в массиве $service['ip_groups'][0]['ip_address']? Как понимаю я - в таком случае все данные будут записывать в 0-ой элемент
3. не могли бы привести пример, как нужно правильно создавать услугу "Передача IP-трафика" ?
Спасибо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
dk



Зарегистрирован: 10.08.2006
Сообщения: 226

СообщениеДобавлено: Ср Мар 10, 2010 11:21 am    Заголовок сообщения: Ответить с цитатой

nicol@s писал(а):
3. не могли бы привести пример, как нужно правильно создавать услугу "Передача IP-трафика" ?

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

Нашёл старый файлик. Код рабочий, таким образом добавлялось несколько тысяч юзеров:
Код:

script_link_tarif_and_services( array(
    tariff_id => $add_tarif['tp_id'],
    user_id => $add_user['user_id'],
    discount_period_id => 6,
    ip_address => array(
                array( ip => '192.168.40.0', mask => '255.255.255.224' ),

    )
), $utm);

# Подключение тарифа и всех его услуг.
# - Может присутствовать несколько периодических услуг.
# - Может присутствовать только одна услуга передачи трафика!
function script_link_tarif_and_services($data, $utm) {
    $tariff_id = $data['tariff_id'];
    $user_id = $data['user_id'];
    $account_id = $data['account_id'] | $user_id;
    $discount_period_id = $data['discount_period_id'];

    # Получаем информацию об услугах тарифа
    $tsvc = $utm->get_tariff( array(
        tariff_id => $tariff_id
    ));

    # Добавляем новый тариф
    $newtarif = array (
        'user_id' => $user_id,
        'account_id' => $account_id,
        'tariff_current' => $tariff_id,
        'tariff_next' => $tariff_id,
        'discount_period_id' => $discount_period_id,
        'tariff_link_id' => 0
    );
    $tp = $utm->link_user_tariff( $newtarif );
    if ( !$tp['tariff_link_id'] ) {
        print "ERROR ADDING TP\n";
        print_r( $newtarif );
        print_r( $tp );
        exit;
    }

    # Поделючение всех услуг
    $max = count($tsvc['services']);
    for ( $i = 0; $i < $max; $i++ ) {
        print "SVC $i/$max\n";
        $svc = $tsvc['services'][$i];

        $svc['user_id'] = $user_id;
        $svc['account_id'] = $account_id;
        $svc['return_type'] = '';
        $svc['tariff_link_id'] = $tp['tariff_link_id'];

        if ( $svc['service_type'] == '2' ) {
            # Периодическая услуга
            $svc['slink_id']  = 0;
            $svc['is_blocked'] = 0;
            $svc['discount_period_id'] = $discount_period_id;
            $svc['start_date'] = time();
            $svc['expire_date'] = $max_date;
            $svc['unabon'] = 0;
            $svc['unprepay'] = 0;
        }
        if ( $svc['service_type'] == '3' ) {
            # Передача трафика
            $svc['slink_id'] = 0;
            $svc['is_blocked'] = 0;
            $svc['discount_period_id'] = $discount_period_id;
            $svc['start_date'] = time();
            $svc['expire_date'] = $max_date;
            $svc['unabon'] = 0;
            $svc['unprepay'] = 0;
            $svc['ip_address'] = array();

            # Подключаем IP
            foreach ( $data['ip_address'] as $ip ) {
                $svc['ip_address'][] = array(
                    'ip_address' => $ip['ip'],
                    'mask' => $ip['mask'],
                    'ip_not_vpn' => 1,
                    'dont_use_fw' => 1
              );
            }
            $svc['quota'] = array();
        }
        # Добавляем услугу
        $utm->add_service_to_user( $svc );
        print "END $i/$max\n";
    }

}
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
nicol@s



Зарегистрирован: 14.10.2009
Сообщения: 68

СообщениеДобавлено: Ср Мар 10, 2010 3:44 pm    Заголовок сообщения: Ответить с цитатой

Спасибо
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов netup.ru -> UTM 5.0 Часовой пояс: GMT + 3
На страницу Пред.  1, 2, 3 ... 34, 35, 36 ... 42, 43, 44  След.
Страница 35 из 44

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group