/// <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); } } }
/// <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()); }
//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"); } }
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(); } }
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(); } }
/// <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); } }
public Report() { sqlQueries = new SqlQueries(); DatabaseUpdate _dbUpdate = new DatabaseUpdate(); dbType = _dbUpdate.GetDatabaseType(); }
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)); }