private static void createBlankDBServer() { LogB.SQL("Creating blank database for server"); if (Sqlite.CheckFileServer()) { LogB.Error("File already exists. Cannot create."); } else { Sqlite.ConnectServer(); Sqlite.CreateFile(); Sqlite.CreateTables(true); //server LogB.SQL("Created blank database! Exiting"); string myVersion = UtilAll.ReadVersion(); LogB.Warning("CAUTION: client info about versionAvailable (on server): ", myVersion); SqlitePreferences.Update("availableVersion", myVersion, false); LogB.Information("Maybe you don't want to show this version on pings, change it to last stable published version"); } }
private void findVersion() { LogB.Debug("--1--"); //pingStart = true; pulseGTKPingShouldEnd = false; splashShowButton = true; LogB.Debug("--2--"); //maybe other thread doesn't create at time the splash win //then just wait while (!createdSplashWin) { ; } LogB.Debug("--2.1--"); try { if (splashWin.FakeButtonCreated) { LogB.Information("Created splashWin.FakeButton"); } else { LogB.Warning("NOT Created splashWin.FakeButton, si es bloqueja, posar aquí un while (mentre no estigui creat)"); } splashWin.FakeButtonCancel.Clicked += new EventHandler(on_find_version_cancelled); LogB.Debug("--3--"); } catch { LogB.Warning("Problem with splash win"); } versionAvailable = Server.Ping(true, progName, UtilAll.ReadVersion()); //doInsertion LogB.Debug("--4--"); splashShowButton = false; LogB.Information(" version: ", versionAvailable); LogB.Debug("\n--5--"); //pingEnd = true; LogB.Debug("--6--"); }
public bool PostCrashLog(string email, string comments) { string filePath = UtilAll.GetLogFileOld(); if (!File.Exists(filePath)) { this.ResultMessage = Catalog.GetString("Could not send file.\nIt does not exist."); return(false); } if (comments != null && comments != "") { Util.InsertTextBeginningOfFile( "----------\nUser comments:\n" + comments + "\n----------\n", filePath); } // Create a request using a URL that can receive a post. WebRequest request = WebRequest.Create(serverUrl + "/backtrace/" + UtilAll.ReadVersion() + "-" + email); // Set the Method property of the request to POST. request.Method = "POST"; // Create POST data and convert it to a byte array. byte[] byteArray = readFile(filePath); // Set the ContentType property of the WebRequest. request.ContentType = "application/x-www-form-urlencoded"; // Set the ContentLength property of the WebRequest. request.ContentLength = byteArray.Length; // Get the request stream. Stream dataStream; try { dataStream = request.GetRequestStream(); } catch { LogB.Warning("Error sending datastream"); this.ResultMessage = Catalog.GetString("Could not send file.") + "\n" + string.Format(Catalog.GetString("You are not connected to the Internet\nor {0} server is down."), serverUrl); return(false); } // Write the data to the request stream. dataStream.Write(byteArray, 0, byteArray.Length); // Close the Stream object. dataStream.Close(); // Get the response. WebResponse response; try { response = request.GetResponse(); } catch { LogB.Warning("Error getting response"); this.ResultMessage = Catalog.GetString("Could not send file.") + "\n" + string.Format(Catalog.GetString("You are not connected to the Internet\nor {0} server is down."), serverUrl); return(false); } // Display the status. LogB.Information(((HttpWebResponse)response).StatusDescription); // Get the stream containing content returned by the server. dataStream = response.GetResponseStream(); // Open the stream using a StreamReader for easy access. StreamReader reader = new StreamReader(dataStream); // Read the content. string responseFromServer = reader.ReadToEnd(); // Display the content. LogB.Information(responseFromServer); // Clean up the streams. reader.Close(); dataStream.Close(); response.Close(); JsonValue result = JsonValue.Parse(responseFromServer); string crash_id = result["crash_id"]; LogB.Information("crash_id: ", crash_id); this.ResultMessage = Catalog.GetString("Log sent. Thank you."); return(true); }
protected void sqliteThings() { bool crashedBefore = checkIfChronojumpExitAbnormally(); if (crashedBefore) { if (chronojumpIsExecutingNTimes()) { quitNow = true; LogB.Error("Chronojump is already running."); Application.Quit(); return; } else { chronojumpCrashedBefore(); } } //print version of chronojump progVersion = UtilAll.ReadVersion(); LogB.Information("Chronojump version: {0}", progVersion); //to store user videos and photos Util.CreateMultimediaDirsIfNeeded(); //to store encoder data and graphs UtilEncoder.CreateEncoderDirIfNeeded(); //TODO: when a session is deleted, encoder data has to be deleted, also multimedia videos, I suppose. Show message to user warning about it //TODO: encoder weight auto written depending on person loaded, and changes if it changes person or weight //move database to new location if chronojump version is before 0.7 moveDatabaseToNewLocationIfNeeded(); LogB.Information("move? ended"); splashMessageChange(1); //checking database /* * splashMessage = "pre-connect"; * needUpdateSplashMessage = true; * Console.ReadLine(); */ Sqlite.CreateDir(); bool defaultDBLocation = Sqlite.Connect(); LogB.SQL("sqlite connected"); /* * splashMessage = "post-connect" + defaultDBLocation.ToString(); * needUpdateSplashMessage = true; * Console.ReadLine(); */ //Chech if the DB file exists if (!Sqlite.CheckTables(defaultDBLocation)) { LogB.SQL(Catalog.GetString("no tables, creating ...")); creatingDB = true; splashMessageChange(2); //creating database /* * splashMessage = "pre-create"; * needUpdateSplashMessage = true; * Console.ReadLine(); */ Sqlite.CreateDir(); Sqlite.CreateFile(); //Sqlite.CreateFile(defaultDBLocation); /* * splashMessage = "post-create"; * needUpdateSplashMessage = true; * Console.ReadLine(); */ createRunningFileName(runningFileName); Sqlite.CreateTables(false); //not server creatingDB = false; } else { LogB.SQL("doing backup"); //backup the database Util.BackupDirCreateIfNeeded(); splashMessageChange(3); //making db backup Util.BackupDatabase(); LogB.SQL("made a database backup"); //not compressed yet, it seems System.IO.Compression.DeflateStream and //System.IO.Compression.GZipStream are not in mono if (!Sqlite.IsSqlite3()) { bool ok = Sqlite.ConvertFromSqlite2To3(); if (!ok) { LogB.Error("problem with sqlite"); //check (spanish) //http://mail.gnome.org/archives/chronojump-devel-list/2008-March/msg00011.html string errorMessage = Catalog.GetString("Failed database conversion, ensure you have libsqlite3-0 installed. \nIf problems persist ask in chronojump-list"); errorMessage += "\n\n" + string.Format(Catalog.GetString("If you have no data on your database (you just installed Chronojump), you can fix this problem deleting this file: {0}"), Util.GetDatabaseDir() + Path.DirectorySeparatorChar + "chronojump.db") + "\n" + Catalog.GetString("And starting Chronojump again."); LogB.Error(errorMessage); messageToShowOnBoot += errorMessage; chronojumpHasToExit = true; return; } Sqlite.Connect(); } splashMessageChange(4); //updating DB updatingDB = true; if (Sqlite.ChangeDjToDJna()) { messageToShowOnBoot += Catalog.GetString("All DJ jumps have been renamed as 'DJna' (Drop Jumps with No Arms).") + "\n\n" + Catalog.GetString("If your Drop Jumps were executed using the arms, please rename them manually as 'DJa'.") + "\n"; } bool softwareIsNew = Sqlite.ConvertToLastChronojumpDBVersion(); updatingDB = false; if (!softwareIsNew) { //Console.Clear(); string errorMessage = string.Format(Catalog.GetString("Sorry, this Chronojump version ({0}) is too old for your database."), progVersion) + "\n" + Catalog.GetString("Please update Chronojump") + ":\n"; errorMessage += "http://chronojump.org"; //errorMessage += "\n\n" + Catalog.GetString("Press any key"); LogB.Error(errorMessage); messageToShowOnBoot += errorMessage; chronojumpHasToExit = true; } LogB.Information(Catalog.GetString("tables already created")); //check for bad Rjs (activate if program crashes and you use it in the same db before v.0.41) //SqliteJump.FindBadRjs(); createRunningFileName(runningFileName); } //splashMessageChange(5); //check for new version splashMessageChange(5); //connecting to server messageToShowOnBoot += recuperateBrokenEvents(); //connect to server to Ping versionAvailable = ""; /* * pingStart = false; * pingEnd = false; * * // disable server connection on start until server is not working on windows again * bool connectServerAtStart = false; * if(connectServerAtStart) { * thread = new Thread(new ThreadStart(findVersion)); * GLib.Idle.Add (new GLib.IdleHandler (PulseGTKPing)); * thread.Start(); * * //wait until pinging process start * while(! pingStart) { * } * } * else * on_find_version_cancelled(new object(), new EventArgs()); */ versionAvailable = Constants.ServerOffline; //doing ping using json methods /* * temporarily disabled on start * string machineID = SqlitePreferences.Select("machineID", false); * Json js = new Json(); * bool success = js.Ping(UtilAll.GetOS(), progVersion, machineID); * if(success) * LogB.Information(js.ResultMessage); * else * LogB.Error(js.ResultMessage); */ allSQLCallsDoneOnSqliteThingsThread = false; //wait until pinging ends (or it's cancelled) //while(! pingEnd) { //} Sqlite.Open(); string versionAvailableKnown = SqlitePreferences.Select("versionAvailable", true); if (versionAvailable != Constants.ServerOffline && new Version(versionAvailable) > new Version(progVersion)) { //check if available version is higher than known available version Version versionAvailableAsV = new Version(versionAvailable); Version versionAvailableKnownAsV; bool updateKnownVersion = false; if (versionAvailableKnown == "") { updateKnownVersion = true; } else { versionAvailableKnownAsV = new Version(versionAvailableKnown); if (versionAvailableAsV > versionAvailableKnownAsV) { updateKnownVersion = true; } } if (updateKnownVersion) { //is the first time we know about this new version //just write on db and show message to user SqlitePreferences.Update(Constants.PrefVersionAvailable, versionAvailable, true); versionAvailableKnown = versionAvailable; messageToShowOnBoot += string.Format(Catalog.GetString( "\nNew Chronojump version available on website.\nYour Chronojump version is: {1}"), versionAvailable, progVersion) + "\n\n" + Catalog.GetString("Please, update to new version.") + "\n"; } } //if chronojump chrashed before if (crashedBefore) { if (versionAvailableKnown.Length > 0 && new Version(versionAvailableKnown) > new Version(progVersion)) { messageToShowOnBoot += "\n" + Catalog.GetString("Chronojump crashed before.") + "\n" + Catalog.GetString("Please, update to new version: ") + versionAvailableKnown + "\n"; } else { messageToShowOnBoot += messageCrashedBefore; //SqlitePreferences.Update("videoOn", "False", true); } } splashMessageChange(6); //preparing main window //start as "simulated" SqlitePreferences.Update("simulated", "True", true); //dbcon opened Sqlite.Close(); allSQLCallsDoneOnSqliteThingsThread = true; LogB.SQL("all SQL calls done on sqliteThings thread"); UtilAll.IsWindows(); //only as additional info here //Application.Init(); needEndSplashWin = true; }