Перейти до

strushke

Сitizens
  • Всього повідомлень

    149
  • Приєднався

  • Останній візит

  • Дней в лидерах

    2

Сообщения додав strushke

  1. Всем доброго вечера! 

    Пытаюсь заскриптить бэкап с SwOS, благо, нагуглилась такая возможность получать его через http://login:password@ip/backup.swb

     

    Вырисовался следующий скрипт:

    set timeout 60
    
    set login {LOGIN}
    set password {PASSWORD}
    set ip {IP}
    
    spawn wget -q -S -O - http://$login:$password@$ip/backup.swb
    
    expect eof

     

    И не работает, в предварительном просмотре отображается только 

    spawn wget -q -S -O - http://myuser:mypass@myip/backup.swb

     

    При этом, тот же скрипт работает в консоли и выплёвывает конфиг прямо в неё. 

     

    Пробовал то же через curl, но так же, тишина.

    Полез было в API, но поскольку и так не вспался, то чуть не уснул. 

     

    Всем спасибо за помощь!

     

  2. 2 hours ago, nightfly said:

    "парные аккаунты" это те которые в сауне или бане? :)

     

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

    Вся концепция требует переработки с нуля, и приведения к нормальному "нативному" виду. Вот как те же скидки например. Без "дополнительных полей", связей непонятно чего, куда и между чем и непонятно по какому полю, с нормально управляемым, в конце концов, поведением и нормальной и управляемой репликацией состояния этих абонентов, без вот этих вот всех "закатов солнца вручную".

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

  3. On 1/19/2023 at 10:31 AM, nightfly said:

    Тем временем, базовые скидки уже переписаны с нуля в 1.3.4  и уже более-менее вменяемы: http://wiki.ubilling.net.ua/doku.php?id=discounts

    У меня еще возникла задача и я пока не понял, как её решить. 

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

    Вроде , это было в корпоративных пользователях, во-первых, оно заявлено как устаревшее, а во-вторых, помню, как-то пробовал это провернуть, тогда оплаты просто дублировались на связанные аккаунты. Получалось, что денег человек дал , скажем 10, а по кассе как будто 20. 

    Спасибо за помощь

  4. On 2/4/2023 at 5:29 PM, nightfly said:

    UPD: если догадаетесь "почему", заодно и узнаете, почему всякие системы "визуальные, программирования без программирования" валяются где-то на задворках, маргинальны и в целом мертвы, как скажем те же hiasm, inventor итд.

    UPD2: не, ну типа можно пытаться, изобретать какую-то доморощенную помесь expect со switch-case конструкциями внутри... но оно реально того стоит?

    Всё, доходчиво и понятно) Действительно, так быстрее и удобнее. Да , кофе выпил много, на подъеме был

  5. Доброе утро! 

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

    Щас поясню.

    Все действия пишутся у нас в лог, который доступен в модуле "События".

    К примеру, мне сейчас захотелось снимать с баланса юзера за ручное начисление кредита. 

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

    выбрать любимое часто повторяющееся действо и приклеить к нему что вздумается (в рамках API, конечно же)

     

    Пока я не проснулся, и не подумал, что идея так себе, оставлю это здесь, вдруг она всё таки хорошая.

    Всем хороших выходных!

  6. Если кому-то это поможет, у меня это реализовано(пока только на словах, вручную) в виде "бонусов", а не "скидок".

    Короче, я создал отдельный cashtypeid с пометкой Бонус,

    Допустим, пассажир хочет оплатить 3 абонплаты, значит ему скидка 10%, наличкой ему вношу его 3 абонплаты с вычетом скидки,

    Потом бонусом вношу остаток, таким образом, тариф продолжает снимать абонплату как обычно.

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

    А кто-то - козёл и вообще, к нему было много бесплатных ложных вызовов, задерживает абонплату, пользуется в кредит, 

    ему бонус не вносим, берем как полагается.

     

    Таким образом, можно дальше уже оперировать этими бонусами как угодно и за что угодно, а главное - будет видно, кто сколько получил халявы прямо в финансовом отчете

     

    Ну и естественно, этот костыль я пропишу когда-нибудь куда-нибудь в addcash, чтобы кассиры не додумывали

    Хотя, каждый может с этой простой задачей справиться по-своему, была бы фантазия

  7. On 1/12/2023 at 12:52 PM, nightfly said:

    3. Также, есть подозрение, что вы сами не в восторге от читания этого файла. Тем более, что пакуется это все очень удобно и просто в отчет "Мастера Отчетов" который никуда не девается при обновлениях. Что на практике должно выглядеть как-то так:

     

     

    Прошу, вот ваш отчет: https://justpaste.lol/?v=fv9gdr5x

    Разграничивать права на модуль штатно, перечисляя администраторов через запятую или замотать все это кучей в if (cfr('CASH'))  (у них же и так есть право работать с деньгами?) - уже дело десятое.

     

    UPD: но вы все равно молодец. Самостоятельный и творческий подход к решению задач  - не может не делать из вас молодца :)

     

     

     

     

    Привет! Я благодарен за столь развернутый и поучительный ответ, мне есть чему поучиться.

    Просто ситуация была такая, что "в наличии "плоскогубцы и шуруп, который надо вкрутить прямо щас")

    Пошел напролом)

     

    А по поводу самостоятельности - да я вообще считаю, что тут стесняться не стоит - не на бумаге же пишем, можно и переписать) 

    Хорошего дня! 

  8. Добрый день! 

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

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

    Поэтому по-быстрому выпилил всё лишнее из оригинального модуля.

     

    Особая благодарность разработчикам биллинга за возможность простой доработки 

    чего угодно под свои нужды

     

    Помощь по установке находится в файле readme.txt

     

    Модуль имеет отдельные права доступа, поэтому можно их назначить только кассирам, например

    Он выдает отчет кассы за сегодняшний день только для того кассира, который открыл этот модуль.

    report_finance_public.zip

    • Like 3
  9. Добрый день!

    Сегодня заметил странную ошибку, которая непонятно, откуда берется.

    Проявляется в виде надписи под некоторыми формами: Big data processing error

     

    Версия 1.1.5 (7920)

     

    В usersearch под формой есть эта надпись

    В report_finance в самом низу

    В report_sysload прямо под окошком с серийным номером и версией биллинга.

     

    Пока что, влияния на работу замечено не было, но надпись то там не просто так. 

     

    Попробовал:

    Очистку кэша

    Исправление таблиц БД 

    Ковыряние логов httpd-error

     

    Ничего из этого не помогло. 

    В логах httpd всё хорошо. 

    Может пнёте меня в нужную сторону, а я авось, долечу? Спасибо

     

  10. Всем доброго дня и с праздниками!

     

    Если вдруг кто-то хочет запускать различные темы в кабинете пользователя,

    в зависимости от типа устройства, вам потребуется произвести некоторые манипуляции с php кодом кабинета,

    ну и вот вам моё (может неказистое, но рабочее) решение:

     

    На гитхабе уже существует php проект, определяющий тип устройства,

    поэтому не выдумываем и будем использовать его:

    https://github.com/serbanghita/Mobile-Detect/

     

    Для начала, нужно подключить его вконце index.php:

     

    require_once 'Mobile_Detect.php'; //Detect library

    Далее, нужно создать объект класса:

    $detect = new Mobile_Detect; //Class object

    Вообще, верхний код я без зазрения совести скопипастил с какой-то статьи из интернета, говорят, это экономит время.

    Теперь, к самой сути:

    if($detect->isMobile()) {
    	zbs_ShowTemplate("default-mobile");
    } else {
    	zbs_ShowTemplate("default");
    }

    Здесь мы вытаскиваем из класса необходимое условие, в зависимости от которого,

    будем выполнять необходимые манипуляции с кабинетом.

    В данном случае загружается конкретный шаблон в том случае, если устройство определено как 'mobile', 

    и обычный (любой другой) шаблон, если условие не соблюдено. К слову, mobile_detect.php умеет

    не только различать десктоп от мобильных платформ, но и конкретизировать систему, к примеру isAndroidOS()

    соответственно, укажет на то, что платформа определилась как андроид. 

    Полный список параметров доступен на странице проекта на гитхабе, я полагаю. Мне хватило пока что isMobile()

     

    Но есть еще один нюанс. С завода, функция zbs_ShowTemplate() загружает тему, указанную в config.php

    и не умеет загружать принудительно указанную тему, как мы это сделали в скобках выше. Но мы её научим. 

    Нужно открыть файл

    /modules/engine/api.compat.php

    И найти там описание функции :

    function zbs_ShowTemplate() 

    Ну и меняем её содержимое на что-то вот такое: 

    function zbs_ShowTemplate($tpath) {
        global $ContentContainer;
    	if(!isset($tpath)){
    		include (zbs_GetCurrentSkinPath() . 'template.html');
    	} else {
    		$basePath = 'skins/';
    
    		include $basePath . $tpath . '/' . 'template.html';
    	}
    }

    Что мы сделали?

    Мы добавили в объявлении функции возможность указания темы через переменную $tpath в скобках

    и просто подставляем его вместо пути к директории шаблона. 

    Кстати, в таком виде, пропал функционал определения шаблона из конфига, да и вообще половина кода в функции не нужна стала. 

    Но поскольку тут всё просто, то вы можете с легкостью исправить это сами. 

    Всем добра

  11. Всем привет! Вот уже незаметно, как целых 5 лет я использую Ubilling и я очень этому рад!

    Огромное спасибо разработчикам системы! Биллинг не только легок в использовании "из коробки", 

    но и не сложен в модернизации "под себя", а так же в написании модулей! 

    С 2016 года я использую Ubilling в связке с Mikrotik, и с тех самых пор, как я его начал использовать,

    у меня не было никаких проблем.

    Кажется, это была версия 0.8.3, и BSD 10 под виртуалкой.

    Не всегда я следовал за обновлениями, поэтому спустя некоторое время я просто накатил сразу bsd 12 с чистым биллингом

    и перенес бэкап и свои наработки.

    Иногда бывают лаги, связанные с Mikrotik API, но это всё таки костыль, который не рекомендуется официально, и с которого нужно слезать, а я всё никак. 

     

    Короче, долгих лет жизни вам, ребята! Будете в наших краях - пивом угощу!

    • Like 12
  12. On 11/20/2020 at 2:02 PM, vop said:

     

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

     

    В моем банке любая операция через кассу, которую можно сделать через банкомат/терминал, облагается дополнительной комиссией. Добавьте в тарифы получение справки по телефону на данные, доступные через личный кабинет - услуга платная. И все устаканится.

    Ага, объясните, что такое "сайт" пятиста грузинам, а я попкорном пока запасусь

  13. On 6/21/2020 at 9:22 PM, Максим97 said:

    Мне для написания диплома, мне нужно каким то для меня чудесным образом этот сервер создать настроить радиус как я понимаю и засунуть в GNS3, что бы он вел учет переданных данных и снимал абонентскую плату, хотя при этом препод сам не в курсах как это делается (

     

    Так всё ж просто . Инсталл есть, мануалы есть. По радиусу всё разжёвано. Работает почти из коробки. Главное помнить всегда про логи, и их палить, если что-то не так. Всё получится!

  14. On 5/21/2020 at 11:47 PM, seversever404 said:

    предполагаю что вам нужно искать причину в другом 400 юзеров не причина . слейте все логи сопоставьте время операций . ну как так просто выкл и все ? выкл  как ? как фаер у вас блокирует доступ в инет пользователям . отключением из адрес лист ALLOW ?

    биллу нужна причина дернуть абона . я понимал бы ещё что его забыл выключить или когда сам себе кредит юзер взял но просто так работал и инет пропал . потом ресет и появился ) бред API тут при чем ?

     

    Вы меня вроде читаете, а не вникаете. Я не говорил, что операции реконнекта сами по себе происходят.

    В мирное время при начислении АП или выставлении кредита - это, конечно же, одинаковые API. А вот если попробовать перезапустить stg или сервак в целом, то созерцать  логи вида 

    user balalao logged in from 666.666.666.666 via api
    address list changed by balalao
    simple queue changed by balalao
    dhcp lease changed by balalao
    arp entry changed by balalao
    user balalao logged out from 666.666.666.666 via api

    примерно на протяжении минут 15ти. И это 400 абонов. Я даже не хочу думать, что (и зачем) происходит на 1000+

     

     

    On 5/22/2020 at 12:37 AM, mixtery said:


    Шта *ля? Они одинаковые
     


    О, рассуждения про резервы на 400 юзерах, оооок.

     


    Всё очень плохо в понимании "что это, зачем это, как это может работать в разных случаях"

     


    А вы к своим микротикам линки "зареплецировали"?
     


    :facepalm:

    А зачем линки реплецировать, если у тиков свой радиус будет по месту? :facepalm: Вы из тех, что только рисунки понимает? 

    On 5/22/2020 at 12:41 AM, seversever404 said:

    да именно все плохо . много всего . и не о чем . 

    Конечно, плохо! Как только от API избавимся, все станет норм. Ну почти всё. Там и от тиков надо будет избавляться

  15. Написал Начал писать модуль по типу корованнов с уно и женами. 

    Пока что корованны грабит все без исключений, но кому надо, тот допишет (Если разберется в этой куче воняющего кода)

    Писался по образу копипасту и подобию модуля bulksms, который мной же был нагло с****жен и является полной копией turbosms. 

    Ну вы поняли, основная масса готова, кому надо больше - тот допилит. 

    Можно экспортировать в CSV всех, а так же, тех, кому осталось 5 дней, или 0. Другие опции убрал, так как мне они не нужны.

     

    Если кому-то это поможет, буду счастлив

     

    Если кто-то заинтересуется и/или администрация будет не против, то появится ссылка на google drive

  16. 21 hours ago, vop said:

     

    А автоматом настроить? На две, географически разнесенные системы?

    Я слишком стар для этой фигни) 

    Мои две системы и так географически разнесло.

  17. On 5/25/2020 at 9:57 PM, seversever404 said:

    чем больше всяких микро там и микро тут .. тем ниже стабильность работы . лучше создайте условия стабильной связи микрот билл и всё не надо изобретать велосипед . а там уже определитесь что вам ближе дхцп или хотспот . 

     

    Ну, в данный момент оно в одной сервачной стоит. Но есть еще один NAS за городом, правда там пока клиентов мало. 

    Сама концепция hotspot - отличная, если б не проблема с авторизацией. Буду до последнего искать, что не так, а потом если что, dhcp выберу.

  18. On 5/21/2020 at 11:27 PM, seversever404 said:

    image.png.9133fb958efb67ebbebb33325c680797.pngвы что то подобное хотите сделать ? хотспот + дхцп

    Офигенно! Так и хочу сделать!) 

    On 5/21/2020 at 11:34 PM, seversever404 said:

    как хотспот без билла будет знать кого . куда. зачем ? почему ?

    Согласен, без авторизатора будет проблематично. 

    Ну, есть идея использовать репликацию radius и mysql базы, просто поднять микросервер только для них. 

    Но это уже плюшки. 

    Шишки - это заставить работать хотспот. Не понимает он, что надо дать роутеру доступ. Может дать на пару минут ,а потом каким-то образом видит внутренний IP клиента (за NAT его роутера) и всё, начинаются непонятки у него. Назначенный IP то из радиуса (Скажем, 10.0.*.100, а фактический он определяет типа 192.168.*.20. При этом MAC привязан то к внешней подсети клиентского роутера. 

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

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