Перейти до

Абонетская плата и Stargazer


Рекомендованные сообщения

Привет.

Можно ли в stargazer как то сделать, если суммы у пользователя на счёте не достаточно для абон платы то она не снималась а пользователь замораживался

и а бонка в следующих месяцах тоже не снималась?

Ссылка на сообщение
Поделиться на других сайтах

Конфигуратор который можно скачать на сайте может делать только 4 вещи

1. Дбавить деньги пользователю

2. Установить кредит пользователю

3. Выбрать тарифный план пользователю

4. Послать сообщение пользователю

Или я что то не так понял?

Просветите плиз.

Ссылка на сообщение
Поделиться на других сайтах

Скриптом, использующим консольный конфигуратор.

Т.е. пишешь скрипт, который с помощью консольного конфигуратора снимает абонплату при каком-то условии.

Если условие - достаточное количество денег на счету клиента, то скрипт смотрит значение параметра Cash в файле stat в папке пользователя.

Получается так: скрипт обрабатывает файлы stat и conf в папке пользователя.

И в соответствии с полученными значениями запускает sgconf или не запускает.

Таким образом можно сделать очень гибкую систему снятия абонплаты.

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

Ссылка на сообщение
Поделиться на других сайтах
  • 5 years later...

у меня должник более одной абоплаты автоматически замораживается и приколачивается по маку, всё делается в скрипте OnChange

Ссылка на сообщение
Поделиться на других сайтах

Привет.

Можно ли в stargazer как то сделать, если суммы у пользователя на счёте не достаточно для абон платы то она не снималась а пользователь замораживался

и а бонка в следующих месяцах тоже не снималась?

 

Все можна сделать, нужно копать исходники стж.

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

А, ну естественно, поставить в конфиге чтобы при минусе не давал инэт, правда юзер будет уходить в минус, но это будет первый минус - дальше снимать абонплату не будет.

 

Вот тема: STG & автоматическая заморозка

 

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

Вариантов уйма.

 

ЗЫ: неплохо было бы включить в следующую версию СТЖ - эту фичу. :blink:

Ссылка на сообщение
Поделиться на других сайтах

у меня должник более одной абоплаты автоматически замораживается и приколачивается по маку, всё делается в скрипте OnChange

Поделись скриптом.

Ссылка на сообщение
Поделиться на других сайтах

есть только под mysql, но в принципе не сложно переделать под файлы

MAC адреса хранятся у юзеров в поле UserData0

OnChange

#!/bin/bash

source /etc/stargazer/sql.conf

login=$1
param=$2
oldValue=$3
newValue=$4

# ================== основные параметры ==================
ip=`/usr/bin/mysql -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT IP FROM users WHERE login = '$login'" --skip-column-names --batch`
credit=`/usr/bin/mysql -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT Credit FROM users WHERE login = '$login'" --skip-column-names --batch`
tarif=`/usr/bin/mysql -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT Tariff FROM users WHERE login = '$login'" --skip-column-names --batch`
abonRub=`/usr/bin/mysql -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT Fee FROM tariffs WHERE name = '$tarif'" --skip-column-names --batch`
cash=`/usr/bin/mysql -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT Cash FROM users WHERE login = '$login'" --skip-column-names --batch`
# ==================== параметр деньги ===================
if [ $param = "cash" ] && [ $oldValue -ne $newValue ]; then
  newRub=`/bin/echo $newValue | cut -f 1 -d "."`
  # =============== если меняется баланс ===============
  iflock=`/usr/bin/mysql -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT Down FROM users WHERE login = '$login'" --skip-column-names --batch`
  limit=`/bin/echo "$abonRub*(-1)" | bc -s`
  if [ $credit -gt $abonRub ]; then
     limit=`/bin/echo "$credit*(-1)" | bc -s`
  fi
  # ================== выход из долга ==================
  if [ $newRub -ge $limit ] && [ $iflock -ne "0" ]; then
     /etc/stargazer/sgconf set -s 127.0.0.1 -p 4446 -a $STGADM -w $STGPASS -u $login -d 0 >> /dev/null
     /etc/stargazer/sgconf set -s 127.0.0.1 -p 4447 -a $STGADM -w $STGPASS -u $login -i 0 >> /dev/null
  fi
  # ====================================================
  # ==================== вход в долг ===================
  if [ $newRub -lt $limit ] && [ $iflock -ne "1" ]; then
     /etc/stargazer/sgconf set -s 127.0.0.1 -p 4446 -a $STGADM -w $STGPASS -u $login -d 1 >> /dev/null
     /etc/stargazer/sgconf set -s 127.0.0.1 -p 4447 -a $STGADM -w $STGPASS -u $login -i 1 >> /dev/null
  fi
  # ====================================================
fi
# ========================================================

# ======= отключён/включен - лочим/унлочим по маку =======
if [ $param = "disabled" ]; then
  ip=`/usr/bin/mysql -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT IP FROM users WHERE login = '$login'" --skip-column-names --batch`
  # ============================== лочим
  if [ $newValue = "1" ]; then
     /usr/sbin/arp -s $ip $firmmac
  else
  # ==================================== унлочим
     readmac=`/usr/bin/mysql -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT Userdata0 FROM users WHERE login = '$login'" --skip-column-names --batch`
     /usr/sbin/arp -d $ip
     /usr/sbin/arp -s $ip $readmac
  fi
fi
# ==========================================================

# ================== смена мака вручную ====================
if [ $param = "userdata0" ]; then
   /usr/sbin/arp -d $ip
   /usr/sbin/arp -s $ip $newValue
fi
# ==========================================================

# ===================== смена ip =======================
if [ $param = "IP" ]; then
   /usr/sbin/arp -s $oldValue $firmmac
   /usr/sbin/arp -d $newValue
   mac=`/usr/bin/mysql -h$DBHOST -u$DBUSER -p$ROOTDBPASS $DBNAME -e "SELECT Userdata0 FROM users WHERE login = '$login'" --skip-column-names --batch`
   /usr/sbin/arp -s $newValue $mac
fi
# ==========================================================
# ===================== смена тарифа =======================
if [ $param = "tariff" ]; then
   if [ -z "`/bin/echo $newValue | grep U`" ]; then
       /etc/stargazer/sgconf set -s 127.0.0.1 -p 4446 -a $STGADM -w $STGPASS -u $login --disable-stat 0 >> /dev/null
   else
       /etc/stargazer/sgconf set -s 127.0.0.1 -p 4446 -a $STGADM -w $STGPASS -u $login --disable-stat 1 >> /dev/null
   fi
fi
# ==========================================================

в /etc/stargazer/sql.conf к примеру

firmmac=aa:bb:cc:dd:ee:ff
DBNAME=stg
DBHOST=localhost
STGADM=sgconf
STGPASS=adminpassword

в /usr/lib/stg у меня

mod_conf_sg.so

mod_conf_sg1.so

mod_conf_sg2.so

и соответственно в stargazer.conf

<Module conf_sg>
  Port = 4444
</Module>
<Module conf_sg1>
  Port = 4446
</Module>
<Module conf_sg2>
  Port = 4447
</Module>

это чтобы ничего не подвисло в случае одновременного выполнения команд конфигуратора

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...