コード例 #1
0
ファイル: Program.cs プロジェクト: ewosp/sycorax
        /// <summary>
        /// Thread principal
        /// </summary>
        static public void Do () {
            try {
                //Lecture des préférences
                Console.WriteLine("[*] Loading options ...");
                options = MainOptions.Load();

                //Initialisation de la base de données et de sa classe de mise à jour
                Console.WriteLine("[*] Initializing database connection and update facilities ...");
                databaseUpdate = new DatabaseUpdate(options.ConnectionString);

                //Lancement d'une surveillance pour chaque dossier repris dans l'option FoldersToWatch
                Console.WriteLine("[*] Initializing folders watch ...");

                //Let's check if we've folders to watch
                //  CLI is very useful to test if DatabaseUpdate initialization is OK,
                //  it's why we don't test options.FoldersToWatch.Length before !
                if (options.FoldersToWatch.Length == 0) {
                    //Nothing to do
                    Console.WriteLine("    ( no folder to watch, exiting )");
                    databaseUpdate.Dispose();
                    return;
                }
                watchers = new SurveillanceDossiers[options.FoldersToWatch.Length];
                for (int i = 0 ; i < options.FoldersToWatch.Length ; i++) {
                    watchers[i] = new SurveillanceDossiers(options.FoldersToWatch[i], databaseUpdate, options.DeleteTunesIfOrphan, options.IndexSubdirectories);
                    watchers[i].Error += new EventHandler<ExceptionEventArgs>(Program_Error);
                    Console.WriteLine("    ° " + options.FoldersToWatch[i]);
                }

                Console.WriteLine("______________________________________________________________________");
                Console.WriteLine();

                //Oki, manage events
                databaseUpdate.LogEntry += new EventHandler<TimestampMessageEventArgs>(databaseUpdate_LogEntry);

            } catch (Exception e) {
                //Options XML deserialize InnerException
                if (e.InnerException != null) {
                    e = e.InnerException;
                }
                Console.WriteLine(e.Message);
                if (options != null && options.DebugMode) {
                    Console.WriteLine(e.StackTrace);
                }
            }
        }
コード例 #2
0
 /// <summary>
 /// Updates a database
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group. The name is case insensitive.
 /// </param>
 /// <param name='clusterName'>
 /// The name of the RedisEnterprise cluster.
 /// </param>
 /// <param name='databaseName'>
 /// The name of the database.
 /// </param>
 /// <param name='parameters'>
 /// Parameters supplied to the create or update database operation.
 /// </param>
 public static Database Update(this IDatabasesOperations operations, string resourceGroupName, string clusterName, string databaseName, DatabaseUpdate parameters)
 {
     return(operations.UpdateAsync(resourceGroupName, clusterName, databaseName, parameters).GetAwaiter().GetResult());
 }
コード例 #3
0
    //This is called when the authorized database sends an update to this database.
    //If this object is the authorized database, this should never be called.
    public void ReceiveDeltaUpdate(DatabaseUpdate dbup)
    {
        //TODO: Write safe methods for local addition/deletion etc
        //TODO: Make sure that network and local references are not confused (StateChange.Change)
        //TODO: Refactor "override" full update system so that omissions are meaningful
        foreach (Player p in dbup.playerDelta.Keys)
        {
            if (dbup.playerDelta[p] == StateChange.Addition)
            {
                AddPlayer(p, false);
            }
            else if (dbup.playerDelta[p] == StateChange.Removal)
            {
                RemovePlayer(p, false);
            }
            else if (dbup.playerDelta[p] == StateChange.Change)
            {
                playerList[p.GetUniqueID()].DeepCopyAndApply(p);
            }
            else if (dbup.playerDelta[p] == StateChange.Override)     //Probably coming from a FullUpdate
            {
                Debug.LogError("Received an override update inside a delta update");
            }
        }
        foreach (MeshNetworkIdentity i in dbup.objectDelta.Keys)
        {
            if (dbup.objectDelta[i] == StateChange.Addition)
            {
                //If the incoming object is the database, we don't want to create it
                //(because this script is running off of the already created database!)
                //We only want to create a recursive link.
                if (i.GetObjectID() == (ushort)ReservedObjectIDs.DatabaseObject)
                {
                    DatabaseChangeResult result = AddObject(GetIdentity(), false);
                    if (result.success)
                    {
                        Debug.Log("Successfully added database to database: recursive link achieved");
                    }
                }
                else
                {
                    DatabaseChangeResult result = AddObject(i, false);
                    if (result.success)
                    {
                        game.SpawnObject(i.GetObjectID());
                    }
                }
            }
            else if (dbup.objectDelta[i] == StateChange.Removal)
            {
                DatabaseChangeResult result = RemoveObject(i, false);
                if (result.success)
                {
                    game.RemoveObject(i.GetObjectID());
                }
            }
            else if (dbup.objectDelta[i] == StateChange.Change)
            {
                objectList[i.GetObjectID()].DeepCopyAndApply(i);
            }
            else if (dbup.objectDelta[i] == StateChange.Override)     //Probably coming from a FullUpdate
            {
                Debug.LogError("Received an override update inside a delta update");
            }
        }

        ushort check = GenerateDatabaseChecksum(playerList, objectList);

        if (check != dbup.fullHash)
        {
            Debug.Log("Database checksum doesn't match: " + check + " vs " + dbup.fullHash + ". Requesting full update.");
            MeshPacket p = new MeshPacket(new byte[0], PacketType.FullUpdateRequest,
                                          GetIdentity().meshnetReference.GetLocalPlayerID(),
                                          GetIdentity().GetOwnerID(),
                                          GetIdentity().GetObjectID(),
                                          GetIdentity().GetObjectID(),
                                          GetSubcomponentID());
            GetIdentity().RoutePacket(p);
        }
        else
        {
            //Debug.Log("Delta successful, hash matches");
        }
    }
コード例 #4
0
        public void ProcessRequest(HttpContext context)
        {
            using (ISiteNavHelper navHelper = SiteNavFactory.GetSiteNavHelper()) {
                SiteNav navData        = null;
                string  sFileRequested = context.Request.Path;
                sRequestedURL = sFileRequested;
                string sScrubbedURL = sFileRequested;

                sRequestedURL = SiteData.AppendDefaultPath(sRequestedURL);

                try {
                    sScrubbedURL = SiteData.AlternateCurrentScriptName;

                    if (sScrubbedURL.ToLowerInvariant() != sRequestedURL.ToLowerInvariant())
                    {
                        sFileRequested = sScrubbedURL;
                        bURLOverride   = true;
                    }

                    VirtualDirectory.RegisterRoutes();
                } catch (Exception ex) {
                    //assumption is database is probably empty / needs updating, so trigger the under construction view
                    if (DatabaseUpdate.SystemNeedsChecking(ex) || DatabaseUpdate.AreCMSTablesIncomplete())
                    {
                        if (navData == null)
                        {
                            navData = SiteNavHelper.GetEmptyHome();
                        }
                    }
                    else
                    {
                        //something bad has gone down, toss back the error
                        throw;
                    }
                }

                sFileRequested = SiteData.AppendDefaultPath(sFileRequested);

                if (SecurityData.IsAuthenticated)
                {
                    try {
                        if (context.Request.UrlReferrer != null && !string.IsNullOrEmpty(context.Request.UrlReferrer.AbsolutePath))
                        {
                            if (context.Request.UrlReferrer.AbsolutePath.ToLowerInvariant().Contains(FormsAuthentication.LoginUrl.ToLowerInvariant()) ||
                                FormsAuthentication.LoginUrl.ToLowerInvariant() == sFileRequested.ToLowerInvariant())
                            {
                                if (SiteFilename.DashboardURL.ToLowerInvariant() != sFileRequested.ToLowerInvariant() &&
                                    SiteFilename.SiteInfoURL.ToLowerInvariant() != sFileRequested.ToLowerInvariant())
                                {
                                    sFileRequested = SiteData.AdminDefaultFile;
                                }
                            }
                        }
                    } catch (Exception ex) { }
                }

                if (sFileRequested.ToLowerInvariant().EndsWith(".aspx") || SiteData.IsLikelyHomePage(sFileRequested))
                {
                    bool bIgnorePublishState = SecurityData.AdvancedEditMode || SecurityData.IsAdmin || SecurityData.IsSiteEditor;

                    string queryString = String.Empty;
                    queryString = context.Request.QueryString.ToString();
                    if (string.IsNullOrEmpty(queryString))
                    {
                        queryString = String.Empty;
                    }

                    if (!CMSConfigHelper.CheckRequestedFileExistence(sFileRequested, SiteData.CurrentSiteID) || SiteData.IsLikelyHomePage(sFileRequested))
                    {
                        context.Items[REQ_PATH]  = context.Request.PathInfo;
                        context.Items[REQ_QUERY] = context.Request.QueryString.ToString();

                        // handle a case where this site was migrated from a format where all pages varied on a consistent querystring
                        // allow this QS parm to be set in a config file.
                        if (SiteData.IsLikelyHomePage(sFileRequested))
                        {
                            string sParm = String.Empty;
                            if (SiteData.OldSiteQuerystring != string.Empty)
                            {
                                if (context.Request.QueryString[SiteData.OldSiteQuerystring] != null)
                                {
                                    sParm = context.Request.QueryString[SiteData.OldSiteQuerystring].ToString();
                                }
                            }
                            if (!string.IsNullOrEmpty(sParm))
                            {
                                sFileRequested = "/" + sParm + ".aspx";

                                SiteData.Show301Message(sFileRequested);

                                context.Response.Redirect(sFileRequested);
                                context.Items[REQ_PATH]  = sFileRequested;
                                context.Items[REQ_QUERY] = String.Empty;
                            }
                        }

                        try {
                            //periodic test of database up-to-dated-ness
                            if (DatabaseUpdate.TablesIncomplete)
                            {
                                navData = SiteNavHelper.GetEmptyHome();
                            }
                            else
                            {
                                bool bIsHomePage = false;

                                if (SiteData.IsLikelyHomePage(sFileRequested))
                                {
                                    navData = navHelper.FindHome(SiteData.CurrentSiteID, !bIgnorePublishState);

                                    if (SiteData.IsLikelyHomePage(sFileRequested) && navData != null)
                                    {
                                        sFileRequested = navData.FileName;
                                        bIsHomePage    = true;
                                    }
                                }

                                if (!bIsHomePage)
                                {
                                    string pageName = sFileRequested;
                                    navData = navHelper.GetLatestVersion(SiteData.CurrentSiteID, !bIgnorePublishState, pageName);
                                }

                                if (SiteData.IsLikelyHomePage(sFileRequested) && navData == null)
                                {
                                    navData = SiteNavHelper.GetEmptyHome();
                                }
                            }
                        } catch (Exception ex) {
                            //assumption is database is probably empty / needs updating, so trigger the under construction view
                            if (DatabaseUpdate.SystemNeedsChecking(ex) || DatabaseUpdate.AreCMSTablesIncomplete())
                            {
                                if (navData == null)
                                {
                                    navData = SiteNavHelper.GetEmptyHome();
                                }
                            }
                            else
                            {
                                //something bad has gone down, toss back the error
                                throw;
                            }
                        }

                        if (navData != null)
                        {
                            string sSelectedTemplate = navData.TemplateFile;

                            // selectivly engage the cms helper only if in advance mode
                            if (SecurityData.AdvancedEditMode)
                            {
                                using (CMSConfigHelper cmsHelper = new CMSConfigHelper()) {
                                    if (cmsHelper.cmsAdminContent != null)
                                    {
                                        try { sSelectedTemplate = cmsHelper.cmsAdminContent.TemplateFile.ToLowerInvariant(); } catch { }
                                    }
                                }
                            }

                            if (!CMSConfigHelper.CheckFileExistence(sSelectedTemplate))
                            {
                                sSelectedTemplate = SiteData.DefaultTemplateFilename;
                            }

                            sVirtualReqFile = sFileRequested;

                            if (bURLOverride)
                            {
                                sVirtualReqFile = sRequestedURL;
                                sFileRequested  = sRequestedURL;
                            }

                            RewriteCMSPath(context, sSelectedTemplate, queryString);
                        }
                        else
                        {
                            SiteData.PerformRedirectToErrorPage(404, sFileRequested);
                            //SiteData.Show404MessageFull(true);
                            SiteData.Show404MessageShort();
                        }
                    }
                    else
                    {
                        sVirtualReqFile = sFileRequested;

                        RewriteCMSPath(context, sVirtualReqFile, queryString);
                    }
                }

                context.ApplicationInstance.CompleteRequest();
            }
        }
コード例 #5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            DatabaseUpdate du = new DatabaseUpdate(true);

            if (!String.IsNullOrEmpty(Request.QueryString["signout"]))
            {
                FormsAuthentication.SignOut();
            }

            List <DatabaseUpdateMessage> lst = new List <DatabaseUpdateMessage>();

            btnLogin.Visible  = false;
            btnCreate.Visible = false;

            if (DatabaseUpdate.LastSQLError != null)
            {
                du.HandleResponse(lst, DatabaseUpdate.LastSQLError);
                DatabaseUpdate.LastSQLError = null;
            }
            else
            {
                bool bUpdate = true;

                if (!du.DoCMSTablesExist())
                {
                    bUpdate = false;
                }

                bUpdate = du.DatabaseNeedsUpdate();

                if (bUpdate)
                {
                    DatabaseUpdateStatus status = du.PerformUpdates();
                    lst = du.MergeMessages(lst, status.Messages);
                }
                else
                {
                    DataInfo ver = DatabaseUpdate.GetDbSchemaVersion();
                    du.HandleResponse(lst, "Database up-to-date [" + ver.DataValue + "] ");
                }

                bUpdate = du.DatabaseNeedsUpdate();

                if (!bUpdate && DatabaseUpdate.LastSQLError == null)
                {
                    if (DatabaseUpdate.UsersExist)
                    {
                        btnLogin.Visible = true;
                    }
                    else
                    {
                        btnCreate.Visible = true;
                    }
                }
            }

            if (DatabaseUpdate.LastSQLError != null)
            {
                du.HandleResponse(lst, DatabaseUpdate.LastSQLError);
            }

            if (lst.Where(x => !String.IsNullOrEmpty(x.ExceptionText)).Count() > 0)
            {
                bOK = false;
            }
            else
            {
                bOK = true;
            }

            GeneralUtilities.BindRepeater(rpMessages, lst.OrderBy(x => x.Order));

            using (CMSConfigHelper cmsHelper = new CMSConfigHelper()) {
                cmsHelper.ResetConfigs();
            }
        }
コード例 #6
0
 /// <summary>
 /// Updates a database.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group containing the Kusto cluster.
 /// </param>
 /// <param name='clusterName'>
 /// The name of the Kusto cluster.
 /// </param>
 /// <param name='databaseName'>
 /// The name of the database in the Kusto cluster.
 /// </param>
 /// <param name='parameters'>
 /// The database parameters supplied to the Update operation.
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <Database> BeginUpdateAsync(this IDatabasesOperations operations, string resourceGroupName, string clusterName, string databaseName, DatabaseUpdate parameters, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.BeginUpdateWithHttpMessagesAsync(resourceGroupName, clusterName, databaseName, parameters, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
コード例 #7
0
ファイル: Report.cs プロジェクト: natarajujanapalli/NIBRS
 public Report()
 {
     sqlQueries = new SqlQueries();
     DatabaseUpdate _dbUpdate = new DatabaseUpdate();
     dbType = _dbUpdate.GetDatabaseType();
 }
コード例 #8
0
        protected override IHttpHandler GetHttpHandler(System.Web.Routing.RequestContext requestCtx)
        {
            string requestedUri = (string)requestCtx.RouteData.Values["RequestedUri"];

            requestedUri = String.IsNullOrEmpty(requestedUri) ? String.Empty : requestedUri.ToLowerInvariant();
            if (!requestedUri.StartsWith("/"))
            {
                requestedUri = String.Format("/{0}", requestedUri);
            }
            if (requestedUri.EndsWith("/"))
            {
                requestedUri = requestedUri.Substring(0, requestedUri.Length - 1);
            }

            if (requestedUri.EndsWith(".ashx"))
            {
                if (requestedUri == "/rss.ashx")
                {
                    requestCtx.RouteData.Values["controller"] = ContentCtrlr;
                    requestCtx.RouteData.Values["action"]     = "RSSFeed";
                    return(base.GetHttpHandler(requestCtx));
                }
                if (requestedUri == "/sitemap.ashx")
                {
                    requestCtx.RouteData.Values["controller"] = ContentCtrlr;
                    requestCtx.RouteData.Values["action"]     = "SiteMap";
                    return(base.GetHttpHandler(requestCtx));
                }

                //if (requestedUri == "/trackback.ashx") {	// will be dead link
                //	requestCtx.RouteData.Values["controller"] = ContentCtrlr;
                //	requestCtx.RouteData.Values["action"] = "Trackback";
                //	return base.GetHttpHandler(requestCtx);
                //}

                requestCtx.RouteData.Values["controller"] = ContentCtrlr;
                requestCtx.RouteData.Values["action"]     = "PageNotFound";
                requestCtx.RouteData.Values["id"]         = null;

                SiteData.WriteDebugException("cmsroutehandler ashx not matched", new Exception(String.Format("RequestedUri: {0}", requestedUri)));

                return(base.GetHttpHandler(requestCtx));
            }
            else if (requestedUri.EndsWith(".aspx"))
            {
                //since .aspx is not supported
                requestCtx.RouteData.Values["controller"] = ContentCtrlr;
                requestCtx.RouteData.Values["action"]     = "PageNotFound";
                requestCtx.RouteData.Values["id"]         = null;
            }
            else
            {
                string sCurrentPage = SiteData.CurrentScriptName;

                try {
                    string sScrubbedURL = SiteData.AlternateCurrentScriptName;

                    if (sScrubbedURL.ToLowerInvariant() != sCurrentPage.ToLowerInvariant())
                    {
                        requestedUri = sScrubbedURL;
                    }

                    SiteNav navData             = null;
                    bool    bIsHomePage         = false;
                    bool    bIgnorePublishState = SecurityData.AdvancedEditMode || SecurityData.IsAdmin || SecurityData.IsSiteEditor;

                    using (ISiteNavHelper navHelper = SiteNavFactory.GetSiteNavHelper()) {
                        if (SiteData.IsLikelyHomePage(requestedUri))
                        {
                            navData = navHelper.FindHome(SiteData.CurrentSiteID, !bIgnorePublishState);

                            if (navData != null)
                            {
                                requestedUri = navData.FileName;
                                bIsHomePage  = true;
                            }
                        }

                        if (!bIsHomePage)
                        {
                            navData = navHelper.GetLatestVersion(SiteData.CurrentSiteID, !bIgnorePublishState, requestedUri);
                        }

                        if ((SiteData.IsLikelyHomePage(requestedUri)) && navData == null)
                        {
                            navData = SiteNavHelper.GetEmptyHome();
                        }

                        requestCtx.RouteData.Values["controller"] = ContentCtrlr;
                        if (navData != null)
                        {
                            SiteData.WriteDebugException("cmsroutehandler != null", new Exception(String.Format("Default: {0}", navData.FileName)));
                            requestCtx.RouteData.Values["action"] = "Default";
                        }
                        else
                        {
                            SiteData.WriteDebugException("cmsroutehandler == null", new Exception(String.Format("_PageNotFound: {0}", sCurrentPage)));
                            requestCtx.RouteData.Values["action"] = "PageNotFound";
                        }
                        requestCtx.RouteData.Values["id"] = null;
                    }
                } catch (Exception ex) {
                    SiteData.WriteDebugException("cmsroutehandler_exception_uri", new Exception(String.Format("Exception: {0}", sCurrentPage)));

                    if (DatabaseUpdate.SystemNeedsChecking(ex) || DatabaseUpdate.AreCMSTablesIncomplete())
                    {
                        requestCtx.RouteData.Values["controller"] = ContentCtrlr;
                        requestCtx.RouteData.Values["action"]     = "Default";
                        requestCtx.RouteData.Values["id"]         = null;
                        SiteData.WriteDebugException("cmsroutehandler_exception_systemneedschecking", ex);
                    }
                    else
                    {
                        //something bad has gone down, toss back the error
                        SiteData.WriteDebugException("cmsroutehandler_exception", ex);
                        throw;
                    }
                }
            }

            return(base.GetHttpHandler(requestCtx));
        }