void ConnecttoQMS() { Client = new QMSClient("BasicHttpBinding_IQMS", QMSURL); string key = Client.GetTimeLimitedServiceKey(); ServiceKeyClientMessageInspector.ServiceKey = key; }
private QMSClient CreateClient() { const int maxSize = 26214400; TimeSpan receiveTimeout = new TimeSpan(0, 10, 0); TimeSpan sendTimeout = new TimeSpan(0, 10, 0); TimeSpan innerChannelOperationTimeout = new TimeSpan(0, 10, 0); try { EndpointAddress endpointAddress = new EndpointAddress(_address); BasicHttpBinding httpBinding = new BasicHttpBinding(); httpBinding.MaxBufferSize = maxSize; httpBinding.MaxBufferPoolSize = maxSize * 2; httpBinding.MaxReceivedMessageSize = maxSize; httpBinding.ReceiveTimeout = receiveTimeout; httpBinding.OpenTimeout = receiveTimeout; httpBinding.SendTimeout = sendTimeout; httpBinding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly; httpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm; QMSClient client = new QMSClient(httpBinding, endpointAddress); QMSClientServiceKeySupport.Initiate(client); client.InnerChannel.OperationTimeout = innerChannelOperationTimeout; return(client); } catch (System.Exception ex) { Log.To.Main.AddException("Failed creating Qv Client", ex); } return(null); }
public static void Initiate(QMSClient qmsClient) { var serviceKeyEndpointBehavior = new ServiceKeyEndpointBehavior(); qmsClient.Endpoint.Behaviors.Add(serviceKeyEndpointBehavior); serviceKeyEndpointBehavior._clientMessageInspector.ServiceKey = qmsClient.GetTimeLimitedServiceKey(); }
public Connection(string url, string domain, string username, string password) { this.client = new QMSClient("BasicHttpBinding_IQMS", url); WindowsClientCredential creds = client.ClientCredentials.Windows; creds.ClientCredential.Domain = domain; creds.ClientCredential.UserName = username; creds.ClientCredential.Password = password; ServiceKeyClientMessageInspector.ServiceKey = client.GetTimeLimitedServiceKey(); }
public QVDistributionServer(QMSClient client) { this.client = client; qds = client.GetServices(ServiceTypes.QlikViewDistributionService).FirstOrDefault(); documentNodes = client.GetSourceDocuments(qds.ID).ToList(); tasks = client.GetTasks(qds.ID).ToList(); TaskStatusFilter taskStatusFilter = new TaskStatusFilter(); List <QMSAPI.TaskStatus> clientTaskStatuses = client.GetTaskStatuses(taskStatusFilter, TaskStatusScope.All).ToList(); foreach (QMSAPI.TaskStatus taskStatus in clientTaskStatuses) { Console.WriteLine(taskStatus.TaskID); } }
private IQMS CreateQMSAPIClient(Uri uri, Form1 Principal) { QMSClient client = null; try { client = new QMSClient("BasicHttpBinding_IQMS", uri.AbsoluteUri); string key = client.GetTimeLimitedServiceKey(); ServiceKeyClientMessageInspector.ServiceKey = key; } catch (System.Exception Ex) { Principal.setEstadoRecarga(Ex.Message); return(null); } return(client); }
private static IQMS CreateQMSAPIClient(Uri uri) { QMSClient client = null; try { client = new QMSClient("BasicHttpBinding_IQMS", uri.AbsoluteUri); ServiceKeyEndpointBehavior serviceKeyEndpointBehavior = new ServiceKeyEndpointBehavior(); client.Endpoint.Behaviors.Add(serviceKeyEndpointBehavior); ServiceKeyClientMessageInspector.ServiceKey = client.GetTimeLimitedServiceKey(); } catch (Exception e) { commSupport.PrintMessage("Exception when creating QMs client, run help command for information about usage. Exeception: " + e.Message, true); } return(client); }
/// <summary> /// List CALs /// </summary> public static void List() { try { // Initiate backend client var backendClient = new QMSClient(); // Get a time limited service key ServiceKeyClientMessageInspector.ServiceKey = backendClient.GetTimeLimitedServiceKey(); // Get available QlikView Servers var serviceList = backendClient.GetServices(ServiceTypes.QlikViewServer); Console.WriteLine("UserName;LastUsed;QuarantinedUntil;Document;Server"); // Loop through available servers foreach (var server in serviceList) { // Get Named CALs var config = backendClient.GetCALConfiguration(server.ID, CALConfigurationScope.NamedCALs); foreach (var c in config.NamedCALs.AssignedCALs) { Console.WriteLine(String.Format("{0};{1};{2};{3};{4}", c.UserName, c.LastUsed.Year > 0001 ? c.LastUsed.ToString() : "", c.QuarantinedUntil.Year > 0001 ? c.QuarantinedUntil.ToString() : "", "", server.Name)); } // Get Document CAL's var userDocuments = backendClient.GetUserDocuments(server.ID); foreach (var docNode in userDocuments) { var metaData = backendClient.GetDocumentMetaData(docNode, DocumentMetaDataScope.Licensing); foreach (var c in metaData.Licensing.AssignedCALs) { Console.WriteLine(String.Format("{0};{1};{2};{3};{4}", c.UserName, c.LastUsed.Year > 0001 ? c.LastUsed.ToString() : "", c.QuarantinedUntil.Year > 0001 ? c.QuarantinedUntil.ToString() : "", docNode.Name, server.Name)); } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
/// <summary> /// List DMS users /// </summary> /// <param name="documents"></param> public static void List(ICollection <string> documents) { try { // Initiate backend client var backendClient = new QMSClient(); // Get a time limited service key ServiceKeyClientMessageInspector.ServiceKey = backendClient.GetTimeLimitedServiceKey(); // Get available QlikView Servers var serviceList = backendClient.GetServices(ServiceTypes.QlikViewServer); Console.WriteLine("UserName;Document;Server"); // Loop through available servers foreach (var server in serviceList) { // Get documents on each server var userDocuments = backendClient.GetUserDocuments(server.ID); // Loop through available documents foreach (var docNode in userDocuments) { if (documents.Count != 0 && !documents.Contains(docNode.Name.ToLower())) { continue; } // Get authorization meta data var metaData = backendClient.GetDocumentMetaData(docNode, DocumentMetaDataScope.Authorization); foreach (var user in metaData.Authorization.Access) { Console.WriteLine(String.Format("{0};{1};{2}", user.UserName, docNode.Name, server.Name)); } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
/// <summary> /// List information about CALs /// </summary> public static void CalInfo() { try { // Initiate backend client var backendClient = new QMSClient(); // Get a time limited service key ServiceKeyClientMessageInspector.ServiceKey = backendClient.GetTimeLimitedServiceKey(); // Get available QlikView Servers var serviceList = backendClient.GetServices(ServiceTypes.QlikViewServer); Console.WriteLine("Server;NamedAssigned;NamedInLicense;NamedLeased;NamedAllowDynamic;NamedAllowLease;DocAssigned;DocInLicense;SessionAvailable;SessionInLicense;UsageAvailable;UsageInLicense"); // Loop through available servers foreach (var server in serviceList) { // Get Named CALs var config = backendClient.GetCALConfiguration(server.ID, CALConfigurationScope.All); Console.Write(server.Name + ";"); Console.Write(config.NamedCALs.AssignedCALs.Count + ";"); Console.Write(config.NamedCALs.InLicense + ";"); Console.Write(config.NamedCALs.LeasedCALs.Count + ";"); Console.Write(config.NamedCALs.AllowDynamicAssignment + ";"); Console.Write(config.NamedCALs.AllowLicenseLease + ";"); Console.Write(config.DocumentCALs.Assigned + ";"); Console.Write(config.DocumentCALs.InLicense + ";"); Console.Write(config.SessionCALs.Available + ";"); Console.Write(config.SessionCALs.InLicense + ";"); Console.Write(config.UsageCALs.Available + ";"); Console.WriteLine(config.UsageCALs.InLicense); } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
static void Main() { //Application.EnableVisualStyles(); // Application.SetCompatibleTextRenderingDefault(false); // Application.Run(new Form1()); //Connection connection = new Connection("http://ushdc0154:4799/QMS/Service", "x","x","x"); //Connection connection = new Connection("http://usndc0153:4799/QMS/Service", "x", "x", "x"); Connection connection = new Connection("http://10.6.3.101:4799/QMS/Service", "x", "x", "x"); QMSClient client = connection.getClient(); QVDistributionServer server = new QVDistributionServer(client); //List<DocumentNode> sourceDocuments = qds.documentNodes; //foreach (DocumentNode document in sourceDocuments) { // Console.WriteLine( $"RelativePath: {document.RelativePath}; Name: {document.Name}; TaskCount: {document.TaskCount};" ); //} List <TaskInfo> tasks = server.tasks; foreach (TaskInfo task in tasks) { Console.WriteLine($"ID: {task.ID}; Name: {task.Name};"); } //Guid taskId = new Guid("201c22ad-ea23-45dc-bbf8-53b2a8d75405"); //QMSAPI.TaskStatus taskStatus = client.GetTaskStatus(taskId, TaskStatusScope.Extended); //Console.WriteLine(taskStatus.Extended.TaskSummary); //Console.WriteLine(taskStatus.Extended.FinishedTime); //QVServer server = new QVServer(client); //List<AssignedNamedCAL> currentCALs = server.calls.NamedCALs.AssignedCALs.ToList(); //foreach (AssignedNamedCAL call in currentCALs) { // Console.WriteLine($"UserName: {call.UserName}; LastUsed: {call.LastUsed};"); //} //QVManagementService qms = new QVManagementService(client); }
/// <summary> /// Remove CALs /// </summary> public static void Remove() { try { // Initiate backend client var backendClient = new QMSClient(); // Get a time limited service key ServiceKeyClientMessageInspector.ServiceKey = backendClient.GetTimeLimitedServiceKey(); // Get available QlikView Servers var serviceList = backendClient.GetServices(ServiceTypes.QlikViewServer); // Number of inactive days const int days = -30; // Loop through available servers foreach (var server in serviceList) { /********************** * NAMED CALS **********************/ // Get CAL configuration var config = backendClient.GetCALConfiguration(server.ID, CALConfigurationScope.NamedCALs); // Get number of users BEFORE modifications var numberOfUsers = config.NamedCALs.AssignedCALs.Count; // Iterate through all CAL's and remove the inactive ones foreach (var c in config.NamedCALs.AssignedCALs.ToList().Where(u => u.LastUsed.Year > 0001 && u.LastUsed.CompareTo(DateTime.UtcNow.AddDays(days)) == -1)) { config.NamedCALs.AssignedCALs.Remove(c); } // Save changes backendClient.SaveCALConfiguration(config); // Get number of users BEFORE modifications var removedUsers = numberOfUsers - config.NamedCALs.AssignedCALs.Count; if (removedUsers <= 0) { Console.WriteLine(String.Format("No CALs to remove on {0}", server.Name)); } else { Console.WriteLine(String.Format("Removed {0} CALs on {1}", removedUsers, server.Name)); } /********************** * DOCUMENT CALS **********************/ // Get Document CAL's var userDocuments = backendClient.GetUserDocuments(server.ID); foreach (var docNode in userDocuments) { // Get licensing meta data var metaData = backendClient.GetDocumentMetaData(docNode, DocumentMetaDataScope.Licensing); // Get number of users BEFORE modifications numberOfUsers = metaData.Licensing.AssignedCALs.Count; // Iterate through all CAL's and remove the inactive ones foreach (var c in metaData.Licensing.AssignedCALs.ToList().Where(u => u.LastUsed.Year > 0001 && u.LastUsed.CompareTo(DateTime.UtcNow.AddDays(days)) == -1)) { metaData.Licensing.AssignedCALs.Remove(c); } // Save changes backendClient.SaveDocumentMetaData(metaData); // Get number of users AFTER modifications removedUsers = numberOfUsers - metaData.Licensing.AssignedCALs.Count; if (removedUsers <= 0) { Console.WriteLine(String.Format("No Document CALs to remove from '{0}' on {1}", docNode.Name, server.Name)); } else { Console.WriteLine(String.Format("Removed {0} Document CALs from '{1}' on {2}", removedUsers, docNode.Name, server.Name)); } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
/// <summary> /// ADD CALs /// </summary> /// <param name="documents"></param> /// <param name="users"></param> public static void Add(ICollection<string> documents, ICollection<string> users) { try { // Initiate backend client var backendClient = new QMSClient(); // Get a time limited service key ServiceKeyClientMessageInspector.ServiceKey = backendClient.GetTimeLimitedServiceKey(); // Get available QlikView Servers var serviceList = backendClient.GetServices(ServiceTypes.QlikViewServer); if (documents.Count == 0) // NAMED CALS { // Loop through available servers foreach (var server in serviceList) { // Get Named CALs var config = backendClient.GetCALConfiguration(server.ID, CALConfigurationScope.NamedCALs); // Get number of users BEFORE modifications var numberOfCals = config.NamedCALs.AssignedCALs.Count; // Add CAL's (already existing CAL's seems unaffected, but how to check for them? Is it necessary?) foreach (var user in users.Select(u => new AssignedNamedCAL { UserName = u.ToUpper(), })) { config.NamedCALs.AssignedCALs.Add(user); } // Save changes backendClient.SaveCALConfiguration(config); // Get number of users AFTER modifications var addedCals = config.NamedCALs.AssignedCALs.Count - numberOfCals; if (addedCals <= 0) Console.WriteLine(String.Format("Nothing to add on {0}", server.Name)); else Console.WriteLine(String.Format("Added {0} CALs on {1}", addedCals, server.Name)); var inLicense = config.NamedCALs.InLicense; var assigned = config.NamedCALs.Assigned; // Warn if not enough available CAL's if (addedCals >= inLicense) Console.WriteLine(String.Format("WARNING: Attempted to assign {0} CALs on {1} but the license only allows {2} CALs.", addedCals, server.Name, inLicense)); else if (assigned >= inLicense) Console.WriteLine("WARNING: All available CALs in the license have been assigned."); } } // DOCUMENT CALS else { // Loop through available servers foreach (var server in serviceList) { // Get documents on each server var userDocuments = backendClient.GetUserDocuments(server.ID); // Loop through available documents foreach (var docNode in userDocuments) { // Continue if no matching documents if (!documents.Contains(docNode.Name.ToLower())) continue; var metaData = backendClient.GetDocumentMetaData(docNode, DocumentMetaDataScope.Licensing); // Get allocated CAL's for document var allocatedCals = metaData.Licensing.CALsAllocated; // Allocate more CAL's if necessary if (users.Count > allocatedCals) metaData.Licensing.CALsAllocated = users.Count(); // Add document CAL's foreach (var user in users.Select(u => new AssignedNamedCAL { UserName = u })) { metaData.Licensing.AssignedCALs.Add(user); } // Save changes backendClient.SaveDocumentMetaData(metaData); Console.WriteLine(String.Format("Added {0} Document CALs to '{1}' on {2}", users.Count(), docNode.Name, server.Name)); } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
/// <summary> /// Remove CALs /// </summary> public static void Remove() { try { // Initiate backend client var backendClient = new QMSClient(); // Get a time limited service key ServiceKeyClientMessageInspector.ServiceKey = backendClient.GetTimeLimitedServiceKey(); // Get available QlikView Servers var serviceList = backendClient.GetServices(ServiceTypes.QlikViewServer); // Number of inactive days const int days = -30; // Loop through available servers foreach (var server in serviceList) { /********************** * NAMED CALS **********************/ // Get CAL configuration var config = backendClient.GetCALConfiguration(server.ID, CALConfigurationScope.NamedCALs); // Get number of users BEFORE modifications var numberOfUsers = config.NamedCALs.AssignedCALs.Count; // Iterate through all CAL's and remove the inactive ones foreach (var c in config.NamedCALs.AssignedCALs.ToList().Where(u => u.LastUsed.Year > 0001 && u.LastUsed.CompareTo(DateTime.UtcNow.AddDays(days)) == -1)) config.NamedCALs.AssignedCALs.Remove(c); // Save changes backendClient.SaveCALConfiguration(config); // Get number of users BEFORE modifications var removedUsers = numberOfUsers - config.NamedCALs.AssignedCALs.Count; if (removedUsers <= 0) Console.WriteLine(String.Format("No CALs to remove on {0}", server.Name)); else Console.WriteLine(String.Format("Removed {0} CALs on {1}", removedUsers, server.Name)); /********************** * DOCUMENT CALS **********************/ // Get Document CAL's var userDocuments = backendClient.GetUserDocuments(server.ID); foreach (var docNode in userDocuments) { // Get licensing meta data var metaData = backendClient.GetDocumentMetaData(docNode, DocumentMetaDataScope.Licensing); // Get number of users BEFORE modifications numberOfUsers = metaData.Licensing.AssignedCALs.Count; // Iterate through all CAL's and remove the inactive ones foreach (var c in metaData.Licensing.AssignedCALs.ToList().Where(u => u.LastUsed.Year > 0001 && u.LastUsed.CompareTo(DateTime.UtcNow.AddDays(days)) == -1)) metaData.Licensing.AssignedCALs.Remove(c); // Save changes backendClient.SaveDocumentMetaData(metaData); // Get number of users AFTER modifications removedUsers = numberOfUsers - metaData.Licensing.AssignedCALs.Count; if (removedUsers <= 0) Console.WriteLine(String.Format("No Document CALs to remove from '{0}' on {1}", docNode.Name, server.Name)); else Console.WriteLine(String.Format("Removed {0} Document CALs from '{1}' on {2}", removedUsers, docNode.Name, server.Name)); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
/// <summary> /// List DMS users /// </summary> /// <param name="documents"></param> public static void List(ICollection<string> documents) { try { // Initiate backend client var backendClient = new QMSClient(); // Get a time limited service key ServiceKeyClientMessageInspector.ServiceKey = backendClient.GetTimeLimitedServiceKey(); // Get available QlikView Servers var serviceList = backendClient.GetServices(ServiceTypes.QlikViewServer); Console.WriteLine("UserName;Document;Server"); // Loop through available servers foreach (var server in serviceList) { // Get documents on each server var userDocuments = backendClient.GetUserDocuments(server.ID); // Loop through available documents foreach (var docNode in userDocuments) { if (documents.Count != 0 && !documents.Contains(docNode.Name.ToLower())) continue; // Get authorization meta data var metaData = backendClient.GetDocumentMetaData(docNode, DocumentMetaDataScope.Authorization); foreach (var user in metaData.Authorization.Access) Console.WriteLine(String.Format("{0};{1};{2}", user.UserName, docNode.Name, server.Name)); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
static void Main(string[] args) { var options = new ConsoleOptions(); CommandLine.Parser.Default.ParseArguments(args, options); for (int h = 0; h < args.Length; h++) { var ar = args[h].ToString(); if (ar.ToLower(CultureInfo.InvariantCulture).IndexOf("-h", System.StringComparison.Ordinal) >= 0) { Environment.Exit(0); } } var serverArg = options.Server; var filesArg = options.Params; var server = ""; var files = ""; if (serverArg == null) { //Console.WriteLine(GenerateReturnMsg("error", "Missing server. See: wearable-qv --help for more info")); //Environment.Exit(0); server = "http://*****:*****@"C:\ProgramData\QlikTech\Documents\PebbleData1.qvw,PebbleData1;C:\ProgramData\QlikTech\Documents\PebbleData.qvw,PebbleData;"; //;C:\ProgramData\QlikTech\Documents\PebbleData1.qvw,PebbleData1; } else { files = filesArg; } QMSClient Client; Guid qvsId = new Guid("00000000-0000-0000-0000-000000000000"); Guid qdsId = new Guid("00000000-0000-0000-0000-000000000000"); //try { Client = new QMSClient("BasicHttpBinding_IQMS", server); string key = Client.GetTimeLimitedServiceKey(); ServiceKeyClientMessageInspector.ServiceKey = key; List <ServiceInfo> myServices = Client.GetServices(ServiceTypes.All); foreach (ServiceInfo service in myServices) { if (service.Type == ServiceTypes.QlikViewServer) { qvsId = service.ID; } if (service.Type == ServiceTypes.QlikViewDistributionService) { qdsId = service.ID; } } DataTable dtFiles = new DataTable(); DataColumn dcFile = new DataColumn("file"); DataColumn dcField = new DataColumn("field"); dtFiles.Columns.Add(dcFile); dtFiles.Columns.Add(dcField); var filesandfields = files.Split(';'); try { for (var i = 0; i < filesandfields.Length; i++) { if (filesandfields[i].Length > 0) { var singlefile = filesandfields[i].Split(','); DataRow dr = dtFiles.NewRow(); dr["file"] = singlefile[0]; dr["field"] = singlefile[1]; dtFiles.Rows.Add(dr); } } } catch (System.Exception ex) { Console.WriteLine(GenerateReturnMsg("error", "Wrong format of passed file(s) parameteres. The format should be: <fullpath to the file>,<field name>;")); Environment.Exit(0); } var jsObj = new JObject(); var jsonArray = new JArray(); jsObj.Add("data", jsonArray); for (var i = 0; i < dtFiles.Rows.Count; i++) { string field = dtFiles.Rows[i]["field"].ToString(); string filePath = dtFiles.Rows[i]["file"].ToString(); QDSDocumentSessionConfiguration qds = new QDSDocumentSessionConfiguration(); qds.FilePath = filePath; qds.QDSID = qdsId; FileInfo fi = new FileInfo(filePath); //try { var t = Client.CreateSession(qds); if (t.OpenDocumentResult == DocumentState.OpenedSuccessfully) { //try { var data = Client.GetFieldContentList(t, field, FieldContentType.All, 0, 100); List <string> categories = new List <string>(); foreach (var vals in data[0].Values) { var d = vals.Text; var d1 = d.Split('_'); categories.Add(d1[0]); } categories = categories.Distinct().ToList(); for (var c = 0; c < categories.Count; c++) { var jsArea = new JObject(); var jsAreaData = new JArray(); jsArea.Add("areadata", jsAreaData); jsArea.Add("name", categories[c]); foreach (var vals in data[0].Values) { var d = vals.Text; var d1 = d.Split('_'); if (d1[0] == categories[c]) { var jsonObj = new JObject(); jsonObj.Add("file", fi.FullName.ToString()); jsonObj.Add("field", field); jsonObj.Add("status", t.OpenDocumentResult.ToString()); jsonObj.Add("main", d1[0]); jsonObj.Add("category", d1[1]); jsonObj.Add("value", d1[2]); jsAreaData.Add(jsonObj); } } jsonArray.Add(jsArea); } } //catch (System.Exception) { // Console.WriteLine(GenerateReturnMsg("error", "Cannot get field content for field '" + field + "' in file " + fi.FullName)); // Environment.Exit(0); } } else { var jsonObj = new JObject(); jsonObj.Add("file", fi.FullName.ToString()); jsonObj.Add("field", field); jsonObj.Add("status", t.OpenDocumentResult.ToString()); jsonObj.Add("main", ""); jsonObj.Add("category", ""); jsonObj.Add("value", ""); jsonArray.Add(jsonObj); } Client.CloseSession(t); } //catch (System.Exception) { //Console.WriteLine(GenerateReturnMsg("error", "Cannot create sessioin for for file " + fi.FullName)); //Environment.Exit(0); } } Console.WriteLine(jsObj.ToString()); Console.ReadLine(); } //catch (System.Exception ex) { // Console.WriteLine(GenerateReturnMsg("error", "Cannot reach the Qlikview Server at " + server)); // Environment.Exit(0); } }
public static void DocInfo(ICollection <string> documents) { try { // Initiate backend client var backendClient = new QMSClient(); // Get a time limited service key ServiceKeyClientMessageInspector.ServiceKey = backendClient.GetTimeLimitedServiceKey(); // Get available QlikView Servers var serviceList = backendClient.GetServices(ServiceTypes.QlikViewServer); Console.WriteLine("Document;Server;Preloaded;Plugin;Mobile;AjaxZfc;Download;Category;SourceDocument"); // Loop through available servers foreach (var server in serviceList) { // Get documents on each server var userDocuments = backendClient.GetUserDocuments(server.ID); // Loop through available documents foreach (var docNode in userDocuments) { if (documents.Count != 0 && !documents.Contains(docNode.Name.ToLower())) { continue; } // Get authorization meta data var metaData = backendClient.GetDocumentMetaData(docNode, DocumentMetaDataScope.All); // Check if PreloadMode is Restricted, if so get the dates var preloadMode = metaData.Server.DocumentLoad[0].Mode; //var preloadMode = metaData.Server.Preload.Mode.ToString(); //var loadedDays = ""; //var between = ""; //if (preloadMode == "Restricted") //{ // loadedDays = metaData.Server.Preload.DaysOfWeek.Aggregate(loadedDays, (current, dayOfWeek) => current + (dayOfWeek.ToString().Substring(0, 2) + " ")).Trim(); // between = metaData.Server.Preload.StartTime.ToShortTimeString() + "-" + metaData.Server.Preload.EndTime.ToShortTimeString(); //} // Check which clients are enabled var accessMethods = metaData.Server.Access.Methods.ToString(); var pluginClient = accessMethods.Contains("PluginClient") ? 1 : 0; var ajaxClient = accessMethods.Contains("ZeroFootprintClient") ? 1 : 0; var download = accessMethods.Contains("Download") ? 1 : 0; var mobileClient = accessMethods.Contains("MobileClient") ? 1 : 0; // Check if we have subfolders var relativePath = docNode.RelativePath; if (relativePath != "") { relativePath += "\\"; } Console.WriteLine(String.Format("{0};{1};{2};{3};{4};{5};{6};{7};{8}", relativePath + docNode.Name, server.Name, preloadMode, pluginClient, mobileClient, ajaxClient, download, metaData.DocumentInfo.Category, metaData.DocumentInfo.SourceName)); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public QVManagementService(QMSClient client) { this.client = client; qms = client.GetServices(ServiceTypes.QlikViewServer).FirstOrDefault(); }
/// <summary> /// Add DMS users /// </summary> /// <param name="documents"></param> /// <param name="users"></param> public static void Add(ICollection<string> documents, ICollection<string> users) { try { // Initiate backend client var backendClient = new QMSClient(); // Get a time limited service key ServiceKeyClientMessageInspector.ServiceKey = backendClient.GetTimeLimitedServiceKey(); // Get available QlikView Servers var serviceList = backendClient.GetServices(ServiceTypes.QlikViewServer); // Loop through available servers foreach (var server in serviceList) { // Get documents on each server var userDocuments = backendClient.GetUserDocuments(server.ID); // Loop through available documents foreach (var docNode in userDocuments) { // Continue if no matching documents if (documents.Count != 0 && !documents.Contains(docNode.Name.ToLower())) continue; // Get authorization metadata var metaData = backendClient.GetDocumentMetaData(docNode, DocumentMetaDataScope.Authorization); // Filter users already in DMS from the supplied list of users to avoid duplicates var uniqueUsers = users.Except(metaData.Authorization.Access.Select(user => user.UserName).ToList()); // Get number of users on each document var numberOfUsers = metaData.Authorization.Access.Count; // Add new users foreach (var user in uniqueUsers.Select(u => new DocumentAccessEntry { UserName = u, AccessMode = DocumentAccessEntryMode.Always, DayOfWeekConstraints = new List<DayOfWeek>() })) { metaData.Authorization.Access.Add(user); } // Save changes backendClient.SaveDocumentMetaData(metaData); // Get number of users AFTER modifications var addedUsers = metaData.Authorization.Access.Count - numberOfUsers; if (addedUsers <= 0) Console.WriteLine(String.Format("Nothing to add to '{0}' on {1}", docNode.Name, server.Name)); else Console.WriteLine(String.Format("Added {0} users to '{1}' on {2}", addedUsers, docNode.Name, server.Name)); } } } catch (System.Exception ex) { Console.WriteLine(ex.Message); } }
/// <summary> /// Remove DMS users /// </summary> /// <param name="documents"></param> /// <param name="users"></param> public static void Remove(ICollection<string> documents, List<string> users) { try { // Initiate backend client var backendClient = new QMSClient(); // Get a time limited service key ServiceKeyClientMessageInspector.ServiceKey = backendClient.GetTimeLimitedServiceKey(); // Get available QlikView Servers var serviceList = backendClient.GetServices(ServiceTypes.QlikViewServer); // Convert all usernames to lowercase users = users.ConvertAll(d => d.ToLower()); // Loop through available servers foreach (var server in serviceList) { // Get documents on each server var userDocuments = backendClient.GetUserDocuments(server.ID); // Loop through available documents foreach (var docNode in userDocuments) { // Continue if no matching documents if (documents.Count != 0 && !documents.Contains(docNode.Name.ToLower())) continue; // Get authorization metadata var metaData = backendClient.GetDocumentMetaData(docNode, DocumentMetaDataScope.Authorization); // Get number of users BEFORE modifications var numberOfUsers = metaData.Authorization.Access.Count; if (users.Count == 0) // Remove all users if no users were specified metaData.Authorization.Access.RemoveRange(0, numberOfUsers); else { // Remove matching users foreach (var u in metaData.Authorization.Access.ToList().Where(u => users.Contains(u.UserName.ToLower()))) metaData.Authorization.Access.Remove(u); } // Save changes backendClient.SaveDocumentMetaData(metaData); // Get number of users AFTER modifications var removedUsers = numberOfUsers - metaData.Authorization.Access.Count; if (removedUsers <= 0) Console.WriteLine(String.Format("Nothing to remove from '{0}' on {1}", docNode.Name, server.Name)); else Console.WriteLine(String.Format("Removed {0} users from '{1}' on {2}", removedUsers, docNode.Name, server.Name)); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
/// <summary> /// ADD CALs /// </summary> /// <param name="documents"></param> /// <param name="users"></param> public static void Add(ICollection <string> documents, ICollection <string> users) { try { // Initiate backend client var backendClient = new QMSClient(); // Get a time limited service key ServiceKeyClientMessageInspector.ServiceKey = backendClient.GetTimeLimitedServiceKey(); // Get available QlikView Servers var serviceList = backendClient.GetServices(ServiceTypes.QlikViewServer); if (documents.Count == 0) // NAMED CALS { // Loop through available servers foreach (var server in serviceList) { // Get Named CALs var config = backendClient.GetCALConfiguration(server.ID, CALConfigurationScope.NamedCALs); // Get number of users BEFORE modifications var numberOfCals = config.NamedCALs.AssignedCALs.Count; // Add CAL's (already existing CAL's seems unaffected, but how to check for them? Is it necessary?) foreach (var user in users.Select(u => new AssignedNamedCAL { UserName = u.ToUpper(), })) { config.NamedCALs.AssignedCALs.Add(user); } // Save changes backendClient.SaveCALConfiguration(config); // Get number of users AFTER modifications var addedCals = config.NamedCALs.AssignedCALs.Count - numberOfCals; if (addedCals <= 0) { Console.WriteLine(String.Format("Nothing to add on {0}", server.Name)); } else { Console.WriteLine(String.Format("Added {0} CALs on {1}", addedCals, server.Name)); } var inLicense = config.NamedCALs.InLicense; var assigned = config.NamedCALs.Assigned; // Warn if not enough available CAL's if (addedCals >= inLicense) { Console.WriteLine(String.Format("WARNING: Attempted to assign {0} CALs on {1} but the license only allows {2} CALs.", addedCals, server.Name, inLicense)); } else if (assigned >= inLicense) { Console.WriteLine("WARNING: All available CALs in the license have been assigned."); } } } // DOCUMENT CALS else { // Loop through available servers foreach (var server in serviceList) { // Get documents on each server var userDocuments = backendClient.GetUserDocuments(server.ID); // Loop through available documents foreach (var docNode in userDocuments) { // Continue if no matching documents if (!documents.Contains(docNode.Name.ToLower())) { continue; } var metaData = backendClient.GetDocumentMetaData(docNode, DocumentMetaDataScope.Licensing); // Get allocated CAL's for document var allocatedCals = metaData.Licensing.CALsAllocated; // Allocate more CAL's if necessary if (users.Count > allocatedCals) { metaData.Licensing.CALsAllocated = users.Count(); } // Add document CAL's foreach (var user in users.Select(u => new AssignedNamedCAL { UserName = u })) { metaData.Licensing.AssignedCALs.Add(user); } // Save changes backendClient.SaveDocumentMetaData(metaData); Console.WriteLine(String.Format("Added {0} Document CALs to '{1}' on {2}", users.Count(), docNode.Name, server.Name)); } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
/// <summary> /// List CALs /// </summary> public static void List() { try { // Initiate backend client var backendClient = new QMSClient(); // Get a time limited service key ServiceKeyClientMessageInspector.ServiceKey = backendClient.GetTimeLimitedServiceKey(); // Get available QlikView Servers var serviceList = backendClient.GetServices(ServiceTypes.QlikViewServer); Console.WriteLine("UserName;LastUsed;QuarantinedUntil;Document;Server"); // Loop through available servers foreach (var server in serviceList) { // Get Named CALs var config = backendClient.GetCALConfiguration(server.ID, CALConfigurationScope.NamedCALs); foreach (var c in config.NamedCALs.AssignedCALs) Console.WriteLine(String.Format("{0};{1};{2};{3};{4}", c.UserName, c.LastUsed.Year > 0001 ? c.LastUsed.ToString() : "", c.QuarantinedUntil.Year > 0001 ? c.QuarantinedUntil.ToString() : "", "", server.Name)); // Get Document CAL's var userDocuments = backendClient.GetUserDocuments(server.ID); foreach (var docNode in userDocuments) { var metaData = backendClient.GetDocumentMetaData(docNode, DocumentMetaDataScope.Licensing); foreach (var c in metaData.Licensing.AssignedCALs) Console.WriteLine(String.Format("{0};{1};{2};{3};{4}", c.UserName, c.LastUsed.Year > 0001 ? c.LastUsed.ToString() : "", c.QuarantinedUntil.Year > 0001 ? c.QuarantinedUntil.ToString() : "", docNode.Name, server.Name)); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
/// <summary> /// Remove DMS users /// </summary> /// <param name="documents"></param> /// <param name="users"></param> public static void Remove(ICollection <string> documents, List <string> users) { try { // Initiate backend client var backendClient = new QMSClient(); // Get a time limited service key ServiceKeyClientMessageInspector.ServiceKey = backendClient.GetTimeLimitedServiceKey(); // Get available QlikView Servers var serviceList = backendClient.GetServices(ServiceTypes.QlikViewServer); // Convert all usernames to lowercase users = users.ConvertAll(d => d.ToLower()); // Loop through available servers foreach (var server in serviceList) { // Get documents on each server var userDocuments = backendClient.GetUserDocuments(server.ID); // Loop through available documents foreach (var docNode in userDocuments) { // Continue if no matching documents if (documents.Count != 0 && !documents.Contains(docNode.Name.ToLower())) { continue; } // Get authorization metadata var metaData = backendClient.GetDocumentMetaData(docNode, DocumentMetaDataScope.Authorization); // Get number of users BEFORE modifications var numberOfUsers = metaData.Authorization.Access.Count; if (users.Count == 0) { // Remove all users if no users were specified metaData.Authorization.Access.RemoveRange(0, numberOfUsers); } else { // Remove matching users foreach (var u in metaData.Authorization.Access.ToList().Where(u => users.Contains(u.UserName.ToLower()))) { metaData.Authorization.Access.Remove(u); } } // Save changes backendClient.SaveDocumentMetaData(metaData); // Get number of users AFTER modifications var removedUsers = numberOfUsers - metaData.Authorization.Access.Count; if (removedUsers <= 0) { Console.WriteLine(String.Format("Nothing to remove from '{0}' on {1}", docNode.Name, server.Name)); } else { Console.WriteLine(String.Format("Removed {0} users from '{1}' on {2}", removedUsers, docNode.Name, server.Name)); } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public static void DocInfo(ICollection<string> documents) { try { // Initiate backend client var backendClient = new QMSClient(); // Get a time limited service key ServiceKeyClientMessageInspector.ServiceKey = backendClient.GetTimeLimitedServiceKey(); // Get available QlikView Servers var serviceList = backendClient.GetServices(ServiceTypes.QlikViewServer); Console.WriteLine("Document;Server;Preloaded;Plugin;Mobile;AjaxZfc;Download;Category;SourceDocument"); // Loop through available servers foreach (var server in serviceList) { // Get documents on each server var userDocuments = backendClient.GetUserDocuments(server.ID); // Loop through available documents foreach (var docNode in userDocuments) { if (documents.Count != 0 && !documents.Contains(docNode.Name.ToLower())) continue; // Get authorization meta data var metaData = backendClient.GetDocumentMetaData(docNode, DocumentMetaDataScope.All); // Check if PreloadMode is Restricted, if so get the dates var preloadMode = metaData.Server.DocumentLoad[0].Mode; //var preloadMode = metaData.Server.Preload.Mode.ToString(); //var loadedDays = ""; //var between = ""; //if (preloadMode == "Restricted") //{ // loadedDays = metaData.Server.Preload.DaysOfWeek.Aggregate(loadedDays, (current, dayOfWeek) => current + (dayOfWeek.ToString().Substring(0, 2) + " ")).Trim(); // between = metaData.Server.Preload.StartTime.ToShortTimeString() + "-" + metaData.Server.Preload.EndTime.ToShortTimeString(); //} // Check which clients are enabled var accessMethods = metaData.Server.Access.Methods.ToString(); var pluginClient = accessMethods.Contains("PluginClient") ? 1 : 0; var ajaxClient = accessMethods.Contains("ZeroFootprintClient") ? 1 : 0; var download = accessMethods.Contains("Download") ? 1 : 0; var mobileClient = accessMethods.Contains("MobileClient") ? 1 : 0; // Check if we have subfolders var relativePath = docNode.RelativePath; if (relativePath != "") relativePath += "\\"; Console.WriteLine(String.Format("{0};{1};{2};{3};{4};{5};{6};{7};{8}", relativePath + docNode.Name, server.Name, preloadMode, pluginClient, mobileClient, ajaxClient, download, metaData.DocumentInfo.Category, metaData.DocumentInfo.SourceName)); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
/// <summary> /// Add DMS users /// </summary> /// <param name="documents"></param> /// <param name="users"></param> public static void Add(ICollection <string> documents, ICollection <string> users) { try { // Initiate backend client var backendClient = new QMSClient(); // Get a time limited service key ServiceKeyClientMessageInspector.ServiceKey = backendClient.GetTimeLimitedServiceKey(); // Get available QlikView Servers var serviceList = backendClient.GetServices(ServiceTypes.QlikViewServer); // Loop through available servers foreach (var server in serviceList) { // Get documents on each server var userDocuments = backendClient.GetUserDocuments(server.ID); // Loop through available documents foreach (var docNode in userDocuments) { // Continue if no matching documents if (documents.Count != 0 && !documents.Contains(docNode.Name.ToLower())) { continue; } // Get authorization metadata var metaData = backendClient.GetDocumentMetaData(docNode, DocumentMetaDataScope.Authorization); // Filter users already in DMS from the supplied list of users to avoid duplicates var uniqueUsers = users.Except(metaData.Authorization.Access.Select(user => user.UserName).ToList()); // Get number of users on each document var numberOfUsers = metaData.Authorization.Access.Count; // Add new users foreach (var user in uniqueUsers.Select(u => new DocumentAccessEntry { UserName = u, AccessMode = DocumentAccessEntryMode.Always, DayOfWeekConstraints = new List <DayOfWeek>() })) { metaData.Authorization.Access.Add(user); } // Save changes backendClient.SaveDocumentMetaData(metaData); // Get number of users AFTER modifications var addedUsers = metaData.Authorization.Access.Count - numberOfUsers; if (addedUsers <= 0) { Console.WriteLine(String.Format("Nothing to add to '{0}' on {1}", docNode.Name, server.Name)); } else { Console.WriteLine(String.Format("Added {0} users to '{1}' on {2}", addedUsers, docNode.Name, server.Name)); } } } } catch (System.Exception ex) { Console.WriteLine(ex.Message); } }
public QVServer(QMSClient client) { this.client = client; qvs = client.GetServices(ServiceTypes.QlikViewServer).FirstOrDefault(); calls = client.GetCALConfiguration(qvs.ID, CALConfigurationScope.All); }