def _system_info(request=None): # OS, hostname, release __, hostname, __ = os.uname()[0:3] platform = sysctl.filter('hw.model')[0].value physmem = '%dMB' % (sysctl.filter('hw.physmem')[0].value / 1048576, ) # All this for a timezone, because time.asctime() doesn't add it in. date = time.strftime('%a %b %d %H:%M:%S %Z %Y') + '\n' uptime = subprocess.check_output( "env -u TZ uptime | awk -F', load averages:' '{ print $1 }'", shell=True) loadavg = "%.2f, %.2f, %.2f" % os.getloadavg() try: freenas_build = '%s %s' % (get_sw_name(), get_sw_login_version()) except: freenas_build = "Unrecognized build" try: conf = Configuration.Configuration() manifest = conf.SystemManifest() builddate = datetime.utcfromtimestamp(int(manifest.Sequence())) except: builddate = None return { 'hostname': hostname, 'platform': platform, 'physmem': physmem, 'date': date, 'uptime': uptime, 'loadavg': loadavg, 'freenas_build': freenas_build, 'builddate': builddate, }
def login_wrapper(request, template_name='registration/login.html', redirect_field_name=REDIRECT_FIELD_NAME, authentication_form=AuthenticationForm, current_app=None, extra_context={}): """ Wrapper to login to do not allow login and redirect to shutdown, reboot or logout pages, instead redirect to / """ extra_context.update({ 'sw_login_version': get_sw_login_version(), 'sw_name': get_sw_name(), }) response = login(request, template_name='registration/login.html', redirect_field_name=redirect_field_name, authentication_form=authentication_form, current_app=current_app, extra_context=extra_context) if response.status_code in (301, 302) and response._headers.get( 'location', ('', ''))[1] in ( reverse('system_reboot'), reverse('system_shutdown'), reverse('account_logout'), ): response._headers['location'] = ('Location', '/') elif request.user.is_authenticated(): return HttpResponseRedirect('/') return response
def login_wrapper( request, template_name='registration/login.html', redirect_field_name=REDIRECT_FIELD_NAME, authentication_form=AuthenticationForm, current_app=None, extra_context={} ): """ Wrapper to login to do not allow login and redirect to shutdown, reboot or logout pages, instead redirect to / """ extra_context.update({ 'sw_login_version': get_sw_login_version(), 'sw_name': get_sw_name(), }) response = login( request, template_name='registration/login.html', redirect_field_name=redirect_field_name, authentication_form=authentication_form, current_app=current_app, extra_context=extra_context, ) if response.status_code in (301, 302) and response._headers.get( 'location', ('', '') )[1] in ( reverse('system_reboot'), reverse('system_shutdown'), reverse('account_logout'), ): response._headers['location'] = ('Location', '/') elif request.user.is_authenticated(): return HttpResponseRedirect('/') return response
def login_wrapper( request, template_name='registration/login.html', redirect_field_name=REDIRECT_FIELD_NAME, authentication_form=ExtendedAuthForm, current_app=None, extra_context=None, ): """ Wrapper to login to do not allow login and redirect to shutdown, reboot or logout pages, instead redirect to / """ auth_token = request.GET.get('auth_token') if auth_token: user = authenticate(auth_token=auth_token) if user: auth_login(request, user, 'freenasUI.middleware.auth.AuthTokenBackend') # Overload hook_app_index to shortcut passive node # Doing that in another layer will use too many reasources view = appPool.hook_app_index('account_login', request) view = [_f for _f in view if _f] if view: return view[0] if extra_context is None: extra_context = {} extra_context.update({ 'sw_login_version': get_sw_login_version(), 'sw_version_footer': get_sw_version(strip_build_num=True).split('-', 1)[-1], 'sw_name': get_sw_name(), 'sw_year': get_sw_year(), }) if not models.bsdUsers.has_root_password(): authentication_form = forms.NewPasswordForm extra_context.update({ 'reset_password': True, }) response = login( request, template_name='registration/login.html', redirect_field_name=redirect_field_name, authentication_form=authentication_form, current_app=current_app, extra_context=extra_context, ) if response.status_code in (301, 302) and response._headers.get( 'location', ('', '') )[1] in ( reverse('system_reboot'), reverse('system_shutdown'), reverse('account_logout'), ): response._headers['location'] = ('Location', '/legacy/') elif request.user.is_authenticated: return HttpResponseRedirect('/legacy/') return response
def login_wrapper( request, template_name='registration/login.html', redirect_field_name=REDIRECT_FIELD_NAME, authentication_form=ExtendedAuthForm, current_app=None, extra_context=None, ): """ Wrapper to login to do not allow login and redirect to shutdown, reboot or logout pages, instead redirect to / """ auth_token = request.GET.get('auth_token') if auth_token: user = authenticate(auth_token=auth_token) if user: auth_login(request, user, 'freenasUI.middleware.auth.AuthTokenBackend') # Overload hook_app_index to shortcut passive node # Doing that in another layer will use too many reasources view = appPool.hook_app_index('account_login', request) view = [_f for _f in view if _f] if view: return view[0] if extra_context is None: extra_context = {} extra_context.update({ 'sw_login_version': get_sw_login_version(), 'sw_name': get_sw_name(), }) if not models.bsdUsers.has_root_password(): authentication_form = forms.NewPasswordForm extra_context.update({ 'reset_password': True, }) response = login( request, template_name='registration/login.html', redirect_field_name=redirect_field_name, authentication_form=authentication_form, current_app=current_app, extra_context=extra_context, ) if response.status_code in (301, 302) and response._headers.get( 'location', ('', ''))[1] in ( reverse('system_reboot'), reverse('system_shutdown'), reverse('account_logout'), ): response._headers['location'] = ('Location', '/') elif request.user.is_authenticated: return HttpResponseRedirect('/') return response
def login_wrapper( request, template_name='registration/login.html', redirect_field_name=REDIRECT_FIELD_NAME, authentication_form=ExtendedAuthForm, current_app=None, extra_context=None, ): """ Wrapper to login to do not allow login and redirect to shutdown, reboot or logout pages, instead redirect to / """ # Overload hook_app_index to shortcut passive node # Doing that in another layer will use too many reasources view = appPool.hook_app_index('account_login', request) view = filter(None, view) if view: return view[0] if extra_context is None: extra_context = {} extra_context.update({ 'sw_login_version': get_sw_login_version(), 'sw_name': get_sw_name(), }) if not models.bsdUsers.has_root_password(): authentication_form = forms.NewPasswordForm extra_context.update({ 'reset_password': True, }) response = login( request, template_name='registration/login.html', redirect_field_name=redirect_field_name, authentication_form=authentication_form, current_app=current_app, extra_context=extra_context, ) if response.status_code in (301, 302) and response._headers.get( 'location', ('', '') )[1] in ( reverse('system_reboot'), reverse('system_shutdown'), reverse('account_logout'), ): response._headers['location'] = ('Location', '/') elif request.user.is_authenticated(): return HttpResponseRedirect('/') return response
def login_wrapper( request, template_name='registration/login.html', redirect_field_name=REDIRECT_FIELD_NAME, authentication_form=AuthenticationForm, current_app=None, extra_context=None, ): """ Wrapper to login to do not allow login and redirect to shutdown, reboot or logout pages, instead redirect to / """ if extra_context is None: extra_context = {} extra_context.update({ 'sw_login_version': get_sw_login_version(), 'sw_name': get_sw_name(), }) qs = models.bsdUsers.objects.filter(bsdusr_uid=0).exclude( bsdusr_unixhash='*' ) if not qs.exists(): authentication_form = forms.NewPasswordForm extra_context.update({ 'reset_password': True, }) response = login( request, template_name='registration/login.html', redirect_field_name=redirect_field_name, authentication_form=authentication_form, current_app=current_app, extra_context=extra_context, ) if response.status_code in (301, 302) and response._headers.get( 'location', ('', '') )[1] in ( reverse('system_reboot'), reverse('system_shutdown'), reverse('account_logout'), ): response._headers['location'] = ('Location', '/') elif request.user.is_authenticated(): return HttpResponseRedirect('/') return response
def login_wrapper( request, template_name='registration/login.html', redirect_field_name=REDIRECT_FIELD_NAME, authentication_form=AuthenticationForm, current_app=None, extra_context=None, ): """ Wrapper to login to do not allow login and redirect to shutdown, reboot or logout pages, instead redirect to / """ if extra_context is None: extra_context = {} extra_context.update({ 'sw_login_version': get_sw_login_version(), 'sw_name': get_sw_name(), }) qs = models.bsdUsers.objects.filter(bsdusr_uid=0).exclude( bsdusr_unixhash='*') if not qs.exists(): authentication_form = forms.NewPasswordForm extra_context.update({ 'reset_password': True, }) response = login( request, template_name='registration/login.html', redirect_field_name=redirect_field_name, authentication_form=authentication_form, current_app=current_app, extra_context=extra_context, ) if response.status_code in (301, 302) and response._headers.get( 'location', ('', ''))[1] in ( reverse('system_reboot'), reverse('system_shutdown'), reverse('account_logout'), ): response._headers['location'] = ('Location', '/') elif request.user.is_authenticated(): return HttpResponseRedirect('/') return response
def _system_info(request=None): # OS, hostname, release __, hostname, __ = os.uname()[0:3] platform = sysctl.filter('hw.model')[0].value physmem = '%dMB' % ( sysctl.filter('hw.physmem')[0].value / 1048576, ) # All this for a timezone, because time.asctime() doesn't add it in. date = time.strftime('%a %b %d %H:%M:%S %Z %Y') + '\n' uptime = subprocess.check_output( "env -u TZ uptime | awk -F', load averages:' '{ print $1 }'", shell=True ) loadavg = "%.2f, %.2f, %.2f" % os.getloadavg() try: freenas_build = '%s %s' % (get_sw_name(), get_sw_login_version()) except: freenas_build = "Unrecognized build" try: conf = Configuration.Configuration() manifest = conf.SystemManifest() builddate = datetime.utcfromtimestamp(int(manifest.Sequence())) except: builddate = None return { 'hostname': hostname, 'platform': platform, 'physmem': physmem, 'date': date, 'uptime': uptime, 'loadavg': loadavg, 'freenas_build': freenas_build, 'builddate': builddate, }
def login_wrapper( request, template_name="registration/login.html", redirect_field_name=REDIRECT_FIELD_NAME, authentication_form=AuthenticationForm, current_app=None, extra_context=None, ): """ Wrapper to login to do not allow login and redirect to shutdown, reboot or logout pages, instead redirect to / """ if extra_context is None: extra_context = {} extra_context.update({"sw_login_version": get_sw_login_version(), "sw_name": get_sw_name()}) if not models.bsdUsers.has_root_password(): authentication_form = forms.NewPasswordForm extra_context.update({"reset_password": True}) response = login( request, template_name="registration/login.html", redirect_field_name=redirect_field_name, authentication_form=authentication_form, current_app=current_app, extra_context=extra_context, ) if response.status_code in (301, 302) and response._headers.get("location", ("", ""))[1] in ( reverse("system_reboot"), reverse("system_shutdown"), reverse("account_logout"), ): response._headers["location"] = ("Location", "/") elif request.user.is_authenticated(): return HttpResponseRedirect("/") return response
def ticket(request): if request.method == 'POST': step = 2 if request.FILES.getlist('attachment') else 1 files = [] if request.POST.get('debug') == 'on': with open(TICKET_PROGRESS, 'w') as f: f.write(json.dumps({'indeterminate': True, 'step': step})) step += 1 mntpt, direc, dump = debug_get_settings() debug_run(direc) files.append(File(open(dump, 'rb'), name=os.path.basename(dump))) with open(TICKET_PROGRESS, 'w') as f: f.write(json.dumps({'indeterminate': True, 'step': step})) step += 1 success, msg, tid = utils.new_ticket({ 'user': request.POST.get('username'), 'password': request.POST.get('password'), 'type': request.POST.get('type'), 'title': request.POST.get('subject'), 'body': request.POST.get('desc'), 'version': get_sw_login_version(), }) with open(TICKET_PROGRESS, 'w') as f: f.write(json.dumps({'indeterminate': True, 'step': step})) step += 1 if not success: response = render(request, 'support/ticket.html', { 'error_message': msg, 'initial': json.dumps(request.POST.dict()), }) else: files.extend(request.FILES.getlist('attachment')) for f in files: success, attachmsg = utils.ticket_attach( { 'user': request.POST.get('username'), 'password': request.POST.get('password'), 'ticketnum': tid, }, f) response = render(request, 'support/ticket_response.html', { 'success': success, 'message': msg, }) if not request.is_ajax(): response.content = ( '<html><body><textarea>%s</textarea></boby></html>' % (response.content, )) return response return render(request, 'support/ticket.html')