Ejemplo n.º 1
0
    def post(self):
        data = registration_parser.parse_args()
        msisdn = data['msisdn']
        if is_msisdn_valid(msisdn):

            current_user = UserModel.find_by_msisdn(msisdn)
            if current_user:
                if current_user.password_status == PASSWORD_STATUS['USED']:
                    password = gen_password()
                    current_user.password = UserModel.generate_hash(password)
                    current_user.password_status = PASSWORD_STATUS['NEW']
                    current_user.update_data()

                    password_history_note = PasswordHistoryModel(
                        msisdn=current_user.msisdn,
                        password=current_user.password)
                    password_history_note.add()

                    send_password_sms_to_user(password, msisdn)
                    return {
                        'message':
                        'New password for MSISDN {} was created'.format(msisdn)
                    }, 200

                if current_user.password_status == PASSWORD_STATUS['NEW']:
                    password = gen_password()
                    current_user.password = UserModel.generate_hash(password)
                    current_user.update_data()

                    password_history_note = PasswordHistoryModel(
                        msisdn=current_user.msisdn,
                        password=current_user.password)
                    password_history_note.add()

                    send_password_sms_to_user(password, msisdn)
                    return {
                        'message':
                        'New password for MSISDN {} was created'.format(msisdn)
                    }, 200

            else:
                password = gen_password()

                new_user = UserModel(
                    msisdn=msisdn, password=UserModel.generate_hash(password))
                password_history_note = PasswordHistoryModel(
                    msisdn=new_user.msisdn, password=new_user.password)

                try:
                    new_user.save_to_db()
                    password_history_note.add()
                    send_password_sms_to_user(password, msisdn)
                    return {
                        'message':
                        'New password for MSISDN {} was created'.format(msisdn)
                    }, 200
                except:
                    return {'message': 'Internal error'}, 500
        else:
            return {'message': 'Wrong format for MSISDN'}, 400
Ejemplo n.º 2
0
 def post(self, request, domain_id, format=None):
     data = JSONParser().parse(request)
     data['domain_id'] = domain_id
     secret = gen_password(length=32)
     data['secret'] = secret
     serializer = DynDNSSecretSerializer(data=data)
     if serializer.is_valid():
         serializer.save()
         # Put unhashed serial back to response
         data = dict(serializer.data)
         data['secret'] = secret
         return JSONResponse(data, status=status.HTTP_201_CREATED)
     return JSONResponse(serializer.errors,
                         status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 3
0
def add_dyndns(request, name):
    try:
        domain = Domain.user_objects(request.user).get(name=name)
    except Domain.DoesNotExist:
        raise Http404
    form = None
    if request.method == 'POST':
        secret = gen_password(32)
        instance = Client(domain=domain, secret=secret)
        form = ClientForm(request.POST,
                          instance=instance,
                          initial={
                              'domain': domain.pk,
                              'secret': secret
                          })
        if form.is_valid():

            # Test unique

            if len(
                    Client.user_objects(request.user).filter(
                        domain=domain,
                        name=form.cleaned_data['name']).all()) != 0:
                messages.error(request, "Client with same name already added!")

            else:
                client = form.save()
                url = "http"
                if request.is_secure():
                    url += "s"
                url += "://%s%s" % (request.get_host(),
                                    reverse('api_update', args=(secret, )))
                return render(request, 'manager/edit_dyndns.html', {
                    'client': client,
                    'secret': secret,
                    'update_url': url
                })
    return render(request, 'manager/add_dyndns.html', {
        'domain': domain,
        'client': form
    })
Ejemplo n.º 4
0
def database_create(__host_id__, __db_name__):
    if database_exists(__host_id__, __db_name__):
        print('Database already exists. [%s]' % __db_name__)
        exit(-1)
    db_pass = gen_password(8)
    hosts = HostUtil.load_hosts()
    config_data = None
    for host in hosts:
        if host['host_id'] == __host_id__:
            config_data = host
    if config_data is None:
        print('Can not load config data. [%s]' % __host_id__)
    conn = get_mysql_connection(config_data)
    cursor = conn.cursor()
    sql_create_db = "CREATE DATABASE `%s` default character set utf8mb4 collate utf8mb4_unicode_ci" % __db_name__
    sql_create_user = "******" % (
        __db_name__, db_pass)
    sql_grant_privileges = "grant all privileges on %s.* to '%s'@'%%'" % (
        __db_name__, __db_name__)
    sql_flush_privileges = "flush privileges"
    sql_set_native_password = "******" % (
        __db_name__, db_pass)
    cursor.execute(sql_create_db)
    cursor.execute(sql_create_user)
    cursor.execute(sql_grant_privileges)
    cursor.execute(sql_flush_privileges)
    cursor.execute(sql_set_native_password)
    cursor.execute(sql_flush_privileges)
    print("Database Create Successfully.\n"
          "DB_DATABASE=%s\n"
          "DB_USERNAME=%s\n"
          "DB_PASSWORD=%s\n" % (__db_name__, __db_name__, db_pass))
    # 写入 databases.json 配置文件
    DatabaseUtil.add_database(__host_id__, {
        'name': __db_name__,
        'username': __db_name__,
        'password': db_pass
    })
Ejemplo n.º 5
0
def edit_dyndns_secret(request, id):
    try:
        client = Client.user_objects(request.user).get(pk=int(id))
    except Client.DoesNotExist:
        raise Http404
    new_secret = gen_password(32)
    client.secret = new_secret
    client.save()
    url = "http"
    if request.is_secure():
        url += "s"
    url += "://%s%s" % (request.get_host(),
                        reverse('api_update', args=(new_secret, )))

    # Fetch and show also associated entries
    try:
        synchronize(client.domain, True)
        messages.success(request, "Successfully updated cache")
    except:
        messages.error(request, "Cannot refresh dns-entries from server")

    records = []

    for entry in DNSEntryCache.user_objects(
            request.user).filter(domain=client.domain).all():
        if entry.name == client.name:
            records.append(entry)

    return render(
        request, 'manager/edit_dyndns.html', {
            'domain': client.domain,
            'client': client,
            'records': records,
            'secret': new_secret,
            'update_url': url
        })
Ejemplo n.º 6
0
def bot_gen_password(message):
    """Функция обрабатывает команду /gen
    Генерирует случайный пароль и отправляет его в чат
    """
    password = gen_password(ascii_letters + digits)
    bot.send_message(message.chat.id, password)
Ejemplo n.º 7
0
def gen_pass():
    length = int(request.args['length'])
    return utils.gen_password(length)