Giter Site home page Giter Site logo

garysharp / disco Goto Github PK

View Code? Open in Web Editor NEW
25.0 25.0 9.0 51.29 MB

Disco ICT Management

License: GNU Affero General Public License v3.0

C# 48.37% JavaScript 38.83% CSS 2.89% XSLT 0.01% HTML 6.76% Batchfile 0.01% Smalltalk 0.01% VBScript 0.04% Less 3.10% ASP.NET 0.01%

disco's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

disco's Issues

Associate Active Directory security groups with Device/User collections

Provide the ability to associate an Active Directory security group with:

  • Device Profiles (Computer Accounts)
  • Device Profiles (Device Assigned User Accounts)
  • User Flags (User Accounts)
  • User Flags (Associated Computer Accounts)

As devices/users are associated with these groups, Active Directory should be updated accordingly (where possible). A nightly sync should also run to ensure these groups match information in Disco.

This will allow for integration with other systems which are compatible with Active Directory. For example, a security group for 'Banned Internet Users' (enforced by a proxy/firewall) could be associated with a Disco User Flag.

Include 'Primary Group' when detecting User's AD Group Membership

Currently the detection method only uses the memberOf attribute - which excludes the Primary Group (Domain Users by default).
This has caused issues for users who have changed their Primary Group to Domain Admins - which has caused confusion as to why Disco refuses them access.

Support Multi-domain Active Directory Forests

Improve the Active Directory integration to:

  • Add Multi-domain Forest Support
  • Add Search-Scope Limiting (specify which OUs should be searched)
  • Add UI to configure this during Initial Configuration

DataStore Migration where drive letter doesn't exist

If migrating Disco onto a new server, where the drive letter that previously stored the Data Store doesn't exist, the Initial Configuration crashes with:

Description:
An unhandled exception has occurred.
Exception type: ArgumentNullException 
    Exception message: Value cannot be null. Parameter name: path1
   at System.IO.Path.Combine(String path1, String path2)
   at Disco.Web.Models.InitialConfig.FileStoreModel.ExpandDirectoryModel()
   at Disco.Web.Controllers.InitialConfigController.FileStore()

ExpandDirectoryModel should not fail in this scenario. If the drive letter is not found, the rest of the path processing should be aborted.

barcode city

We use barcodes for student code, serial, etc. they are printed on our job sheet which gets printed for each device once a job is created. It would be good if we could have shorcut codes or something so that you could place barcodes on job sheets that when scanned automatically marks a device as returned and closes the job. you could have different barcodes for different reasons. one might just be to mark a job as ready to collect. this could be done by codes a barcode could look like this:
^011234
Where:
^ could tell disco that its a code
01 could be mark job as ready to collect
1234 is job number

Flag users for various reasons

Marc Veenstra:
https://discoict.com.au/forum/feature-requests/2013/11/flag-users-who-cannot-receive-a-device.aspx

We are starting to accumulate a list of jobs where a student has an outstanding charge. Some of these go back a long time. It would be nice to flag the student and then close the long running job along with unassigning the device from the user. My idea is that the charge remains on CASES but it written off as a bad debt in Disco. Since the student is flagged if they return and want a device Disco will say NO! This would prevent a Trainee or 'couldn't care' tech from assigning a device to them until the flag is removed (ie. they pay their debt).

Adding accessories and peripherals for each device

We would like to add accessories or peripherals like detachable keyboards, bags, spare battery,..for each device so we know what sort of devices a user has got and can associate them with their devices.

The Ability to import non scanned PDFs

Currently pdf's are only detected correctly when printed then scanned in. This was designed this way to allow for signature collections on forms.

Schools are trying to attempt to move away from printing so much paper.

Having the added functionality of being able to imp

ort pdfs that are generated by Disco then sent and filled in electronically and then imported again without printing the document.

Currently when you import a document this is how it is detected
current

The desired behaviour would be like scanned pdf detection being automatically assigned to correct location i.e. to a user or device

An example of a document not scanned just directly imported after generating
document

Add Binding Redirects for Strongly-Named Assemblies

Binding Redirects need to be added to web.config for third-party Strongly-Named Assemblies. Plugins may fail to compile against future releases of Disco due to strongly-named assemblies requiring exact version matches.

  • Json.NET

Decommission Reasons

Firstly, new Job Sub-Types under the "Hardware – Non-Warranty" type to provide more information than the existing 'Replacement Device' type. These new sub-types would be:

  • Device Stolen
  • Device Lost

Secondly, an extra field for Devices to complement 'DecommissionedDate' – perhaps 'DecommissionedReason.'
So that metrics could be collected, this field would map to a well-defined list (as is the case with job types/sub-types). When decommissioning a device, a drop-down-list would ask for the reason. That list would be:

  • Damaged
  • Donated
  • End of Life (default)
  • Lost
  • Sold
  • Stolen

Current thinking is that 'End of Life' would be the default – and would be entered for all previously-decommissioned devices during database migration when the field is added.

  • Add Sub-Types
  • Add Decommissioned Reason & UI

See:
http://discoict.com.au/forum/feature-requests/2012/12/decommission-reasons.aspx

Bulk import additional device details

Would love the ability to bulk import additional device details such as AC Adapter serial. I found that entering this information very time consuming due to the process of getting to the fields within the gui.

Provide better Disco Client error messages during System Audit

When errors occur during a System Audit (eg. No serial number), the following error occurs:

The type initializer for 'Disco.Client.Interop.SystemAudit' threw an exception.

The underlying exception does contain more useful information but is hidden by the type initializer error - this should be corrected.

Allow unauthenticated enrolment to be automated

SEE: http://discoict.com.au/forum/feature-requests/2013/9/automatically-set-trust-enrol-setting.aspx

When a "Software - Reimage" job is created, automatically allow for an unauthenticated enrolment.

For security reasons, this would be a profile option ( disabled by default ) so that the Disco Admin would need to explicitly indicate this behaviour is required.

Behaviour:

  1. Device requests an authenticated enrolment (which fails)
  2. Device requests an unauthenticated enrolment
  3. If the device is already trusted for an unauthenticated enrolment, the enrolment is granted. After this enrolment, the trust is reset (as in the past).
  4. If the device is in a profile which is configured for regular unauthenticated enrolments and is associated with an open Software - Reimage job, the enrolment is granted.
  • Create Device Profile Configuration Option
  • Add logic to support Step 4.

Add component to Device Model: Firefox

From Conor:

it seems that when using firefox to try to add a component to a device model (Config, Device Models, select model, Add Component) it doesnt seem to be running the (javascript or ajax) correctly. this means that while i can add a component it doesnt save, doesnt recognise the price and convert to $ and cant select a job type.

I have test the same process using IE10 and it works fine, but using Firefox 22 or 23 doesnt work. other areas within disco that use the 'hot save' are working fine so dont think its something specific firefox, just that particular section. also note that other areas on the Device Model page work fine with regards to changes and saving, jus the component section isnt working.

See:
http://www.discoict.com.au/forum/support/disco-devices/2013/8/cannot-add-component-to-device-model-when-using-firefox.aspx

Permissions & Authorization for Disco Users

Any Active Directory User or Group can be assigned permissions to access components of Disco.
Permissions are granular to meet the needs of many different ‘Roles’ Disco Users might have.

Bootstrapper Enhancements

Just a thought about the bootstrapper, there have been countless times where the bootstrapper has run and someones forgot to assign a user, etc.

it could be good to have almost an 'advanced bootstrapper' where you could for example hold down the shift key while the bootstrapper starts up and have options to assign a user, trust enrollment, add asset number, etc. obviously there could be security concerns so maybe an option could be that when using advanced options an admin has to type in their password.

Add Base WebViewPage for Plugins

A base WebViewPage (In the Disco.Services.Plugins namespace) would allow easier access to Disco-based functionality in plugin views. For example:

  • special Disco URL Routes
  • Urls to Plugin Resources
  • Urls to Plugin Actions

User Helpdesk

Investigation is required for a User Helpdesk. This might include features like:

  • Allowing users to open jobs
  • Provide searchable wiki/library.

Documentation is required for:

  • Requirements (specifically detailing the required features).
  • Workflows (flow charts of the various required features).
  • User Interface design.
  • Integration and impact on the existing feature set.
  • Security implications.

See:
http://discoict.com.au/forum/feature-requests/2012/11/staff-and-student-helpdesk.aspx

Select specific columns for device export

It would be handy to have the ability to selectively export device information, and also be able to select the columns for WLAN/LAN MAC address and AC Adapter serial.

Searching users causes "Index was out of range" exception

AD Interop includes Contacts when searching for Users. These Contact objects don't contain the same properties as User objects and thus throw this exception.

usersearchexception

When searching for Users, AD Interop should only include objects which contain the objectClass=user.

Job convert HWar to HNWar doesn't filter components

When creating a new Hardware Non-Warranty job:
Components are included if they are Generic Components or are associated with the devices' model. If the component contains a Job Type Filter the job type must be present in the job; if no filter is present the component is always added.

When converting a Hardware Warranty job:
All Generic Components are added. Device model components with a Job Type Filter are added - and only if the filter matches a job type. Devices model components without a Job Type Filter are never added.

When a Hardware - Warranty is converted to Hardware - Non Warranty components should be added automatically in the same way as when creating a new Hardware - Non Warranty job.

Specify Disco Administrators during Initial Configuration

In some environments, Disco isn't installed/managed by Domain Admins. During the Initial Configuration Disco should ask which users should be considered 'Admins'.

In the past, this was achieved with an AD security group (Disco Admins) - using a security group with this name is still supported in the codebase, but it is recommended to use an Authorization Group instead.

This should also be configurable after the Initial Configuration (From: Configuration > Authorization Roles).

Migrate Web-Camera Image Upload to WebRTC

Current releases of Chrome & Firefox support WebRTC. Use WebRTC to upload web-cam images rather than using plugins (currently Silverlight).

Investigate a flash-based shim for browsers which don't yet support WebRTC (read: Internet Explorer)

Job Links: Upload File and Capture Image

In a Job page, once you click the link to open the prompt to Upload an attachment or Capture a webcam photo - it will only open up that first link for both buttons (eg, the link doesn't change to the correct destination if you close one prompt and go to the other one)

"Stale Jobs" List

From @08263504: https://www.discoict.com.au/forum/feature-requests/2014/2/stale-jobs.aspx

We currently have a display of long running jobs. Can we also get a display of 'stale' jobs, ie jobs that haven't been touched for a specified period of time. I can have a job that runs for months because of factors beyond our control, but it is regularly updated with new information. This is less of a concern than a job opened 2 weeks ago but not acted on since. So a slight difference between 'long running' and 'stale'.

Error in Initial Default Workstation Profile Computer Name

There is a typo in the default string in the Computer Name Template Expression field. It shows with 2x single quote marks either side of the hyphen, rather than 1x single quote.

DeviceProfile.ShortName + ''-'' + SerialNumber

It should read:
DeviceProfile.ShortName + '-' + SerialNumber

With the 2x single quote marks, and Enforce Naming Convention ticked, you will get errors during enrolment of devices as follows:

23/01/2014 12:25 50 DeviceEnrolment Device Enrolment 400 Client Error 2 IP: 10.141.181.185; Device ID: 34804191; Version: Disco-Client/1.2.1128 Error: The remote server returned an error: (500) Internal Server Error. 10.141.181.185 34804191 Disco-Client/1.2.1128 The remote server returned an error: (500) Internal Server Error. {'ClassName':'System.Net.WebException','Message':'The remote server returned an error: (500) Internal Server Error.','Data':null,'InnerException':null,'HelpURL':null,'StackTraceString':' at System.Net.HttpWebRequest.GetResponse()\r\n at Disco.Client.Extensions.ClientServicesExtensions.Post[ResponseType](ServiceBase1 Service, Boolean Authenticated)\r\n at Disco.Client.Program.Enrol()','RemoteStackTraceString':null,'RemoteStackIndex':0,'ExceptionMethod':'8\nGetResponse\nSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\nSystem.Net.HttpWebRequest\nSystem.Net.WebResponse GetResponse()','HResult':-2146233079,'Source':'System','WatsonBuckets':null} 23/01/2014 12:25 0 System Core System Log 11 Exception with Inner Exception 2 "Global Application Exception Caught; InvalidOperationException: An error occurred rendering the computer name: [InvalidOperationException] Expression evaluation resulted in an error; at Disco.BI.DeviceBI.DeviceEnrol.Enrol(DiscoDataContext Database, String Username, Enrol Request) at Disco.BI.Extensions.ClientServicesExtensions.BuildResponse(Enrol request) at Disco.Web.Areas.Services.Controllers.ClientController.Authenticated(String feature) at lambda_method(Closure , ControllerBase , Object[] ) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary2 parameters) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__DisplayClass2a.<BeginInvokeAction>b__20() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) at System.Web.Mvc.Controller.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) at System.Web.Mvc.MvcHandler.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously); SyntaxErrorException: Syntax Error on line 1, column 29: unexpected token: ['_',<33>,line=1,col=29] in expression 'DeviceProfile.ShortName + ''_'' + '9999''; at Disco.BI.Expressions.EvaluateExpressionPart.Disco.BI.Expressions.IExpressionPart.Evaluate(Object ExpressionContext, IDictionary Variables) at Disco.BI.Expressions.Expression.EvaluateFirst[T](Object ExpressionContext, IDictionary Variables)" Global Application Exception Caught InvalidOperationException An error occurred rendering the computer name: [InvalidOperationException] Expression evaluation resulted in an error " at Disco.BI.DeviceBI.DeviceEnrol.Enrol(DiscoDataContext Database, String Username, Enrol Request) at Disco.BI.Extensions.ClientServicesExtensions.BuildResponse(Enrol request) at Disco.Web.Areas.Services.Controllers.ClientController.Authenticated(String feature) at lambda_method(Closure , ControllerBase , Object[] ) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<>c__DisplayClass39.b__33()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.b__49()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.b__49()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.b__36(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__DisplayClass2a.b__20()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.b__22(IAsyncResult asyncResult)
at System.Web.Mvc.Controller.<>c__DisplayClass1d.b__18(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.b__3(IAsyncResult ar)
at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.b__3(IAsyncResult ar)
at System.Web.Mvc.MvcHandler.<>c__DisplayClass8.b__3(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.b__3(IAsyncResult ar)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)" SyntaxErrorException "Syntax Error on line 1, column 29: unexpected token: ['',<33>,line=1,col=29] in expression
'DeviceProfile.ShortName + ''
'' + '9999''" " at Disco.BI.Expressions.EvaluateExpressionPart.Disco.BI.Expressions.IExpressionPart.Evaluate(Object ExpressionContext, IDictionary Variables)
at Disco.BI.Expressions.Expression.EvaluateFirst[T](Object ExpressionContext, IDictionary Variables)"
23/01/2014 12:25 50 DeviceEnrolment Device Enrolment 20 Session Finished 0 Finished Session# {c0a41061-dc03-453c-ab12-c4221f20adf6} {c0a41061-dc03-453c-ab12-c4221f20adf6}
23/01/2014 12:25 50 DeviceEnrolment Device Enrolment 24 Session Error with Internal 2 "An Error Occurred: [InvalidOperationException] An error occurred rendering the computer name: [InvalidOperationException] Expression evaluation resulted in an error; Internal Error: [SyntaxErrorException] Syntax Error on line 1, column 29: unexpected token: ['',<33>,line=1,col=29] in expression
'DeviceProfile.ShortName + ''
'' + '9999''" {c0a41061-dc03-453c-ab12-c4221f20adf6} InvalidOperationException An error occurred rendering the computer name: [InvalidOperationException] Expression evaluation resulted in an error SyntaxErrorException "Syntax Error on line 1, column 29: unexpected token: ['',<33>,line=1,col=29] in expression
'DeviceProfile.ShortName + ''
'' + '9999''" " at Disco.BI.Extensions.DeviceExtensions.ComputerNameRender(Device device, DiscoDataContext Database)
at Disco.BI.DeviceBI.DeviceEnrol.Enrol(DiscoDataContext Database, String Username, Enrol Request)" " at Disco.BI.Expressions.EvaluateExpressionPart.Disco.BI.Expressions.IExpressionPart.Evaluate(Object ExpressionContext, IDictionary Variables)
at Disco.BI.Expressions.Expression.EvaluateFirst[T](Object ExpressionContext, IDictionary Variables)"
23/01/2014 12:25 50 DeviceEnrolment Device Enrolment 12 Session Device 0 {c0a41061-dc03-453c-ab12-c4221f20adf6}, 34804191, 23 {c0a41061-dc03-453c-ab12-c4221f20adf6} 34804191 23
23/01/2014 12:25 50 DeviceEnrolment Device Enrolment 51 Task - Updating Device 0 Updating Disco Device 34804191 {c0a41061-dc03-453c-ab12-c4221f20adf6} 34804191
23/01/2014 12:25 50 DeviceEnrolment Device Enrolment 13 Session Device Info 0 {c0a41061-dc03-453c-ab12-c4221f20adf6}, 34804191, 63D8CCA6-3E20-E311-A833-201A064AED41, C-201A064AED41, 20:1A:06:4A:ED:41, B4:B6:76:D4:06:9D, Acer, TravelMate B113, Mobile {c0a41061-dc03-453c-ab12-c4221f20adf6} 34804191 63D8CCA6-3E20-E311-A833-201A064AED41 C-201A064AED41 20:1A:06:4A:ED:41 B4:B6:76:D4:06:9D Acer TravelMate B113 Mobile
23/01/2014 12:25 50 DeviceEnrolment Device Enrolment 10 Session Starting 0 Starting 'Normal' Enrolment for 34804191 (Session# {c0a41061-dc03-453c-ab12-c4221f20adf6}) {c0a41061-dc03-453c-ab12-c4221f20adf6} 34804191 Normal

I've observed this on 3 of my sites so far, but has not caused an issue since I've pre-imported machines previously using other profiles.

Incorrect ActiveDevices are reported to the Community

Only devices which have enrolled, not decommissioned, domain joined and on-site in the last 60 days are reported. This should reflect all devices which are not decommissioned. This allows for organisations which don't domain-join their devices.

m.Stat_ActiveDeviceModelCounts = db.DeviceModels.Select(dm => new Disco.Models.BI.Interop.Community.UpdateRequestV1.Stat { Key = dm.Manufacturer + ";" + dm.Model, Count = dm.Devices.Count(d => d.DecommissionedDate == null && (d.LastNetworkLogonDate == null || d.LastNetworkLogonDate > activeThreshold)) }).ToList();

Store Device LAN and WAN MAC Addresses

During enrolment the device submits 1 LAN and 1 WAN MAC address. This information is logged, but should also be stored in the database. Either in new columns of the Devices table, or as records in the DeviceDetails table.
The database migration could also enumerate historical logs to retrieve this information where previously collected.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.