internal static void Setup(string logPath, string solutionsListFile, string projectFilePath, bool zip)
        {
            var baseDir    = Path.GetFullPath(solutionsListFile + (solutionsListFile.EndsWith("Solutions.txt") ? "\\.." : "\\..\\.."));
            var verboseLog = new VerboseLog("GenerateBindingRedirects", logPath, baseDir, projectFilePath, zip);

            LogFilePath = verboseLog.LogFilePath;
            s_baseLog   = verboseLog;
            Dayforce.CSharp.ProjectAssets.Log.Instance = s_baseLog;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Initiates the DNS Server's protocols and starts listening for requests.
        /// </summary>
        public void Start()
        {
            EndPoint EndPoint = new IPEndPoint(IPAddress.Any, 51);

            Server.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.PacketInformation, true);
            Server.Bind(EndPoint);
            Processor.LoadDomainNameTable(); //do database stuff.
            Server.BeginReceiveFrom(Data, 0, PACKET_LENGTH, SocketFlags.None, ref Sender, new AsyncCallback(Request), null);
            VerboseLog?.Invoke("Server has started listening for DNS requests.");
        }
Exemplo n.º 3
0
        /// <summary>
        /// Callback function for sending async DNS responses.
        /// </summary>
        /// <param name="result"></param>
        private void ResponseCompleted(IAsyncResult result)
        {
            try
            {
                EndPoint ep        = (EndPoint)result.AsyncState;
                int      bytesSend = Server.EndSendTo(result);

                if (bytesSend > 0)
                {
                    VerboseLog?.Invoke($"Sent a response to {((IPEndPoint)ep).Address}:{((IPEndPoint)ep).Port}.");
                }
            }
            catch (Exception ex)
            {
                ErrorLog?.Invoke($"Error ending async response: '{ex.Message}'.");
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// Callback function for the Data recieve function.
 /// </summary>
 /// <param name="result"></param>
 private void Request(IAsyncResult result)
 {
     try
     {
         Server.EndReceiveFrom(result, ref Sender);
         bool success = DNSRequestHandler(Sender, Data);
         VerboseLog?.Invoke($"Received data from {((IPEndPoint)Sender).Address}:{((IPEndPoint)Sender).Port}. Response success: {success}.");
         Server.BeginReceiveFrom(Data, 0, PACKET_LENGTH, SocketFlags.None, ref Sender, new AsyncCallback(Request), null);
     }
     catch (SocketException sEx)
     {
         ErrorLog?.Invoke($"SocketException: '{sEx.Message}' for {((IPEndPoint)Sender).Address}.");
     }
     catch (DNSException dEx)
     {
         ErrorLog?.Invoke($"DNS Exception: '{dEx.Message}' for {((IPEndPoint)Sender).Address}.");
     }
     catch (Exception ex)
     {
         ErrorLog?.Invoke($"Unexpected Exception: '{ex.Message}'.");
     }
 }
        public static int Main(string[] args)
        {
            var    verbose           = false;
            string logPath           = VerboseLog.DefaultLogDirectory;
            string projectFilePath   = null;
            string solutionsListFile = null;
            var    help             = false;
            string nuGetUsageReport = null;
            var    options          = new OptionSet()
                                      .Add("h|help|?", "Show help", _ => help = true)
                                      .Add("v|verbose:", $"Produces verbose output. May be given a custom directory path where to collect extended information. Defaults to {logPath}", v => { logPath = v ?? logPath; verbose = true; })
                                      .Add("f|projectFile=", "[Required] The project file.", v => projectFilePath = v)
                                      .Add("s|solutions=", "[Required] A file listing all the relevant solutions.", v => solutionsListFile = v)
                                      .Add("u|nuGetUsageReport=", "[Required] Generate a report listing all the nuget packages on which the given project depends and save it under the given file path.", v => nuGetUsageReport = v)
            ;

            var extraArgs = options.Parse(args);

            if (help || args.Length == 0)
            {
                options.WriteOptionDescriptions(Console.Out);
                return(0);
            }
            if (extraArgs.Count > 0)
            {
                LogErrorMessage($"Unrecognized command line arguments \"{string.Join(" ", extraArgs)}\"");
                Console.WriteLine();
                options.WriteOptionDescriptions(Console.Out);
                return(2);
            }
            if (projectFilePath == null)
            {
                LogErrorMessage($"--projectFile is required.");
                return(2);
            }
            if (!File.Exists(projectFilePath))
            {
                LogErrorMessage($"The file {projectFilePath} does not exist.");
                return(2);
            }
            if (solutionsListFile == null)
            {
                LogErrorMessage($"--solutions is required.");
                return(2);
            }
            if (!File.Exists(solutionsListFile))
            {
                LogErrorMessage($"The file {solutionsListFile} does not exist.");
                return(2);
            }
            if (nuGetUsageReport == null)
            {
                LogErrorMessage($"--nuGetUsageReport is required.");
                return(2);
            }

            try
            {
                if (verbose)
                {
                    var        baseDir = Path.GetFullPath(solutionsListFile + "\\..");
                    VerboseLog verboseLog;
                    Log.Instance = verboseLog = new VerboseLog("GenerateNuGetUsageReport", logPath, baseDir, projectFilePath, false);
                    LogFilePath  = verboseLog.LogFilePath;
                }
                var sc    = new SolutionsContext(solutionsListFile, new SimpleSolutionsListFileReader());
                var focus = sc.GetProjectContext(projectFilePath);
                if (focus == null)
                {
                    throw new ApplicationException($"The project {projectFilePath} cannot be processed, because it does not seem to exist in any solution.");
                }

                var projectAssets = new ProjectAssets(sc, focus);

                if (projectAssets.PackageFolders == null)
                {
                    throw new ApplicationException($"No project.assets.json is associated with {projectFilePath} and {solutionsListFile}.");
                }

                projectAssets.GenerateNuGetUsageReport(focus.ProjectName, nuGetUsageReport);
            }
            catch (ApplicationException exc)
            {
                LogErrorMessage(exc.Message);
                Log.Instance.WriteVerbose(exc);
                return(3);
            }
            catch (Exception exc)
            {
                LogErrorMessage(exc.ToString());
                LogErrorMessage(exc.Message);
                Log.Instance.WriteVerbose(exc);
                return(3);
            }
            finally
            {
                using (Log.Instance as IDisposable) { }
            }
            return(0);
        }
Exemplo n.º 6
0
 private void Verbose(string text, params object[] args)
 {
     VerboseLog?.Invoke(string.Format(text + "\r\n", args));
 }