Example #1
0
def view_addevent():
    title = request.args.get('title')
    start = convertToMilis(request.args.get('start'))
    if request.args.get('end'):
        stop = convertToMilis(request.args.get('end'))
    else:
        stop = start
    tmp = rds.get_json('calenderEvents')
    if tmp:
        id = tmp[0]['id'] + 1
    else:
        id = 1
    eventClass = classes[request.args.get('class')]
    data = {
        "id": id,
        "title": title,
        "url": request.args.get('url'),
        "class": eventClass,
        "start": int(start),  #Milliseconds
        "end": int(stop)  # Milliseconds
    }
    if tmp:
        tmp.insert(0, data)
    else:
        tmp = [data]
    rds.store_json('calenderEvents', tmp)

    return redirect('/calender')
Example #2
0
def view_removeevent():
    id = request.args.get('id')
    tmp = rds.get_json('calenderEvents')
    for i in range(len(tmp)):
        if tmp[i]['id'] == int(id):
            del tmp[i]
            break
    if tmp:
        rds.store_json('calenderEvents', tmp)
    else:
        rds.delete('calenderEvents')
    return redirect('/calender')
Example #3
0
def send_email(settings, data=None):
    utils = Utils()

    keys = ('host', 'port', 'user', 'pass', 'to_addr', 'from_addr', 'ssl_type',
            'action')
    if not all(elem in settings for elem in keys):
        return ('Error, missing settings', 400)

    if not settings['host'] or not settings['port']:
        return ('SMTP address or SMTP port are empty', 400)

    if not isinstance(settings['port'], int):
        return ('SMTP Port must be a number', 400)

    if not settings['from_addr'] or not settings['to_addr']:
        return ('FROM or TO Address are empty', 400)

    if not utils.is_string_email(settings['from_addr']) or \
       not utils.is_string_email(settings['to_addr']):
        return ('FROM or TO addresses are not valid emails', 400)

    if settings['ssl_type'] not in ('starttls', 'ssl'):
        return ('Error in security settings (must be starttls or ssl).', 400)

    if settings['action'] not in ('save', 'test', 'send'):
        return ('Error, action is not supported', 400)

    msg = MIMEMultipart('alternative')
    subject = ''

    if settings['action'] == 'test':
        subject = 'Test by NERVE'
        part = MIMEText('This is a test.', 'plain')
        msg.attach(part)

    elif settings['action'] == 'send':
        subject = 'Assessment Complete'
        part = MIMEText(str(data), 'plain')
        part.add_header('Content-Disposition',
                        'attachment',
                        filename='assessment.json')
        msg.attach(part)

    elif settings['action'] == 'save':
        rds.store_json('p_settings_email', settings)
        return ('OK, Saved.', 200)

    context = ssl.create_default_context()

    msg['From'] = formataddr((str(Header('NERVE Security',
                                         'utf-8')), settings['from_addr']))
    msg['To'] = settings['to_addr']
    msg['Subject'] = subject

    try:
        if settings['ssl_type'] == 'ssl':
            # ssl
            server = smtplib.SMTP_SSL(settings['host'],
                                      settings['port'],
                                      context=context)
        else:
            # starttls
            server = smtplib.SMTP(settings['host'], settings['port'])
            server.starttls(context=context)

        server.login(settings['user'], settings['pass'])
        server.sendmail(settings['from_addr'], settings['to_addr'],
                        msg.as_string())
        server.quit()
        return ('Message was sent successfully', 200)

    except Exception as e:
        return ('Message was could not be sent {}'.format(e), 500)
Example #4
0
 def post(self):
     user_exclusions = request.get_json()
     if isinstance(user_exclusions, dict):
         rds.store_json('p_rule-exclusions', user_exclusions)
         return {'status': 'ok'}
     return {'status': 'Malformed data, must be JSON'}