Advertisement
Guest User

Untitled

a guest
Jun 24th, 2018
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 40.20 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. #from telebot.types import Message
  3.  
  4. import conf
  5. import datetime
  6. import requests
  7. from requests.auth import HTTPDigestAuth
  8. import re
  9. import os
  10. import telebot
  11. from telebot import types
  12. import subprocess
  13. from subprocess import Popen, PIPE
  14. from subprocess import call
  15. #from telegram.ext import CommandHandler
  16. from imp import reload
  17. #from telegram.ext import Updater
  18. #from telegramcalendar import create_calendar
  19. import shlex
  20. import time
  21. from time import sleep
  22. #import user_list
  23.  
  24. # библиотека логгирования
  25. import logging
  26.  
  27. # готовим логи
  28. logging.basicConfig(filename="oscam.log", filemode ="w", format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
  29.                     level=logging.INFO)
  30. logger = logging.getLogger(__name__)
  31.  
  32. #FOMENU, LOGIN, HELP = range(3)
  33.  
  34.  
  35. #updater = Updater(token=conf.token)
  36. #dispatcher = updater.dispatcher
  37.  
  38. #bot_ = telegram.Bot(token = conf.token)
  39. bot = telebot.TeleBot(conf.token)
  40.  
  41.  
  42. def run_command(command):
  43.     process = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE)
  44.     global textoutput
  45.     textoutput = ''
  46.     while True:
  47.         global output
  48.         output = process.stdout.readline()
  49.         output = output.decode('utf8')
  50.         if output == '' and process.poll() is not None:
  51.             break
  52.         if output:
  53.             print(output.strip())
  54.         textoutput = textoutput + '\n' + output.strip()
  55.     rc = process.poll()
  56.     return rc
  57.  
  58.  
  59. # user_id = {}
  60. # print(bot.getMe())
  61.  
  62. @bot.message_handler(commands=['start'])
  63. def start(m):
  64.     user = bot.get_me()
  65.     print(user)
  66. #    updates = bot.get_updates(1234,100,20)
  67. #    print(updates)
  68.     reload(conf)
  69.     user_id = str(m.from_user.id)
  70.     if user_id in conf.admin:
  71.         keyboard = types.InlineKeyboardMarkup()
  72.         keyboard.add(*[types.InlineKeyboardButton(text=name, callback_data=name) for name in ["Tovább..."]])
  73.         bot.send_message(m.chat.id, text="Üdvözöllek a csatornában! ", reply_markup=keyboard)
  74. #        bot.send_chat_action(m.chat.id, action='typing')
  75. #            reply_markup=pages_keyboard(int(m.data[3:]), int(m.data[3:]) + 700)
  76.     else:
  77.         bot.send_message(m.chat.id, 'Nincsenek jogaid ebben a csatornában!')
  78.  
  79.  
  80. @bot.message_handler(commands=['add'])
  81. #@bot.message_handler(func=lambda m: True, content_types=['text'])
  82. def login_add(m):
  83.     reload(conf)  
  84.     login = m.text
  85.     bot.delete_message(m.chat.id, m.message_id - 1)
  86.     logger.info(login)
  87.     login = login.split()[1].strip()
  88.     print("login=" + login)
  89.     logger.info(m)
  90.     d = "\"'[]"
  91.     user_id = str(m.from_user.id)
  92. #    print ("{login}".format(login=m.text))
  93.     conf_email = re.findall(user_id + '\',\s\'([\w.-]+@[\w.-]+.\w+)', str(conf.admin))
  94.     for char in d:
  95.         conf_email = str(conf_email).replace(char, "")
  96.     if user_id in conf.admin: #если пользовательский id в списке admin то команда выполняется
  97.         login1 = ''
  98. #        print (str(login))
  99.         if login1 == login:
  100.             msg = bot.send_message(m.chat.id, "Nem adtál meg logint!")
  101.             return login_menu(msg)
  102.         else:
  103.             file = open(conf.oscam_user).read().split('\n')
  104.             data_login = re.findall(login + '\'', str(file))
  105. #            print (data_login)
  106.             for char in d:
  107.                 data_login = str(data_login).replace(char, "")
  108. #            print (data_login)
  109.             if data_login == login:
  110.                 msg = bot.send_message(m.chat.id, "Ez a login foglalt!")
  111.                 return login_menu(msg)
  112.             else:
  113.                 now_date = datetime.date.today() # Текущая дата
  114.                 cur_year = str(now_date.year) # Год текущий
  115.                 cur_month = now_date.month # Месяц текущий
  116.                 if cur_month < 10:
  117.                     cur_month = str(now_date.month)
  118.                     cur_month = '0' + cur_month
  119.                 else:
  120.                     cur_month = str(now_date.month)
  121.                 cur_day = now_date.day # День текущий
  122.                 if cur_day < 10:
  123.                     cur_day = str(now_date.day)
  124.                     cur_day = '0' + cur_day
  125.                 else:
  126.                     cur_day = str(now_date.day)
  127.                 passdate = cur_year + cur_month + cur_day   # формируем текущую дату
  128.                 from random import choice
  129.                 from string import ascii_lowercase
  130.                 rand = ''.join(choice(ascii_lowercase) for i in range(5))
  131.                 password = passdate + rand
  132.                 my_date = datetime.date.today()
  133.                 period = datetime.timedelta(days=31)
  134.                 expdate = my_date + period
  135.                 expdate = str(expdate)
  136. #                keyboard_hider = types.ReplyKeyboardRemove()
  137.                 bot.send_chat_action(m.chat.id, 'typing')  # show the bot "typing" (max. 5 secs)
  138.                 time.sleep(5)
  139.                 msg = bot.send_message(m.chat.id, "A(z) *" + login + "* hozzáférés létrehozva:\nuser = " + login + '''\npwd = ''' + password + '''\nexpdate = ''' + expdate, parse_mode="Markdown")
  140.                 logger.info(login + " létrehozása {}.".format(m.from_user.username))
  141.                 if str(conf_email) != str(conf.admin_email):
  142.                     bot.send_message(conf.myid, "A(z) *" + login + "* hozzáférés létrehozva:\nuser = " + login + '''\npwd = ''' + password + '''\nexpdate = ''' + expdate, parse_mode="Markdown")
  143.                 adduser_command = '''curl --digest --user ''' + conf.oscam_user + ''':''' + conf.oscam_pass + ''' "''' + conf.oscam_server_port + '''/user_edit.html?user=''' + login + '''&pwd=''' + password + '''&description=''' + conf_email + ''' -1ho&disabled=0&expdate=''' + expdate + '''&failban=0&allowedtimeframe=&allowedprotocols=&group=1%2C2%2C3%2C4%2C5%2C6%2C7&hostname=&uniq=3&max_connections=1&sleep=240&sleepsend=0&monlevel=0&au=&caid=&ident=&chid=&class=&betatunnel=&suppresscmd08=1&umaxidle=-1&emmreassembly=2&preferlocalcards=-1&services=1815_ruter2&services=1802_ruter2&services=0d97_ruter1&services=1880_ruter1&services=xtra_full&numusers=-1&penalty=-1&acosc_max_active_sids=-1&acosc_zap_limit=-1&acosc_penalty=-1&acosc_penalty_duration=-1&acosc_delay=-1&cccmaxhops=10&cccreshare=-1&cccignorereshare=-1&cccstealth=-1&keepalive=0&keepalive=1&cacheex=0&cacheex_maxhop=0&no_wait_time=0&cacheex_ecm_filter=&cacheex_drop_csp=0&cacheex_allow_request=0&cacheex_allow_filter=0&cacheex_allow_filter=1&cacheex_block_fakecws=0&disablecrccacheex=0&disablecrccacheex_only_for=0&disablecrccacheex_only_for=&cwc_disable=0&action=Save&newuser="  -o /dev/null -s'''
  144.                 run_command(adduser_command)
  145.                 return login_menu(msg)
  146.  
  147. @bot.message_handler(commands=['exp'])
  148. #@bot.message_handler(func=lambda m: True, content_types=['text'])
  149. def login_expp(m):
  150.     reload(conf)
  151.     user_id = str(m.from_user.id)
  152.     user_email = re.findall(user_id + '\',\s\'([\w.-]+@[\w.-]+.\w+)', str(conf.admin))
  153.     d = "'[]"
  154.     #       msg = bot.send_message(chatid, "Válassz logint: " + str(messid))
  155.     #        bot.register_next_step_handler(msg, login_list)
  156.     for char in d:
  157.         user_email = str(user_email).replace(char, "")
  158.  
  159.     arg = str(m.text)
  160.     print(arg)
  161.     bot.delete_message(m.chat.id, m.message_id - 1)
  162.     bot.delete_message(m.chat.id, m.message_id - 2)
  163.     logger.info(arg)
  164.     arg = arg.rsplit(' ', 3)
  165.     print(arg)
  166.     command = arg[0]
  167.     try:
  168.         login = arg[1]
  169.     except IndexError:
  170.         login = 'null'
  171.     try:
  172.         month = arg[2]
  173.     except IndexError:
  174.         month = 'null'
  175.     print(command + " " + login + " " + str(month))
  176.     print(len(arg))
  177.     if user_id in conf.admin:  # если пользовательский id в списке admin то команда выполняется
  178.         if len(arg) < 3:
  179.             msg = bot.send_message(m.chat.id, "Nem adtál meg egy kötelező paramétert!")
  180.             return login_menu(msg)
  181.         if re.match("^[A-Za-z0-9_-]*$", login) == False:
  182.             msg = bot.send_message(m.chat.id, "Helytelen karakter a login nevében!")
  183.             return login_menu(msg)
  184.         if month == "null":
  185.             msg = bot.send_message(m.chat.id, "Nem adtad meg a hosszabbítandó hónapok számát!")
  186.             return login_menu(msg)
  187.         if re.findall('-', month):
  188.             msg = bot.send_message(m.chat.id, "A hosszabbítandó hónapok száma nem lehet minusszal!")
  189.             return login_menu(msg)
  190.         if month.isdigit() == False:
  191.             msg = bot.send_message(m.chat.id, "A hosszabbítandó hónap(ok) csak szám lehet!")
  192.             return login_menu(msg)
  193.         else:
  194.             file = open(conf.oscam_user, "r").read()
  195.             c = str(file.split('\n'))
  196.             if login in c:
  197.                 c = ' '.join(c.split())
  198.                 c = c.replace("[acc", "\n[acc")
  199.                 login_data = re.findall(login + '.*pwd =\s(\w+).*description =\s(\w+.*@\w+.\w+).*(\d{4}-\d{2}-\d{2})', c)
  200.                 if str(login_data).find(str(user_email)) == -1:
  201.                     msg = bot.send_message(m.chat.id, "Nem tartozik hozzád ilyen login.")
  202.                 else:
  203.                     password = re.findall(login + '\'.*pwd =\s(\w+)', c)
  204.                     group = re.findall(login + '\'.*group =\s(\w+)', c)
  205.                     #                            print (group)
  206.                     exp_month = re.findall(login + '\'.*description =\s\w+.*@\w+.\w+.(\-\d+)', c)
  207.                     if str(exp_month) == '[]':
  208.                         exp_month = int(0)
  209.                     exp_data = re.findall(login + '\'.*(\d{4}-\d{2}-\d{2})', c)
  210.                     exp_data = ' '.join(exp_data)
  211.                     #                        print (exp_data)
  212.                     today_data = datetime.date.today()
  213.                     #                        print (today_data)
  214.                     if datetime.datetime.strptime(str(today_data), "%Y-%m-%d") > datetime.datetime.strptime(
  215.                             str(exp_data), "%Y-%m-%d"):
  216.                         #                            period = datetime.timedelta(days=-1)
  217.                         #                            print (period)
  218.                         exp_data = today_data - datetime.timedelta(1)
  219.                     #                            print (exp_data)
  220.                     #                        else:
  221.                     exp_y, exp_m, exp_d = str(exp_data).split('-')
  222.                     #                        print (exp_y + '.' + exp_m + '.' + exp_d)
  223.                     d = "'[]"
  224.                     for char in d:
  225.                         password = str(password).replace(char, "")
  226.                         exp_month = str(exp_month).replace(char, "")
  227.                         group = str(group).replace(char, "")
  228.                     #                           exp_data = exp_data.replace(char, "")
  229.                     month_new = str(int(exp_month) - int(month))
  230.                     #                   a = str(exp_data).split('-')
  231.                     #                   print (a)
  232.                     #                   aa = datetime.date(int(a[0]),int(a[1]),int(a[2]))
  233.                     #                   print(aa)
  234.                     exp_m_new = int(exp_m) + int(month)
  235.                     if exp_m_new > 12:
  236.                         exp_y_new = int(exp_y) + 1
  237.                         exp_m_new = int(exp_m_new) - 12
  238.                     else:
  239.                         exp_y_new = exp_y
  240.                     if exp_m_new < 10:
  241.                         exp_m_new = '0' + str(exp_m_new)
  242.                     exp_data_new = str(exp_y_new) + '-' + str(exp_m_new) + '-' + str(exp_d)
  243.                     #                            print (exp_data_new)
  244.                     #                        file.close()
  245. #                    adduser_command = 'echo A(z) ' + login + ' hosszabbítva lett ' + month + ' hóval ' + exp_data_new + ' -ig, tartozás: ' + month_new + ' hó'
  246. #                    #                        file.close()
  247. #                    run_command(adduser_command)
  248.                     msg = bot.send_message(m.chat.id, "A(z) " + login + " hosszabbítva lett " + month + " hóval " + exp_data_new + " -ig\ntartozás: " + month_new + " hó")
  249.                     logger.info(login + " hosszabbítása " + month + " hóval " + exp_data_new + "-ig -> {}.".format(m.from_user.username))
  250.  #                   if str(user_email) != str(conf.admin_email):
  251.   #                      data = [('chat_id', conf.chatid), ('disable_web_page_preview', '1'),
  252.    #                             ('text', user_email + textoutput)]
  253.     #                    response = requests.post(conf.url, data=data)
  254.                     if int(group) == 1:
  255.                         #                                print ('group=1')
  256.                         adduser_command = '''curl --digest --user ''' + conf.oscam_user + ''':''' + conf.oscam_pass + ''' "''' + conf.oscam_server_port + '''/user_edit.html?user=''' + login + '''&pwd=''' + password + '''&description=''' + user_email + ''' ''' + month_new + '''ho&disabled=0&expdate=''' + exp_data_new + '''&failban=0&allowedtimeframe=&allowedprotocols=&group=1%2C2%2C3%2C4%2C5%2C6%2C7&hostname=&uniq=3&max_connections=1&sleep=240&sleepsend=0&monlevel=0&au=&caid=&ident=&chid=&class=&betatunnel=&suppresscmd08=1&umaxidle=-1&emmreassembly=2&preferlocalcards=-1&services=1815_ruter2&services=1802_ruter2&services=0d97_ruter1&services=1880_ruter1&services=xtra_full&numusers=-1&penalty=-1&acosc_max_active_sids=-1&acosc_zap_limit=-1&acosc_penalty=-1&acosc_penalty_duration=-1&acosc_delay=-1&cccmaxhops=10&cccreshare=-1&cccignorereshare=-1&cccstealth=-1&keepalive=0&keepalive=1&cacheex=0&cacheex_maxhop=0&no_wait_time=0&cacheex_ecm_filter=&cacheex_drop_csp=0&cacheex_allow_request=0&cacheex_allow_filter=0&cacheex_allow_filter=1&cacheex_block_fakecws=0&disablecrccacheex=0&disablecrccacheex_only_for=0&disablecrccacheex_only_for=&cwc_disable=0&action=Save&newuser="  -o /dev/null -s'''
  257.                         run_command(adduser_command)
  258.                     else:
  259.                         #                                print ('group=9')
  260.                         adduser_command = '''curl --digest --user ''' + conf.oscam_user + ''':''' + conf.oscam_pass + ''' "''' + conf.oscam_server_port + '''/user_edit.html?user=''' + login + '''&pwd=''' + password + '''&description=''' + user_email + ''' ''' + month_new + '''ho&disabled=0&expdate=''' + exp_data_new + '''&failban=0&allowedtimeframe=&allowedprotocols=&group=9&hostname=&uniq=3&max_connections=1&sleep=240&sleepsend=0&monlevel=0&au=&caid=&ident=&chid=&class=&betatunnel=&suppresscmd08=1&umaxidle=-1&emmreassembly=2&preferlocalcards=-1&numusers=-1&penalty=-1&acosc_max_active_sids=-1&acosc_zap_limit=-1&acosc_penalty=-1&acosc_penalty_duration=-1&acosc_delay=-1&cccmaxhops=10&cccreshare=-1&cccignorereshare=-1&cccstealth=-1&keepalive=0&keepalive=1&cacheex=0&cacheex_maxhop=0&no_wait_time=0&cacheex_ecm_filter=&cacheex_drop_csp=0&cacheex_allow_request=0&cacheex_allow_filter=0&cacheex_allow_filter=1&cacheex_block_fakecws=0&disablecrccacheex=0&disablecrccacheex_only_for=0&disablecrccacheex_only_for=&cwc_disable=0&action=Save&newuser="  -o /dev/null -s'''
  261.                         run_command(adduser_command)
  262.             else:
  263.                 msg = bot.send_message(m.chat.id, "Nincs ilyen login!")          
  264.     return login_menu(msg)
  265.  
  266. @bot.message_handler(commands=['stat'])
  267. def login_stat(m):
  268.     reload(conf)
  269.     user_id = str(m.from_user.id)
  270.     user_email = re.findall(user_id + '\',\s\'([\w.-]+@[\w.-]+.\w+)', str(conf.admin))
  271.     d = "'[]"
  272.     for char in d:
  273.         user_email = str(user_email).replace(char, "")
  274.     arg = str(m.text)
  275.     print(arg)
  276.     bot.delete_message(m.chat.id, m.message_id - 1)
  277.     bot.delete_message(m.chat.id, m.message_id - 2)
  278.     logger.info(arg)
  279.     arg = arg.rsplit(' ', 2)
  280.     print(arg)
  281.     command = arg[0]
  282.     try:
  283.         login = arg[1]
  284.     except IndexError:
  285.         login = 'null'
  286.     print(command + " " + login)
  287.     print(len(arg))
  288.     if user_id in conf.admin:  # если пользовательский id в списке admin то команда выполняется
  289.         if len(arg) < 2:
  290.             msg = bot.send_message(m.chat.id, "Nem adtál meg egy kötelező paramétert!")
  291.             return login_menu(msg)
  292.         else:
  293.             file = open(conf.oscam_user, "r").read()
  294.             c = str(file.split('\n'))
  295.             if login in c:
  296.                 c = ' '.join(c.split())
  297.                 print(c)
  298.                 c = c.replace("[acc", "\n[acc")
  299.                
  300.                 login_data = re.findall(login + '\'.*pwd =\s(\w+).*description =\s(\w+.*@\w+.\w+).*(\d{4}-\d{2}-\d{2})', c)
  301.                 print(login_data)
  302.                 if str(login_data).find(str(user_email)) == -1:
  303.                     msg = bot.send_message(m.chat.id, "Nem tartozik hozzád ilyen login.")
  304.                     return login_menu(msg)
  305.                 else:
  306.                     response = requests.get(conf.oscam_server_port + '/userconfig.html',
  307.                                             auth=HTTPDigestAuth(conf.oscam_user, conf.oscam_pass))
  308.                     #                    print (response.content)
  309.                     y = str(response.content)
  310.                     #                    print (y)
  311.                     y = y.replace("</TR>", "\n</TR>")
  312.                     #                    print (y)
  313.                     data = re.findall('\n.*' + login + '.*\n', y)
  314.                     #                    print (data)
  315.                     data_ip = re.findall(
  316.                         'data-user-name=\"' + login + '\"\sdata-desc.*sort-value=\"(\d+.\d+.\d+.\d+)\"', y)
  317.                     data_email = re.findall('TITLE=\"' + login + '\&\#13\;\((\w+.*@\w+.\w+).*\)\"\>\<A\sHREF', y)
  318.                     data_status_connected = re.findall(
  319.                         'data-user-name=\"' + login + '\"\sdata-desc.*sort-value=\"\d+.\d+.\d+.\d+\".* TITLE=""><B>(.*)<BR>\d+.\d+.\d+.\d+</TD',
  320.                         y)
  321.                     data_status_offline = re.findall(
  322.                         'data-user-name=\"' + login + '\".*data-sort-value="" TITLE="">(.*)<BR>.*usercol4', y)
  323.                     d = "<>BR\'/"
  324.                     for char in d:
  325.                         data_status_connected = str(data_status_connected).replace(char, "")
  326.                     # \s-\d+\w+
  327.                     data_ch = re.findall(login + '\".*usercol6\"\sdata-sort-value=\"([^"]+)\"', y)
  328.                     # .*><B>(\w)</B>', y)
  329.                     print(data)
  330.                     print(data_ip)
  331.                     print(data_email)
  332.                     print(data_ch)
  333.                     #                    print (data_status_connected)
  334.                     #                    print (data_status_offline)
  335.                     d = "\'[]~"
  336.                     #                        login = login + " "
  337.                     for char in d:
  338.                         data_ip = str(data_ip).replace(char, "")
  339.                         data_email = str(data_email).replace(char, "")
  340.                         data_ch = str(data_ch).replace(char, "")
  341.                         data_status_offline = str(data_status_offline).replace(char, "")
  342.                     print(data_ip)
  343.                     print(data_email)
  344.                     print(data_ch)
  345.  
  346.                     # -                    data_email = re.findall(login + '.*pwd =\s(\w+).*description =\s(\w+.*@\w+.\w+).*(\d{4}-\d{2}-\d{2})', c)
  347.                     #               print (login_data)
  348.                     conf_email = user_email
  349.                     if str(user_email) == str(conf.admin_email):
  350.                         conf_email = str(data_email)
  351.  
  352.                         # 2018/01/08 20:33:31 6076DACC c      (ecm) anikob1 (1815:000000:75FB/92): cache2 (397 ms) by 1815_local_rtr1 (P/1/2/2) - Film+
  353.  
  354.                     if data_ip != '':
  355.                         msg = bot.send_message(m.chat.id,
  356.                                                login + " " + data_status_connected + " " + data_ip + ": [" + data_ch + "]")
  357.                         logger.info(
  358.                             login + " státuszának lekérése " + data_status_connected + " " + data_ip + ": [" + data_ch + "] -> {}.".format(m.from_user.username))
  359.                         if str(conf_email) != str(conf.admin_email):
  360.                             data = [('chat_id', conf.chatid), ('disable_web_page_preview', '1'), ('text',
  361.                                                                                                     conf_email + "\n" + login + " " + data_status_connected + " " + data_ip + ': [' + data_ch + ']')]
  362.                             response = requests.post(conf.url, data=data)
  363.                     else:
  364.                         msg = bot.send_message(m.chat.id, login + " " + data_status_offline)
  365.                         if str(conf_email) != str(conf.admin_email):
  366.                             data = [('chat_id', conf.chatid), ('disable_web_page_preview', '1'),
  367.                                     ('text', conf_email + "\n" + login + " " + data_status_offline)]
  368.                             response = requests.post(conf.url, data=data)
  369.             else:
  370.                 msg = bot.send_message(m.chat.id, "Nincs ilyen login!")
  371.     return login_menu(msg)
  372.  
  373. @bot.message_handler(commands=['sendLongText'])
  374. def command_long_text(m):
  375.     cid = m.chat.id
  376.     bot.send_message(cid, "If you think so...")
  377.     bot.send_chat_action(cid, 'typing')  # show the bot "typing" (max. 5 secs)
  378.     time.sleep(3)
  379.     bot.send_message(cid, ".")
  380.  
  381.  
  382. @bot.message_handler("text")
  383. def login_menu(message):
  384.     chatid = message.chat.id
  385.     messid = message.message_id
  386. #    bot.delete_message(chatid, messid)
  387.     keyboard = types.InlineKeyboardMarkup()
  388.     keyboard.add(*[types.InlineKeyboardButton(text=name, callback_data=name) for name in
  389.                    ["Hozzáadás", "Hosszabbítás", "Össztartozás"]])
  390.     keyboard.add(*[types.InlineKeyboardButton(text=name, callback_data=name) for name in
  391.                    ["Login adatok", "Státusz"]])
  392.     bot.send_chat_action(chatid, 'typing')  # show the bot "typing" (max. 5 secs)
  393.     time.sleep(5)
  394.     bot.send_message(chatid, text="Login műveletek: ", reply_markup=keyboard)
  395. #    bot.register_next_step_handler(msg, fomenu)
  396.     return keyboard
  397.  
  398.  
  399. @bot.callback_query_handler(func=lambda c: True)
  400. def fo_menu(c):
  401.     reload(conf)
  402.     logger.info(c)
  403.     chatid = c.message.chat.id
  404.     messid = c.message.message_id
  405.     user_id = str(c.from_user.id)
  406.     user_email = re.findall(user_id + '\',\s\'([\w.-]+@[\w.-]+.\w+)', str(conf.admin))
  407.     d = "'[]"
  408.     #       msg = bot.send_message(chatid, "Válassz logint: " + str(messid))
  409.     #        bot.register_next_step_handler(msg, login_list)
  410.     for char in d:
  411.         user_email = str(user_email).replace(char, "")
  412.     if user_id in conf.admin:  # если пользовательский id в списке admin то команда выполняется
  413.         with open(conf.oscam_user) as f:
  414.             file = f.read()
  415.             s = str(file.split('\n'))
  416.             if user_email in s:
  417.                 s = ' '.join(s.split())
  418.                 s = s.replace("[acc", "\n[acc")
  419.                 user_list = re.findall('user = (\w+).*description =\s' + user_email, s)
  420.         f.close()
  421.  
  422. #    if c.data == 'Össztartozás':
  423.     if c.data.find('Össztartozás')>=0:
  424.         bot.delete_message(c.message.chat.id, c.message.message_id)
  425.         d = "'[]"
  426.         print(d)
  427.         for char in d:
  428.             user_email = str(user_email).replace(char, "")
  429.         if user_id in conf.admin:  # если пользовательский id в списке admin то команда выполняется
  430.             with open(conf.oscam_user) as f:
  431.                 file = f.read()
  432.                 s = str(file.split('\n'))
  433.                 if user_email in s:
  434.                     s = ' '.join(s.split())
  435.                     s = s.replace("[acc", "\n[acc")
  436.                     exp_month_data = re.findall('user = (\w+).*description =\s' + user_email + '\s(-\d+ho)', s)
  437.                     print(exp_month_data)
  438.                     exp_month_data = str(exp_month_data).replace("[('", "").replace("')]", "").replace("', '", ": ").replace(
  439.                         "'), ('", "\n").replace("ho", " hó")
  440.                     print(exp_month_data)
  441.                     if str(user_email) != str(conf.admin_email):
  442.                         data = [('chat_id', conf.chatid), ('disable_web_page_preview', '1'),
  443.                                 ('text', user_email + '\n' + str(exp_month_data))]
  444.                         response = requests.post(conf.url, data=data)
  445. #                    bot.edit_message_text(chat_id=c.message.chat.id, message_id=c.message.message_id, text='*Össztartozásod:*\n' + exp_month_data, parse_mode='Markdown')
  446.                     logger.info("Tartozás lekérése {}.".format(c.from_user.username))
  447.                     msg = bot.send_message(c.message.chat.id, text='*Össztartozásod:*\n' + exp_month_data, parse_mode='Markdown')
  448.             f.close()
  449.             return login_menu(msg)
  450.         else:
  451.             bot.send_message(chatid, 'Nincsenek jogaid ebben a csatornában!')
  452.  
  453.     elif c.data.find('Tovább')>=0:
  454.         bot.delete_message(c.message.chat.id, c.message.message_id)
  455.         keyboard = types.InlineKeyboardMarkup()
  456.         keyboard.add(*[types.InlineKeyboardButton(text=name, callback_data=name) for name in ["Hozzáadás", "Hosszabbítás", "Össztartozás"]])
  457.         keyboard.add(*[types.InlineKeyboardButton(text=name, callback_data=name) for name in ["Login adatok", "Státusz"]])
  458.         bot.send_message(c.message.chat.id, text="Login műveletek: ", reply_markup=keyboard)
  459. #        return login_menu(msg)
  460. #        bot.send_chat_action(chatid, action='typing')
  461. #        bot.register_next_step_handler(msg, login)
  462.  
  463.     elif c.data.find('Hozzáadás')>=0:
  464.         bot.delete_message(c.message.chat.id, c.message.message_id)        
  465.         keyboard = types.InlineKeyboardMarkup()
  466.         keyboard.add(*[types.InlineKeyboardButton(text=name, callback_data=name) for name in ["\U000023EA Vissza"]])
  467.         bot.send_message(chatid, "Adja meg a login nevét az /add parancs után", reply_markup=keyboard)
  468.         bot.register_next_step_handler_by_chat_id(chatid, login_add)
  469.        
  470.     elif c.data.find('Hosszabbítás')>=0:
  471.         bot.delete_message(c.message.chat.id, c.message.message_id)
  472.         keyboard = types.InlineKeyboardMarkup()
  473.         keyboard.add(*[types.InlineKeyboardButton(text=name, callback_data=name) for name in user_list])
  474.         keyboard.add(*[types.InlineKeyboardButton(text=name, callback_data=name) for name in ["\U000023EA Vissza"]])
  475. #        user_list = ', '.join(user_list)
  476.         bot.send_message(chatid, "Add meg a login nevét az /exp parancs után, majd a hosszabbítás értékét hónapokban.\nPélda: /exp janika 3", reply_markup=keyboard)
  477. #        bot.send_message(chatid, "Loginjaid: " + user_list, reply_markup=keyboard)
  478.         bot.register_next_step_handler_by_chat_id(chatid, login_exp)
  479.  
  480.     elif c.data.find('Login adatok')>=0:
  481.         bot.delete_message(chatid, messid)
  482.         keyboard = types.InlineKeyboardMarkup()
  483.         keyboard.add(
  484.             *[types.InlineKeyboardButton(text=name, callback_data=name) for name in user_list])
  485.         bot.send_message(chatid, "Login adatok lekérése: ", reply_markup=keyboard)
  486.  
  487.     elif c.data.find('Státusz')>=0:
  488.         bot.delete_message(chatid, messid)
  489.         keyboard = types.InlineKeyboardMarkup()
  490. #        keyboard.add(*[types.InlineKeyboardButton(text=name, callback_data=name) for name in ["\U000023EA Vissza"]])
  491.         #user_list = ', '.join(user_list)
  492.         bot.send_message(chatid,
  493.                          "Add meg a login nevét az /stat parancs után.\nPélda: /stat lenke")
  494. #        markup = types.ReplyKeyboardMarkup()
  495. #        markup.add(*[types.KeyboardButton(text=name) for name in user_list])
  496. #        itembtn1 = types.KeyboardButton('a')
  497. #        itembtn2 = types.KeyboardButton('v')
  498. #        itembtn3 = types.KeyboardButton('d')
  499. #        markup.add(itembtn1, itembtn2, itembtn3)
  500. #        bot.send_message(chatid, "Valaszd ki a logint:", reply_markup=keyboard)                        
  501. #        bot.send_message(chatid, "Loginjaid: " + user_list, reply_markup=keyboard)
  502.         keyboard.add(
  503.             *[types.InlineKeyboardButton(text=name, callback_data=name) for name in user_list])
  504.         bot.send_message(chatid, "Statusz lekérése: ", reply_markup=keyboard)
  505.  #       bot.register_next_step_handler_by_chat_id(chatid, login_stat)
  506.     else:
  507.         if c.data in user_list:
  508.             if "pappjuli":
  509.                 """ТУТ можешь чтото делать, тут проверка на то если была нажата какаято кнопка имя которой есть в списке юзеров"""
  510.  
  511. def login_exppp(c):
  512.     if c.data in user_list:
  513. #        print(cdata)
  514.         bot.delete_message(chatid, messid)
  515. #        bot.edit_message_text(chat_id=c.message.chat.id, message_id=c.message.message_id, text='*Jelszavad:*\n' + "jelszó " + str(messid), parse_mode='Markdown')
  516.         user_id = str(c.from_user.id)
  517.         user_email = re.findall(user_id + '\',\s\'([\w.-]+@[\w.-]+.\w+)', str(conf.admin))
  518.         d = "'[]"
  519.         for char in d:
  520.             user_email = str(user_email).replace(char, "")
  521.         if user_id in conf.admin:  # если пользовательский id в списке admin то команда выполняется
  522.             with open(conf.oscam_user) as f:
  523.                 file = f.read()
  524.                 s = str(file.split('\n'))
  525.                 if user_email in s:
  526.                     s = ' '.join(s.split())
  527.                     s = s.replace("[acc", "\n[acc")
  528.                     user_login = str(c.data)
  529.                     #                    user_pass = ''.join(re.findall(user_login + '\'.*pwd =\s(\w+)', s))
  530.                     user_pass = ''.join(re.findall(user_login + '\'.*pwd =\s(\w+)', s))
  531.                     user_expdate = ''.join(re.findall(user_login + '\'.*(\d{4}-\d{2}-\d{2})', s))
  532.                     f.close()
  533.             msg = bot.send_message(chatid, "*" + user_login + " adatai:*\njelszó: " + user_pass + "\nérvényessége: " + user_expdate,
  534.                                        parse_mode='Markdown')
  535.             logger.info("Adatok lekérése: " + user_login + " -> [" + user_pass + "] -> [" + user_expdate + "] -> " + c.from_user.username)
  536.             return login_menu(msg)
  537.  
  538. def login_exp(c):
  539.     print(c.text)
  540.     if c.text in user_list:
  541.         print(c.data)            
  542.         reload(conf)
  543.         user_id = str(m.from_user.id)
  544.         user_email = re.findall(user_id + '\',\s\'([\w.-]+@[\w.-]+.\w+)', str(conf.admin))
  545.         d = "'[]"
  546.         #       msg = bot.send_message(chatid, "Válassz logint: " + str(messid))
  547.         #        bot.register_next_step_handler(msg, login_list)
  548.         for char in d:
  549.             user_email = str(user_email).replace(char, "")
  550.    
  551.         arg = str(m.text)
  552.         print(arg)
  553.         bot.delete_message(m.chat.id, m.message_id - 1)
  554.         bot.delete_message(m.chat.id, m.message_id - 2)
  555.         logger.info(arg)
  556.         arg = arg.rsplit(' ', 3)
  557.         print(arg)
  558.         command = arg[0]
  559.         try:
  560.             login = arg[1]
  561.         except IndexError:
  562.             login = 'null'
  563.         try:
  564.             month = arg[2]
  565.         except IndexError:
  566.             month = 'null'
  567.         print(command + " " + login + " " + str(month))
  568.         print(len(arg))
  569.         if user_id in conf.admin:  # если пользовательский id в списке admin то команда выполняется
  570.             if len(arg) < 3:
  571.                 msg = bot.send_message(m.chat.id, "Nem adtál meg egy kötelező paramétert!")
  572.                 return login_menu(msg)
  573.             if re.match("^[A-Za-z0-9_-]*$", login) == False:
  574.                 msg = bot.send_message(m.chat.id, "Helytelen karakter a login nevében!")
  575.                 return login_menu(msg)
  576.             if month == "null":
  577.                 msg = bot.send_message(m.chat.id, "Nem adtad meg a hosszabbítandó hónapok számát!")
  578.                 return login_menu(msg)
  579.             if re.findall('-', month):
  580.                 msg = bot.send_message(m.chat.id, "A hosszabbítandó hónapok száma nem lehet minusszal!")
  581.                 return login_menu(msg)
  582.             if month.isdigit() == False:
  583.                 msg = bot.send_message(m.chat.id, "A hosszabbítandó hónap(ok) csak szám lehet!")
  584.                 return login_menu(msg)
  585.             else:
  586.                 file = open(conf.oscam_user, "r").read()
  587.                 c = str(file.split('\n'))
  588.                 if login in c:
  589.                     c = ' '.join(c.split())
  590.                     c = c.replace("[acc", "\n[acc")
  591.                     login_data = re.findall(login + '.*pwd =\s(\w+).*description =\s(\w+.*@\w+.\w+).*(\d{4}-\d{2}-\d{2})', c)
  592.                     if str(login_data).find(str(user_email)) == -1:
  593.                         msg = bot.send_message(m.chat.id, "Nem tartozik hozzád ilyen login.")
  594.                     else:
  595.                         password = re.findall(login + '\'.*pwd =\s(\w+)', c)
  596.                         group = re.findall(login + '\'.*group =\s(\w+)', c)
  597.                         #                            print (group)
  598.                         exp_month = re.findall(login + '\'.*description =\s\w+.*@\w+.\w+.(\-\d+)', c)
  599.                         if str(exp_month) == '[]':
  600.                             exp_month = int(0)
  601.                         exp_data = re.findall(login + '\'.*(\d{4}-\d{2}-\d{2})', c)
  602.                         exp_data = ' '.join(exp_data)
  603.                         #                        print (exp_data)
  604.                         today_data = datetime.date.today()
  605.                         #                        print (today_data)
  606.                         if datetime.datetime.strptime(str(today_data), "%Y-%m-%d") > datetime.datetime.strptime(
  607.                                 str(exp_data), "%Y-%m-%d"):
  608.                             #                            period = datetime.timedelta(days=-1)
  609.                             #                            print (period)
  610.                             exp_data = today_data - datetime.timedelta(1)
  611.                         #                            print (exp_data)
  612.                         #                        else:
  613.                         exp_y, exp_m, exp_d = str(exp_data).split('-')
  614.                         #                        print (exp_y + '.' + exp_m + '.' + exp_d)
  615.                         d = "'[]"
  616.                         for char in d:
  617.                             password = str(password).replace(char, "")
  618.                             exp_month = str(exp_month).replace(char, "")
  619.                             group = str(group).replace(char, "")
  620.                         #                           exp_data = exp_data.replace(char, "")
  621.                         month_new = str(int(exp_month) - int(month))
  622.                         #                   a = str(exp_data).split('-')
  623.                         #                   print (a)
  624.                         #                   aa = datetime.date(int(a[0]),int(a[1]),int(a[2]))
  625.                         #                   print(aa)
  626.                         exp_m_new = int(exp_m) + int(month)
  627.                         if exp_m_new > 12:
  628.                             exp_y_new = int(exp_y) + 1
  629.                             exp_m_new = int(exp_m_new) - 12
  630.                         else:
  631.                             exp_y_new = exp_y
  632.                         if exp_m_new < 10:
  633.                             exp_m_new = '0' + str(exp_m_new)
  634.                         exp_data_new = str(exp_y_new) + '-' + str(exp_m_new) + '-' + str(exp_d)
  635.                         #                            print (exp_data_new)
  636.                         #                        file.close()
  637.     #                    adduser_command = 'echo A(z) ' + login + ' hosszabbítva lett ' + month + ' hóval ' + exp_data_new + ' -ig, tartozás: ' + month_new + ' hó'
  638.     #                    #                        file.close()
  639.     #                    run_command(adduser_command)
  640.                         msg = bot.send_message(m.chat.id, "A(z) " + login + " hosszabbítva lett " + month + " hóval " + exp_data_new + " -ig\ntartozás: " + month_new + " hó")
  641.                         logger.info(login + " hosszabbítása " + month + " hóval " + exp_data_new + "-ig -> {}.".format(m.from_user.username))
  642.      #                   if str(user_email) != str(conf.admin_email):
  643.       #                      data = [('chat_id', conf.chatid), ('disable_web_page_preview', '1'),
  644.        #                             ('text', user_email + textoutput)]
  645.         #                    response = requests.post(conf.url, data=data)
  646.                         if int(group) == 1:
  647.                             #                                print ('group=1')
  648.                             adduser_command = '''curl --digest --user ''' + conf.oscam_user + ''':''' + conf.oscam_pass + ''' "''' + conf.oscam_server_port + '''/user_edit.html?user=''' + login + '''&pwd=''' + password + '''&description=''' + user_email + ''' ''' + month_new + '''ho&disabled=0&expdate=''' + exp_data_new + '''&failban=0&allowedtimeframe=&allowedprotocols=&group=1%2C2%2C3%2C4%2C5%2C6%2C7&hostname=&uniq=3&max_connections=1&sleep=240&sleepsend=0&monlevel=0&au=&caid=&ident=&chid=&class=&betatunnel=&suppresscmd08=1&umaxidle=-1&emmreassembly=2&preferlocalcards=-1&services=1815_ruter2&services=1802_ruter2&services=0d97_ruter1&services=1880_ruter1&services=xtra_full&numusers=-1&penalty=-1&acosc_max_active_sids=-1&acosc_zap_limit=-1&acosc_penalty=-1&acosc_penalty_duration=-1&acosc_delay=-1&cccmaxhops=10&cccreshare=-1&cccignorereshare=-1&cccstealth=-1&keepalive=0&keepalive=1&cacheex=0&cacheex_maxhop=0&no_wait_time=0&cacheex_ecm_filter=&cacheex_drop_csp=0&cacheex_allow_request=0&cacheex_allow_filter=0&cacheex_allow_filter=1&cacheex_block_fakecws=0&disablecrccacheex=0&disablecrccacheex_only_for=0&disablecrccacheex_only_for=&cwc_disable=0&action=Save&newuser="  -o /dev/null -s'''
  649.                             run_command(adduser_command)
  650.                         else:
  651.                             #                                print ('group=9')
  652.                             adduser_command = '''curl --digest --user ''' + conf.oscam_user + ''':''' + conf.oscam_pass + ''' "''' + conf.oscam_server_port + '''/user_edit.html?user=''' + login + '''&pwd=''' + password + '''&description=''' + user_email + ''' ''' + month_new + '''ho&disabled=0&expdate=''' + exp_data_new + '''&failban=0&allowedtimeframe=&allowedprotocols=&group=9&hostname=&uniq=3&max_connections=1&sleep=240&sleepsend=0&monlevel=0&au=&caid=&ident=&chid=&class=&betatunnel=&suppresscmd08=1&umaxidle=-1&emmreassembly=2&preferlocalcards=-1&numusers=-1&penalty=-1&acosc_max_active_sids=-1&acosc_zap_limit=-1&acosc_penalty=-1&acosc_penalty_duration=-1&acosc_delay=-1&cccmaxhops=10&cccreshare=-1&cccignorereshare=-1&cccstealth=-1&keepalive=0&keepalive=1&cacheex=0&cacheex_maxhop=0&no_wait_time=0&cacheex_ecm_filter=&cacheex_drop_csp=0&cacheex_allow_request=0&cacheex_allow_filter=0&cacheex_allow_filter=1&cacheex_block_fakecws=0&disablecrccacheex=0&disablecrccacheex_only_for=0&disablecrccacheex_only_for=&cwc_disable=0&action=Save&newuser="  -o /dev/null -s'''
  653.                             run_command(adduser_command)
  654.                 else:
  655.                     msg = bot.send_message(m.chat.id, "Nincs ilyen login!")          
  656.         return login_menu(msg)            
  657.    
  658.    
  659.         if c.data == '\U000023EA Vissza':
  660.             bot.delete_message(chatid, messid)
  661.             msg = bot.send_message(chatid, 'Visszalépés')
  662.             return login_menu(msg)
  663.     #                cdata = str(c.data)
  664.     #        print(cdata)
  665.     #        expdate(c)
  666.     #        bot.register_next_step_handler_by_chat_id(msg, expdate)
  667.  
  668.  
  669.  
  670. #@bot.message_handler(func=lambda message: message.text in user_list)
  671. #@bot.callback_query_handler(func=lambda c: True)
  672.  
  673.  
  674.  
  675.  
  676. #@bot.message_handler(commands=['login'])
  677.  
  678. #@bot.message_handler(func=lambda m: True)
  679.  
  680.  
  681.  
  682.  
  683.  
  684. #config parser
  685. #def login_add
  686. #    # your code
  687. #    config['section']['key'] = name
  688.  
  689.  
  690. if __name__ == '__main__':
  691.     bot.skip_pending = True
  692.     bot.polling(none_stop=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement