Example #1
0
def upt_engineer_profile(request, slug):
    from forms import EngineerForm, UserForm
    from django.contrib.auth.models import Permission
    message = None
    engineer = Engineer.objects.get(user__username=slug)
    mailserver_list = get_mx_list(engineer.company)
    user_form = UserForm(instance=engineer.user)
    form = EngineerForm(instance=engineer)
    if request.method == 'POST':
        form = EngineerForm(data=request.POST, instance=engineer)
        user_form = UserForm(data=request.POST, instance=engineer.user)
        perm_form = EngineerPermForm(request.POST)
        if form.is_valid() and user_form.is_valid() and perm_form.is_valid():
            form.save()
            user_form.save()
            message = "Engineer updated successfully"

    company = engineer.company
    engineer_list = Engineer.objects.filter(company=company)

    return render_to_response("profiles/engineer.html", {
        'slug': slug,
        'engineer_form': form.as_ul(),
        'user_form': user_form.as_ul(),
        'mailserver_list': mailserver_list,
        'message': message,
        'company': company,
        'engineer_list': engineer_list,
    },
                              context_instance=RequestContext(request))
Example #2
0
def upt_engineer_profile(request, slug):
    from forms import EngineerForm, UserForm
    from django.contrib.auth.models import Permission
    message = None
    engineer = Engineer.objects.get(user__username=slug)
    mailserver_list = get_mx_list(engineer.company)
    user_form = UserForm(instance=engineer.user)
    form = EngineerForm(instance=engineer)
    if request.method == 'POST':
        form = EngineerForm(data=request.POST, instance=engineer)
        user_form = UserForm(data=request.POST, instance=engineer.user)
        perm_form = EngineerPermForm(request.POST)
        if form.is_valid() and user_form.is_valid() and perm_form.is_valid():
            form.save()
            user_form.save()
            message = "Engineer updated successfully"

    company = engineer.company
    engineer_list = Engineer.objects.filter(company=company)
        
    return render_to_response("profiles/engineer.html", {
                                'slug': slug,
                                'engineer_form': form.as_ul(),
                                'user_form': user_form.as_ul(),
                                'mailserver_list': mailserver_list,
                                'message': message,
                                'company': company,
                                'engineer_list': engineer_list,
                                },
                                context_instance=RequestContext(request))
Example #3
0
def upt_mailserver(request, slug):
    from forms import UptMailserverForm, MailserverPrefsForm
    engineer = Engineer.objects.get(user__username=request.user.username)
    mailserver_list = get_mx_list(engineer.company)
    mx = Mailserver.objects.get(slug=slug)
    form = UptMailserverForm(mx, instance=mx)
    threshold_form = MailserverPrefsForm(instance=mx.mailserverprefs_set.get())
    message = None
    
    company = engineer.company
    engineer_list = Engineer.objects.filter(company=company)
    if request.method == 'POST':
        form = UptMailserverForm(mx, data=request.POST, instance=mx)
        threshold_form = MailserverPrefsForm(request.POST)
        form.user = engineer.user
        if form.is_valid():
            message = "Mailserver details updated successfully"
            form.save()
            name = form.cleaned_data['name']
            mx.slug = slugify(name)
            mx.save()
            add_feed_mailserver(mx)
            threshold_form = MailserverPrefsForm(data=request.POST, instance=mx.mailserverprefs_set.get())
            threshold_form.save()
            
    return render_to_response("hosts/update_mailserver.html", {
                                'mx': mx,
                                'form': form,
                                'threshold_form': threshold_form,
                                'mailserver_list': mailserver_list,
                                'message': message,
                                'company': company,
                                'engineer_list': engineer_list,
                                },
                                context_instance=RequestContext(request)) 
Example #4
0
def add_mailserver(request):
    from datetime import datetime
    from datetime import timedelta
    from mxhelpers import fake_fill
    engineer = Engineer.objects.get(user__username=request.user.username)
    mailserver_list = get_mx_list(engineer.company)
    message = None
    company = engineer.company
    engineer_list = Engineer.objects.filter(company=company)
    if request.method == 'POST':
        site_form = MailserverForm(request.POST)
        if site_form.is_valid():
            if request.user.is_authenticated():
                mx_url=site_form.cleaned_data['mx_url']
                ipaddr=site_form.cleaned_data['ipaddr']
                new_mailserver = Mailserver(name=site_form.cleaned_data['name'],
                                      slug=slugify(site_form.cleaned_data['name']),
                                      company=engineer.company,
                                      mx_url=mx_url,
                                      ipaddr=ipaddr,
                                      )
                new_mailserver.save()
                new_mailserver.alert_contact.add(engineer)

                
                MailserverPrefs.objects.create(mailserver=new_mailserver)
                rbl_all = Blacklist.objects.all()
                for rbl_obj in rbl_all:
                    new_mailserver.rbl.add(rbl_obj)
                    mx_status = MailserverRblStatus(mailserver=new_mailserver, rbl=rbl_obj, status='clear')
                    mx_status.save()
                end_results, rbl_result = run_diag(mx_url, ipaddr)

                if end_results['revdns_result'] is not "no":
                    revdns_status = "yes"
                else:
                    revdns_status = "no"
                    
                MailserverStatus.objects.create(mailserver=new_mailserver, port="up",
                    blacklist="clear", webmail="up", relay=end_results['relay_result'],
                    backupmx=end_results['redund_result'], backupmxport=end_results['backupmxport_result'], revdns=revdns_status)

                add_feed_mailserver(new_mailserver)
                fake_fill(new_mailserver) # DO NOT remove.
                mark_checked(new_mailserver, 'port', 'us') # DO NOT remove
                
                message = "Mailserver has been created successfully."
                site_form = MailserverForm() # this clears the form to add more
    else:
        site_form = MailserverForm()
    return render_to_response("hosts/add_mailserver.html", {
                                'mailserver_form': site_form,
                                'mailserver_list': mailserver_list,
                                'message': message,
                                'company': company,
                                'engineer_list': engineer_list,
                                },
                                context_instance=RequestContext(request))
Example #5
0
def dashboard(request):
    from monitor.models import PortHistory, BlacklistHistory
    try:
        engineer = Engineer.objects.get(user__username=request.user.username)
    except:
        return HttpResponseRedirect('/accounts/profile/')

    success_type = request.GET.get('success')
    if success_type == "mailserver":
        message = "Mailserver deleted successfully"
    elif success_type == "engineer":
        message = "Engineer deleted successfully"
    elif success_type == "password":
        message = "Password changed successfully"
    else:
        message = None

    mailserver_list = get_mx_list(engineer.company)
    avail_history = PortHistory.objects.filter(
        mailserver__company=engineer.company,
        mailserver__active=True).order_by('-add_time')
    open_avail_history = avail_history.filter(close_time=None)
    dataset_availability = [
        mailserver_list.filter(mailserverstatus__port='up').count(),
        mailserver_list.filter(mailserverstatus__port='down').count()
    ]
    blacklist_history = BlacklistHistory.objects.filter(
        mailserver__company=engineer.company,
        mailserver__active=True).order_by('-add_time')
    open_blacklist_history = blacklist_history.filter(close_time=None)
    dataset_blacklist = [
        mailserver_list.filter(
            mailserverstatus__blacklist='blacklisted').count(),
        mailserver_list.filter(mailserverstatus__blacklist='clear').count()
    ]
    dataset_hist, d_range = build_hist_dataset(avail_history)
    open_incidents = []
    for s in [open_blacklist_history, open_avail_history]:
        for x in s:
            open_incidents.append(x)
    company = engineer.company
    daily_cost = get_daily_cost(company)
    engineer_list = Engineer.objects.filter(company=company)
    return render_to_response("profiles/dashboard.html", {
        'mailserver_list': mailserver_list,
        'engineer_list': engineer_list,
        'company': company,
        'message': message,
        'dataset_availability': dataset_availability,
        'blacklist_history': open_blacklist_history,
        'dataset_blacklist': dataset_blacklist,
        'dataset_hist': dataset_hist,
        'open_incidents': open_incidents,
        'daily_cost': daily_cost,
        'max_daily_incidents': max(dataset_hist),
        'd_range': d_range,
    },
                              context_instance=RequestContext(request))
Example #6
0
def add_engineer(request):
    from django.contrib.auth.models import User, Permission
    from django.template.defaultfilters import slugify
    site_form = AddEngineerForm()
    perm_form = EngineerPermForm()
    message = None
    engineer = Engineer.objects.get(user__username=request.user.username)
    mailserver_list = get_mx_list(engineer.company)
    company = engineer.company
    engineer_list = Engineer.objects.filter(company=company)
    if request.method == 'POST':
        site_form = AddEngineerForm(request.POST)
        if site_form.is_valid():
            if request.user.is_authenticated():
                new_user = User.objects.create_user(
                    slugify(site_form.cleaned_data['user']),
                    site_form.cleaned_data['email'],
                    site_form.cleaned_data['password1'])
                new_user.is_active = True
                new_user.first_name = site_form.cleaned_data['first_name']
                new_user.last_name = site_form.cleaned_data['last_name']
                new_user.save()
                if site_form.cleaned_data['can_edit_mx'] == True:
                    perm = Permission.objects.get(codename="delete_mailserver")
                    new_user.user_permissions.add(perm)
                    perm = Permission.objects.get(codename="change_mailserver")
                    new_user.user_permissions.add(perm)
                    perm = Permission.objects.get(codename="add_mailserver")
                    new_user.user_permissions.add(perm)
                if site_form.cleaned_data['can_edit_company'] == True:
                    perm = Permission.objects.get(codename="change_company")
                    new_user.user_permissions.add(perm)
                if site_form.cleaned_data['can_edit_billing'] == True:
                    perm = Permission.objects.get(
                        codename="add_invoicehistory")
                    new_user.user_permissions.add(perm)
                    perm = Permission.objects.get(codename="change_credit")
                    new_user.user_permissions.add(perm)
                new_engineer = Engineer(
                    user=new_user,
                    timezone=site_form.cleaned_data['timezone'],
                    company=company,
                    mobile=site_form.cleaned_data['mobile'])
                new_engineer.save()
                message = "Engineer added successfully"
    return render_to_response("profiles/add_engineer.html", {
        'mailserver_list': mailserver_list,
        'engineer_form': site_form,
        'message': message,
        'company': company,
        'engineer_list': engineer_list,
    },
                              context_instance=RequestContext(request))
Example #7
0
def free_diag(request):
    import timeit
    import dns.resolver
    from forms import DiagnosticForm

    diag_form = DiagnosticForm()
    pick_mx = None
    domain = None

    if request.method == 'POST':
        diag_form = DiagnosticForm(request.POST)
        if diag_form.is_valid():
            domain = diag_form.cleaned_data['domain']
            answers = dns.resolver.query(domain, 'MX')
            #if len(answers) > 1:
            # need to pick one
            # TODO: if user has only one MX, go straight to it
            pick_mx = []
            for rdata in answers:
                raw_ip = dns.resolver.query(
                    rdata.exchange.to_text().strip('.'))
                ipaddr = raw_ip[0].to_text()
                try:
                    z = """\
                    import socket
                    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                    s.settimeout(2.0)
                    s.connect(('%s', 25))
                    s.close()
                    """ % ipaddr
                    t = timeit.Timer(stmt=z).timeit(number=1) * 1000
                    pick_mx.append([rdata.exchange.to_text().strip('.'), "Up"])

                except:
                    pick_mx.append(
                        [rdata.exchange.to_text().strip('.'), "Down"])

    if request.user.is_authenticated():
        engineer = Engineer.objects.get(user__username=request.user.username)
        mailserver_list = get_mx_list(engineer.company)
        template = "hosts/diagnostic_int.html"
    else:
        mailserver_list = None
        template = "hosts/diagnostic.html"
    return render_to_response(template, {
        'diagnostic_form': diag_form.as_ul(),
        'pick_mx': pick_mx,
        'tld': domain,
        'mailserver_list': mailserver_list,
    },
                              context_instance=RequestContext(request))
Example #8
0
def disp_error(request, slug):
    engineer = Engineer.objects.get(user__username=request.user.username)
    mailserver_list = get_mx_list(engineer.company)
    company = engineer.company
    engineer_list = Engineer.objects.filter(company=company)
    return render_to_response("profiles/company.html", {
                                'company_form': form.as_ul(),
                                'mailserver_list': mailserver_list,
                                'message': message,
                                'company': company,
                                'engineer_list': engineer_list,
                                'error_code': slug,
                                },
                                context_instance=RequestContext(request))
Example #9
0
def disp_error(request, slug):
    engineer = Engineer.objects.get(user__username=request.user.username)
    mailserver_list = get_mx_list(engineer.company)
    company = engineer.company
    engineer_list = Engineer.objects.filter(company=company)
    return render_to_response("profiles/company.html", {
        'company_form': form.as_ul(),
        'mailserver_list': mailserver_list,
        'message': message,
        'company': company,
        'engineer_list': engineer_list,
        'error_code': slug,
    },
                              context_instance=RequestContext(request))
Example #10
0
def detail_mx(request, slug):
    from mxhelpers import get_rtt_dataset, get_availability, run_diag, get_diag_score
    from django.http import HttpResponse
    from django.core import serializers
    engineer = Engineer.objects.get(user__username=request.user.username)
    mailserver_list = get_mx_list(engineer.company)
    mx_obj = Mailserver.objects.get(slug=slug)
    blacklist_history = BlacklistHistory.objects.filter(mailserver=mx_obj).order_by('-close_time')
    avail_history = PortHistory.objects.filter(mailserver=mx_obj)
    blacklist_status = MailserverRblStatus.objects.filter(mailserver=mx_obj)
    company = engineer.company
    engineer_list = Engineer.objects.filter(company=company)
    dataset = None
    rtt_labels = None
    scale_num = None
    img_url = None
    message = None

    end_results = MailserverStatus.objects.get(mailserver=mx_obj)


    if request.method == 'GET':   
        if request.GET.get('range'):
            disp_range = request.GET.get('range')
        else:
            disp_range = 'hourly'





    return render_to_response("hosts/detail_mx.html", {
                                'message': message,
                                'mailserver_list': mailserver_list,
                                'mx': mx_obj,
                                'company': company,
                                'disp_range': disp_range,
                                'engineer_list': engineer_list,
                                'blacklist_history': blacklist_history,
                                'avail_history': avail_history,
                                'blacklist_status': blacklist_status,
                                'redund_result': end_results.backupmx,
                                'backupmxport_result': end_results.backupmxport,
                                'relay_result': end_results.relay,
                                'avail_result': end_results.port,
                                'revdns_result': end_results.revdns,
                                'diag_score': end_results.score,
                                },
                                context_instance=RequestContext(request))
Example #11
0
def free_diag(request):
    import timeit
    import dns.resolver
    from forms import DiagnosticForm
    
    diag_form = DiagnosticForm()
    pick_mx=None
    domain=None

    if request.method == 'POST':
        diag_form = DiagnosticForm(request.POST)
        if diag_form.is_valid():
            domain = diag_form.cleaned_data['domain']
            answers = dns.resolver.query(domain, 'MX')
            #if len(answers) > 1:
                # need to pick one
                # TODO: if user has only one MX, go straight to it
            pick_mx = []
            for rdata in answers:
                raw_ip = dns.resolver.query(rdata.exchange.to_text().strip('.'))
                ipaddr = raw_ip[0].to_text()
                try:
                    z = """\
                    import socket
                    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                    s.settimeout(2.0)
                    s.connect(('%s', 25))
                    s.close()
                    """ % ipaddr
                    t = timeit.Timer(stmt=z).timeit(number=1)*1000
                    pick_mx.append([rdata.exchange.to_text().strip('.'), "Up"])

                except:
                    pick_mx.append([rdata.exchange.to_text().strip('.'), "Down"])

    if request.user.is_authenticated():
        engineer = Engineer.objects.get(user__username=request.user.username)
        mailserver_list = get_mx_list(engineer.company)
        template = "hosts/diagnostic_int.html"
    else:
        mailserver_list = None
        template = "hosts/diagnostic.html"
    return render_to_response(template, {
                        'diagnostic_form': diag_form.as_ul(),
                        'pick_mx': pick_mx,
                        'tld': domain,
                        'mailserver_list': mailserver_list,
                        },
                        context_instance=RequestContext(request))
Example #12
0
def add_credit(request):
    from datetime import datetime
    from datetime import timedelta
    engineer = Engineer.objects.get(user__username=request.user.username)
    mailserver_list = get_mx_list(engineer.company)
    message = None
    company = engineer.company
    engineer_list = Engineer.objects.filter(company=company)
    return render_to_response("hosts/add_credit.html", {
                                'mailserver_list': mailserver_list,
                                'message': message,
                                'company': company,
                                'engineer_list': engineer_list,
                                },
                                context_instance=RequestContext(request))
Example #13
0
def add_credit(request):
    from datetime import datetime
    from datetime import timedelta
    engineer = Engineer.objects.get(user__username=request.user.username)
    mailserver_list = get_mx_list(engineer.company)
    message = None
    company = engineer.company
    engineer_list = Engineer.objects.filter(company=company)
    return render_to_response("hosts/add_credit.html", {
        'mailserver_list': mailserver_list,
        'message': message,
        'company': company,
        'engineer_list': engineer_list,
    },
                              context_instance=RequestContext(request))
Example #14
0
def add_engineer(request):
    from django.contrib.auth.models import User, Permission
    from django.template.defaultfilters import slugify
    site_form = AddEngineerForm()
    perm_form = EngineerPermForm()
    message = None
    engineer = Engineer.objects.get(user__username=request.user.username)
    mailserver_list = get_mx_list(engineer.company)
    company = engineer.company
    engineer_list = Engineer.objects.filter(company=company)
    if request.method == 'POST':
        site_form = AddEngineerForm(request.POST)
        if site_form.is_valid():
            if request.user.is_authenticated():
                new_user = User.objects.create_user(slugify(site_form.cleaned_data['user']), site_form.cleaned_data['email'], site_form.cleaned_data['password1'])
                new_user.is_active = True
                new_user.first_name = site_form.cleaned_data['first_name']
                new_user.last_name = site_form.cleaned_data['last_name']
                new_user.save()
                if site_form.cleaned_data['can_edit_mx'] == True:
                    perm = Permission.objects.get(codename="delete_mailserver")
                    new_user.user_permissions.add(perm)
                    perm = Permission.objects.get(codename="change_mailserver")
                    new_user.user_permissions.add(perm)
                    perm = Permission.objects.get(codename="add_mailserver")
                    new_user.user_permissions.add(perm)
                if site_form.cleaned_data['can_edit_company'] == True:
                    perm = Permission.objects.get(codename="change_company")
                    new_user.user_permissions.add(perm)
                if site_form.cleaned_data['can_edit_billing'] == True:
                    perm = Permission.objects.get(codename="add_invoicehistory")
                    new_user.user_permissions.add(perm)
                    perm = Permission.objects.get(codename="change_credit")
                    new_user.user_permissions.add(perm)
                new_engineer = Engineer(user=new_user,
                                      timezone=site_form.cleaned_data['timezone'],
                                      company=company,
                                      mobile=site_form.cleaned_data['mobile'])
                new_engineer.save()
                message = "Engineer added successfully"
    return render_to_response("profiles/add_engineer.html", {
                                'mailserver_list': mailserver_list,
                                'engineer_form': site_form,
                                'message': message,
                                'company': company,
                                'engineer_list': engineer_list,
                                },
                                context_instance=RequestContext(request))
Example #15
0
def dashboard(request):
    from monitor.models import PortHistory, BlacklistHistory
    try:
        engineer = Engineer.objects.get(user__username=request.user.username)
    except:
        return HttpResponseRedirect('/accounts/profile/')

    success_type = request.GET.get('success')
    if success_type == "mailserver":
        message = "Mailserver deleted successfully"
    elif success_type == "engineer":
        message = "Engineer deleted successfully"
    elif success_type == "password":
        message = "Password changed successfully"
    else:
        message = None

    mailserver_list = get_mx_list(engineer.company)
    avail_history = PortHistory.objects.filter(mailserver__company=engineer.company, mailserver__active=True).order_by('-add_time')
    open_avail_history = avail_history.filter(close_time=None)
    dataset_availability = [mailserver_list.filter(mailserverstatus__port='up').count(), mailserver_list.filter(mailserverstatus__port='down').count()]
    blacklist_history = BlacklistHistory.objects.filter(mailserver__company=engineer.company, mailserver__active=True).order_by('-add_time')
    open_blacklist_history = blacklist_history.filter(close_time=None)
    dataset_blacklist = [mailserver_list.filter(mailserverstatus__blacklist='blacklisted').count(), mailserver_list.filter(mailserverstatus__blacklist='clear').count()]
    dataset_hist, d_range = build_hist_dataset(avail_history)
    open_incidents = []
    for s in [open_blacklist_history, open_avail_history]:
        for x in s:
            open_incidents.append(x)
    company = engineer.company
    daily_cost = get_daily_cost(company)
    engineer_list = Engineer.objects.filter(company=company)
    return render_to_response("profiles/dashboard.html", {
                                'mailserver_list': mailserver_list,
                                'engineer_list': engineer_list,
                                'company': company,
                                'message': message,
                                'dataset_availability': dataset_availability,
                                'blacklist_history': open_blacklist_history,
                                'dataset_blacklist': dataset_blacklist,
                                'dataset_hist': dataset_hist,
                                'open_incidents': open_incidents,
                                'daily_cost': daily_cost,
                                'max_daily_incidents': max(dataset_hist),
                                'd_range': d_range,
                                },
                                context_instance=RequestContext(request))
Example #16
0
def user_login(request):
    engineer = Engineer.objects.filter(user=request.user)
    if len(engineer) == 0:
        form = AddCompanyForm()
        name_form = UpdateNameForm()
        return render_to_response("profiles/firstlogin.html", {
            'company_form': form,
            'name_form': name_form,
        },
                                  context_instance=RequestContext(request))
    else:
        try:
            message = None
            mailserver_list = get_mx_list(engineer.company)
            return HttpResponseRedirect('/dashboard/')
        except:
            return HttpResponseRedirect('/add/mailserver/')
Example #17
0
def user_login(request):
    engineer = Engineer.objects.filter(user=request.user)
    if len(engineer) == 0:
        form = AddCompanyForm()
        name_form = UpdateNameForm()
        return render_to_response("profiles/firstlogin.html", {
                                    'company_form': form,
                                    'name_form': name_form,
                                    },
                                    context_instance=RequestContext(request))
    else:
        try:
            message = None
            mailserver_list = get_mx_list(engineer.company)
            return HttpResponseRedirect('/dashboard/')
        except:
            return HttpResponseRedirect('/add/mailserver/')
Example #18
0
def detail_mx(request, slug):
    from mxhelpers import get_rtt_dataset, get_availability, run_diag, get_diag_score
    from django.http import HttpResponse
    from django.core import serializers
    engineer = Engineer.objects.get(user__username=request.user.username)
    mailserver_list = get_mx_list(engineer.company)
    mx_obj = Mailserver.objects.get(slug=slug)
    blacklist_history = BlacklistHistory.objects.filter(
        mailserver=mx_obj).order_by('-close_time')
    avail_history = PortHistory.objects.filter(mailserver=mx_obj)
    blacklist_status = MailserverRblStatus.objects.filter(mailserver=mx_obj)
    company = engineer.company
    engineer_list = Engineer.objects.filter(company=company)
    dataset = None
    rtt_labels = None
    scale_num = None
    img_url = None
    message = None

    end_results = MailserverStatus.objects.get(mailserver=mx_obj)

    if request.method == 'GET':
        if request.GET.get('range'):
            disp_range = request.GET.get('range')
        else:
            disp_range = 'hourly'

    return render_to_response("hosts/detail_mx.html", {
        'message': message,
        'mailserver_list': mailserver_list,
        'mx': mx_obj,
        'company': company,
        'disp_range': disp_range,
        'engineer_list': engineer_list,
        'blacklist_history': blacklist_history,
        'avail_history': avail_history,
        'blacklist_status': blacklist_status,
        'redund_result': end_results.backupmx,
        'backupmxport_result': end_results.backupmxport,
        'relay_result': end_results.relay,
        'avail_result': end_results.port,
        'revdns_result': end_results.revdns,
        'diag_score': end_results.score,
    },
                              context_instance=RequestContext(request))
Example #19
0
def company_profile(request):
    from forms import CompanyForm
    engineer = Engineer.objects.get(user__username=request.user.username)
    mailserver_list = get_mx_list(engineer.company)
    company = engineer.company
    engineer_list = Engineer.objects.filter(company=company)
    form = CompanyForm(instance=company)
    message = None
    if request.method == 'POST':
        form = CompanyForm(data=request.POST, instance=company)
        if form.is_valid():
            form.save()
            message = "Company details updated successfully"

    return render_to_response("profiles/upd_company.html", {
        'company_form': form,
        'mailserver_list': mailserver_list,
        'message': message,
        'company': company,
        'engineer_list': engineer_list,
    },
                              context_instance=RequestContext(request))
Example #20
0
def delete_mailserver(request, slug):
    engineer = Engineer.objects.get(user__username=request.user.username)
    mailserver_list = get_mx_list(engineer.company)
    mx = Mailserver.objects.get(slug=slug)
    message = None
    company = engineer.company
    engineer_list = Engineer.objects.filter(company=company)
    if request.method == 'POST':
        if request.user.is_authenticated():
            mx = Mailserver.objects.get(slug=slug)
            mx.active = False
            mx.save()
            return HttpResponseRedirect('/dashboard/?success=mailserver')

    return render_to_response("hosts/delete_mailserver.html", {
        'mailserver_list': mailserver_list,
        'message': message,
        'company': company,
        'engineer_list': engineer_list,
        'mx': mx,
    },
                              context_instance=RequestContext(request))
Example #21
0
def delete_mailserver(request, slug):
    engineer = Engineer.objects.get(user__username=request.user.username)
    mailserver_list = get_mx_list(engineer.company)
    mx = Mailserver.objects.get(slug=slug)
    message = None
    company = engineer.company
    engineer_list = Engineer.objects.filter(company=company)
    if request.method == 'POST':
        if request.user.is_authenticated():
            mx = Mailserver.objects.get(slug=slug)
            mx.active = False
            mx.save()
            return HttpResponseRedirect('/dashboard/?success=mailserver')

    return render_to_response("hosts/delete_mailserver.html", {
                                'mailserver_list': mailserver_list,
                                'message': message,
                                'company': company,
                                'engineer_list': engineer_list,
                                'mx': mx,
                                },
                                context_instance=RequestContext(request)) 
Example #22
0
def company_profile(request):
    from forms import CompanyForm
    engineer = Engineer.objects.get(user__username=request.user.username)
    mailserver_list = get_mx_list(engineer.company)
    company = engineer.company
    engineer_list = Engineer.objects.filter(company=company)
    form = CompanyForm(instance=company)
    message = None
    if request.method == 'POST':
        form = CompanyForm(data=request.POST, instance=company)
        if form.is_valid():
            form.save()
            message = "Company details updated successfully"


    return render_to_response("profiles/upd_company.html", {
                                'company_form': form,
                                'mailserver_list': mailserver_list,
                                'message': message,
                                'company': company,
                                'engineer_list': engineer_list,
                                },
                                context_instance=RequestContext(request))
Example #23
0
def upt_mailserver(request, slug):
    from forms import UptMailserverForm, MailserverPrefsForm
    engineer = Engineer.objects.get(user__username=request.user.username)
    mailserver_list = get_mx_list(engineer.company)
    mx = Mailserver.objects.get(slug=slug)
    form = UptMailserverForm(mx, instance=mx)
    threshold_form = MailserverPrefsForm(instance=mx.mailserverprefs_set.get())
    message = None

    company = engineer.company
    engineer_list = Engineer.objects.filter(company=company)
    if request.method == 'POST':
        form = UptMailserverForm(mx, data=request.POST, instance=mx)
        threshold_form = MailserverPrefsForm(request.POST)
        form.user = engineer.user
        if form.is_valid():
            message = "Mailserver details updated successfully"
            form.save()
            name = form.cleaned_data['name']
            mx.slug = slugify(name)
            mx.save()
            add_feed_mailserver(mx)
            threshold_form = MailserverPrefsForm(
                data=request.POST, instance=mx.mailserverprefs_set.get())
            threshold_form.save()

    return render_to_response("hosts/update_mailserver.html", {
        'mx': mx,
        'form': form,
        'threshold_form': threshold_form,
        'mailserver_list': mailserver_list,
        'message': message,
        'company': company,
        'engineer_list': engineer_list,
    },
                              context_instance=RequestContext(request))
Example #24
0
def add_mailserver(request):
    from datetime import datetime
    from datetime import timedelta
    from mxhelpers import fake_fill
    engineer = Engineer.objects.get(user__username=request.user.username)
    mailserver_list = get_mx_list(engineer.company)
    message = None
    company = engineer.company
    engineer_list = Engineer.objects.filter(company=company)
    if request.method == 'POST':
        site_form = MailserverForm(request.POST)
        if site_form.is_valid():
            if request.user.is_authenticated():
                mx_url = site_form.cleaned_data['mx_url']
                ipaddr = site_form.cleaned_data['ipaddr']
                new_mailserver = Mailserver(
                    name=site_form.cleaned_data['name'],
                    slug=slugify(site_form.cleaned_data['name']),
                    company=engineer.company,
                    mx_url=mx_url,
                    ipaddr=ipaddr,
                )
                new_mailserver.save()
                new_mailserver.alert_contact.add(engineer)

                MailserverPrefs.objects.create(mailserver=new_mailserver)
                rbl_all = Blacklist.objects.all()
                for rbl_obj in rbl_all:
                    new_mailserver.rbl.add(rbl_obj)
                    mx_status = MailserverRblStatus(mailserver=new_mailserver,
                                                    rbl=rbl_obj,
                                                    status='clear')
                    mx_status.save()
                end_results, rbl_result = run_diag(mx_url, ipaddr)

                if end_results['revdns_result'] is not "no":
                    revdns_status = "yes"
                else:
                    revdns_status = "no"

                MailserverStatus.objects.create(
                    mailserver=new_mailserver,
                    port="up",
                    blacklist="clear",
                    webmail="up",
                    relay=end_results['relay_result'],
                    backupmx=end_results['redund_result'],
                    backupmxport=end_results['backupmxport_result'],
                    revdns=revdns_status)

                add_feed_mailserver(new_mailserver)
                fake_fill(new_mailserver)  # DO NOT remove.
                mark_checked(new_mailserver, 'port', 'us')  # DO NOT remove

                message = "Mailserver has been created successfully."
                site_form = MailserverForm(
                )  # this clears the form to add more
    else:
        site_form = MailserverForm()
    return render_to_response("hosts/add_mailserver.html", {
        'mailserver_form': site_form,
        'mailserver_list': mailserver_list,
        'message': message,
        'company': company,
        'engineer_list': engineer_list,
    },
                              context_instance=RequestContext(request))