mirror of
https://git.alee14.me/shiftos-archive/ShiftOS_TheReturn.git
synced 2025-01-22 18:02:16 +00:00
ShiftOS is a hydra.
You pop one bug off, 2,000 more grow in its place.
This commit is contained in:
parent
2cede571ca
commit
bded9d1250
21 changed files with 441 additions and 181 deletions
10
ShiftOS.WinForms/Applications/About.Designer.cs
generated
10
ShiftOS.WinForms/Applications/About.Designer.cs
generated
|
@ -55,7 +55,7 @@ namespace ShiftOS.WinForms.Applications
|
|||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.lbshiftit = new System.Windows.Forms.Label();
|
||||
this.lbaboutdesc = new System.Windows.Forms.Label();
|
||||
this.lbaboutdesc = new System.Windows.Forms.TextBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
|
@ -94,11 +94,11 @@ namespace ShiftOS.WinForms.Applications
|
|||
this.lbaboutdesc.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lbaboutdesc.Location = new System.Drawing.Point(14, 126);
|
||||
this.lbaboutdesc.Location = new System.Drawing.Point(23, 158);
|
||||
this.lbaboutdesc.Multiline = true;
|
||||
this.lbaboutdesc.Name = "lbaboutdesc";
|
||||
this.lbaboutdesc.Size = new System.Drawing.Size(498, 328);
|
||||
this.lbaboutdesc.Size = new System.Drawing.Size(492, 302);
|
||||
this.lbaboutdesc.TabIndex = 3;
|
||||
this.lbaboutdesc.Text = "label2";
|
||||
//
|
||||
// About
|
||||
//
|
||||
|
@ -121,6 +121,6 @@ namespace ShiftOS.WinForms.Applications
|
|||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label lbshiftit;
|
||||
private System.Windows.Forms.Label lbaboutdesc;
|
||||
private System.Windows.Forms.TextBox lbaboutdesc;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -53,18 +53,73 @@ namespace ShiftOS.WinForms.Applications
|
|||
lbaboutdesc.Text = $@"ShiftOS
|
||||
Copyright (c) 2015-{DateTime.Now.Year} Michael VanOverbeek and ShiftOS devs
|
||||
|
||||
Engine version: Milestone 3, 1.0 Beta Series (Developer mode ON)
|
||||
Frontend version: 1.0 Beta 1.2
|
||||
Multi-user domain version: 1.0 Rolling-Release
|
||||
|
||||
Music courtesy of Selulance. Listen to the Fractal Forest album here:
|
||||
https://www.youtube.com/watch?v=LB5jAYDL3VU&t=913s
|
||||
Engine version: Milestone 4, 1.0 Beta Series (Developer mode ON)
|
||||
Frontend version: 1.0 Beta 2.5
|
||||
Digital Society version: 1.0 Rolling-Release
|
||||
Project: Unite version: 1.0 Beta 1.7
|
||||
|
||||
Special thanks to Philip Adams, the original creator of ShiftOS for helping us grow our community of amazing Shifters by featuring us on the YouTube Millionaire series and advertising us throughout various other series ran by him.
|
||||
|
||||
Also, thanks to Rylan Arbour, Victor Tran and the other community moderators and administrators for helping us keep the community peaceful.
|
||||
|
||||
Lastly, a huge special thanks to the community themselves - for testing, debugging, fixing, reporting bugs for, and enjoying our game even through its many failures, successes, revamps, etc. You guys are the reason we develop the game!";
|
||||
Lastly, a huge special thanks to the community themselves - for testing, debugging, fixing, reporting bugs for, and enjoying our game even through its many failures, successes, revamps, etc. You guys are the reason we develop the game!
|
||||
|
||||
=== Licensing information
|
||||
|
||||
ShiftOS is licensed under the MIT license.
|
||||
|
||||
Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the ""Software""), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED ""AS IS"", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
== Credit where credit is due
|
||||
|
||||
-- Development and staff team:
|
||||
- Rylan Arbour (Lead community administrator)
|
||||
- Victor Tran (Discord administrator)
|
||||
- cjhannah (ShiftFS backend developer)
|
||||
- AShifter (Project: Unite penetration tester)
|
||||
- arencllc (ShiftLetters developer)
|
||||
- Michael VanOverbeek (Lead developer, system administrator, the guy who wrote this text)
|
||||
- fixylol, Nebble, TravisNC, Neptune (Community moderators)
|
||||
- bandic00t_ (Skin Engine stresstesting)
|
||||
|
||||
-- System audio
|
||||
|
||||
- Default system event sounds (Infobox, Network Connecting, System Beeps) are from the original ShiftOS 0.0.x source code.
|
||||
- Ambient music list courtesy of https://www.youtube.com/channel/UC56Qctnsu8wAyvzf4Yx6LIw (ArgoFox | Royalty Free Music)
|
||||
|
||||
Tracklist:
|
||||
|
||||
Dylan Hardy - Strangely Unaffected
|
||||
Noxive - Home
|
||||
Dylan Hardy and Abraham Alberto - Slow Drift
|
||||
A Himitsu - Easier To Fade
|
||||
Noxive - Resilience
|
||||
Wanderflux - Visions
|
||||
Aerocity - Cold Weather Kids
|
||||
Aether - Wanderlust
|
||||
Aerocity - Love Lost
|
||||
|
||||
|
||||
Finally, special thanks to our Patreon supporters. Without you guys, our servers wouldn't be running, and you wouldn't be reading this.";
|
||||
}
|
||||
|
||||
public string GetEngineVersion()
|
||||
|
@ -107,7 +162,7 @@ Lastly, a huge special thanks to the community themselves - for testing, debuggi
|
|||
|
||||
public bool OnUnload()
|
||||
{
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public void OnUpgrade()
|
||||
|
|
|
@ -24,8 +24,10 @@
|
|||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ShiftOS.WinForms
|
||||
|
@ -37,5 +39,65 @@ namespace ShiftOS.WinForms
|
|||
{
|
||||
|
||||
}
|
||||
|
||||
internal static byte[] GetRandomSong()
|
||||
{
|
||||
var r = new Random().Next(1, 10);
|
||||
switch (r)
|
||||
{
|
||||
case 1:
|
||||
return Properties.Resources.Ambient1;
|
||||
case 2:
|
||||
return Properties.Resources.Ambient2;
|
||||
case 3:
|
||||
return Properties.Resources.Ambient3;
|
||||
case 4:
|
||||
return Properties.Resources.Ambient4;
|
||||
case 5:
|
||||
return Properties.Resources.Ambient5;
|
||||
case 6:
|
||||
return Properties.Resources.Ambient6;
|
||||
case 7:
|
||||
return Properties.Resources.Ambient7;
|
||||
case 8:
|
||||
return Properties.Resources.Ambient8;
|
||||
default:
|
||||
return Properties.Resources.Ambient9;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
internal static void StartAmbientLoop()
|
||||
{
|
||||
var athread = new Thread(() =>
|
||||
{
|
||||
MemoryStream str = null;
|
||||
NAudio.Wave.Mp3FileReader mp3 = null;
|
||||
NAudio.Wave.WaveOut o = null;
|
||||
while (!Engine.SaveSystem.ShuttingDown)
|
||||
{
|
||||
str = new MemoryStream(GetRandomSong());
|
||||
mp3 = new NAudio.Wave.Mp3FileReader(str);
|
||||
o = new NAudio.Wave.WaveOut();
|
||||
o.Init(mp3);
|
||||
bool c = false;
|
||||
o.Play();
|
||||
o.PlaybackStopped += (s, a) =>
|
||||
{
|
||||
c = true;
|
||||
};
|
||||
while (!c)
|
||||
Thread.Sleep(10);
|
||||
str.Dispose();
|
||||
o.Dispose();
|
||||
mp3.Dispose();
|
||||
}
|
||||
str?.Dispose();
|
||||
o?.Dispose();
|
||||
mp3?.Dispose();
|
||||
});
|
||||
athread.IsBackground = true;
|
||||
athread.Start();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,6 +49,19 @@ namespace ShiftOS.WinForms
|
|||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
//if ANYONE puts code before those two winforms config lines they will be declared a drunky. - Michael
|
||||
SaveSystem.PreDigitalSocietyConnection += () =>
|
||||
{
|
||||
Action completed = null;
|
||||
completed = () =>
|
||||
{
|
||||
SaveSystem.Ready = true;
|
||||
Engine.AudioManager.PlayCompleted -= completed;
|
||||
AudioManager.StartAmbientLoop();
|
||||
};
|
||||
Engine.AudioManager.PlayCompleted += completed;
|
||||
Engine.AudioManager.PlayStream(Properties.Resources.dial_up_modem_02);
|
||||
|
||||
};
|
||||
LoginManager.Init(new GUILoginFrontend());
|
||||
CrashHandler.SetGameMetadata(Assembly.GetExecutingAssembly());
|
||||
SkinEngine.SetIconProber(new ShiftOSIconProvider());
|
||||
|
|
110
ShiftOS.WinForms/Properties/Resources.Designer.cs
generated
110
ShiftOS.WinForms/Properties/Resources.Designer.cs
generated
|
@ -69,6 +69,96 @@ namespace ShiftOS.WinForms.Properties {
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
internal static byte[] Ambient1 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Ambient1", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
internal static byte[] Ambient2 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Ambient2", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
internal static byte[] Ambient3 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Ambient3", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
internal static byte[] Ambient4 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Ambient4", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
internal static byte[] Ambient5 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Ambient5", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
internal static byte[] Ambient6 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Ambient6", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
internal static byte[] Ambient7 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Ambient7", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
internal static byte[] Ambient8 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Ambient8", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Byte[].
|
||||
/// </summary>
|
||||
internal static byte[] Ambient9 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Ambient9", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
|
@ -994,22 +1084,18 @@ namespace ShiftOS.WinForms.Properties {
|
|||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to [
|
||||
/// //TEMPORARY
|
||||
/// {
|
||||
/// Name: "Desktop Widgets",
|
||||
/// Cost: 0,
|
||||
/// Description: "Temporary upgrade. Will be replaced by either a Shiftnet app or a story element.",
|
||||
/// Dependencies: "advanced_app_launcher;wm_free_placement",
|
||||
/// Category: "Work-in-progress"
|
||||
/// },
|
||||
///
|
||||
///
|
||||
///
|
||||
///// SCREENSAVER
|
||||
/// {
|
||||
/// Name: "Screensavers",
|
||||
/// Cost: 750,
|
||||
/// Description: "Like to leave your PC idle for long periods of time? Save some energy and keep your screen from being tired by hiding the desktop behind a black screen with an image on it." [rest of string was truncated]";.
|
||||
/// Description: "Like to leave your PC idle for long periods of time? Save some energy and keep your screen from being tired by hiding the desktop behind a black screen with an image on it.",
|
||||
/// Dependencies: "desktop",
|
||||
/// Category: "Enhancements",
|
||||
/// },
|
||||
/// {
|
||||
/// Name: "GUI Based Login Screen",
|
||||
/// Cost: 500,
|
||||
/// Description: "Tired of using the text-based login screen in ShiftOS? Well, we have a functioning window manager, and a functioning desktop, w [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
internal static string Shiftorium {
|
||||
get {
|
||||
|
|
|
@ -122,7 +122,7 @@
|
|||
AAEAAAD/////AQAAAAAAAAAEAQAAABZTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtCgAAAAdfYnVmZmVyB19v
|
||||
cmlnaW4JX3Bvc2l0aW9uB19sZW5ndGgJX2NhcGFjaXR5C19leHBhbmRhYmxlCV93cml0YWJsZQpfZXhw
|
||||
b3NhYmxlB19pc09wZW4dTWFyc2hhbEJ5UmVmT2JqZWN0K19faWRlbnRpdHkHAAAAAAAAAAACAggICAgB
|
||||
AQEBCQIAAAAAAAAAAAAAAJKjAACSowAAAAEAAQoPAgAAAJKjAAACUklGRoqjAABXQVZFZm10IBAAAAAB
|
||||
AQEBCQIAAAAAAAAAkqMAAJKjAACSowAAAAEAAQoPAgAAAJKjAAACUklGRoqjAABXQVZFZm10IBAAAAAB
|
||||
AAEARKwAAIhYAQACABAAZGF0YWajAAABAP7/AgD9/wMA/f8DAPz/BAD8/wQA/f8BAP//AAABAAAA//8C
|
||||
AP3/BAD9/wIAAAD//wIA//8BAAAAAAABAP//AQAAAAEAAAACAP7/AQABAAAAAQAAAAEAAAACAP7/AwD+
|
||||
/wIAAAD//wIA/v8DAP7/AwD9/wMA//8AAAIA/f8DAAAA//8BAAAA/v8CAP////8CAPz/BAD8/wMA/f8A
|
||||
|
@ -838,7 +838,7 @@
|
|||
AAEAAAD/////AQAAAAAAAAAEAQAAABZTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtCgAAAAdfYnVmZmVyB19v
|
||||
cmlnaW4JX3Bvc2l0aW9uB19sZW5ndGgJX2NhcGFjaXR5C19leHBhbmRhYmxlCV93cml0YWJsZQpfZXhw
|
||||
b3NhYmxlB19pc09wZW4dTWFyc2hhbEJ5UmVmT2JqZWN0K19faWRlbnRpdHkHAAAAAAAAAAACAggICAgB
|
||||
AQEBCQIAAAAAAAAAAAAAAEwYAABMGAAAAAEAAQoPAgAAAEwYAAACUklGRkQYAABXQVZFZm10IBAAAAAB
|
||||
AQEBCQIAAAAAAAAATBgAAEwYAABMGAAAAAEAAQoPAgAAAEwYAAACUklGRkQYAABXQVZFZm10IBAAAAAB
|
||||
AAEARKwAAIhYAQACABAAZGF0YSAYAAD/X5Vil2TRZUJmF2ZLZadjS2FqXt9aj1awUVtMc0b4PyQ57DFS
|
||||
KmUiSxoDEo4JEQGO+Bzwweee35zX9c+pyK7BGLsYtZqvlqoipneiW5/YnBCbFZq3mfOZEJvknD6fSqIg
|
||||
poaqcK/rtAq7i8FvyMrPgNdo347n7e9h+N8AXwnPERoaQSIlKrcx+zjmP0lGKUykUYJWs1pKXlJhpWMl
|
||||
|
@ -964,7 +964,7 @@
|
|||
<value>..\Resources\SweeperNormalFace.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="strings_en" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\strings_en.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
|
||||
<value>..\Resources\strings_en.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;iso-8859-1</value>
|
||||
</data>
|
||||
<data name="SweeperTile5" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\SweeperTile5.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
|
@ -974,7 +974,7 @@
|
|||
AAEAAAD/////AQAAAAAAAAAEAQAAABZTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtCgAAAAdfYnVmZmVyB19v
|
||||
cmlnaW4JX3Bvc2l0aW9uB19sZW5ndGgJX2NhcGFjaXR5C19leHBhbmRhYmxlCV93cml0YWJsZQpfZXhw
|
||||
b3NhYmxlB19pc09wZW4dTWFyc2hhbEJ5UmVmT2JqZWN0K19faWRlbnRpdHkHAAAAAAAAAAACAggICAgB
|
||||
AQEBCQIAAAAAAAAAAAAAAPwBHgD8AR4AAAEAAQoPAgAAAPwBHgACUklGRvQBHgBXQVZFZm10IBAAAAAB
|
||||
AQEBCQIAAAAAAAAA/AEeAPwBHgD8AR4AAAEAAQoPAgAAAPwBHgACUklGRvQBHgBXQVZFZm10IBAAAAAB
|
||||
AAIAgLsAAADuAgAEABAATElTVBQAAABJTkZPSUFSVAgAAABQaGlsaXAAAGRhdGG0AR4A//8CAAwA5v8a
|
||||
APT/8P8sAMf/OADX/xoA5v8bAPL/8/8aAOb/DQAOANb/KgDk/w4AAQDh/zwAt/9HAMj/GwACAPH/DgDy
|
||||
/w0AAQDy/xwA1f8sAO//5v84ALn/OQDk//7/AwD+/xAA4v8dANX/LADw//T/GgDl/w4AAADx/x4A4f8R
|
||||
|
@ -33831,7 +33831,7 @@
|
|||
AAEAAAD/////AQAAAAAAAAAEAQAAABZTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtCgAAAAdfYnVmZmVyB19v
|
||||
cmlnaW4JX3Bvc2l0aW9uB19sZW5ndGgJX2NhcGFjaXR5C19leHBhbmRhYmxlCV93cml0YWJsZQpfZXhw
|
||||
b3NhYmxlB19pc09wZW4dTWFyc2hhbEJ5UmVmT2JqZWN0K19faWRlbnRpdHkHAAAAAAAAAAACAggICAgB
|
||||
AQEBCQIAAAAAAAAAAAAAAPBWAADwVgAAAAEAAQoPAgAAAPBWAAACUklGRuhWAABXQVZFZm10IBAAAAAB
|
||||
AQEBCQIAAAAAAAAA8FYAAPBWAADwVgAAAAEAAQoPAgAAAPBWAAACUklGRuhWAABXQVZFZm10IBAAAAAB
|
||||
AAEARKwAAIhYAQACABAAZGF0YcRWAAAAAGQL6gtkDL8MEA3kDLUMaAwUDKULKwuYCvcJQAl4CJ0Hrwaw
|
||||
BaAEfgNQAg4Bwf9p/v/8mfsn+rD4OPe59T/0wPJH8dPvYu7+7JzrTeoG6dLnreaX5Z/kruPl4jHinOEk
|
||||
4cTgh+Bl4GLgguDC4B7hpeFC4g3j7uP35B/mZufO6FXq9eu67ZHviPGT87L15/cr+oL84f5QAcMDPwa9
|
||||
|
@ -34456,7 +34456,7 @@
|
|||
AAEAAAD/////AQAAAAAAAAAEAQAAABZTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtCgAAAAdfYnVmZmVyB19v
|
||||
cmlnaW4JX3Bvc2l0aW9uB19sZW5ndGgJX2NhcGFjaXR5C19leHBhbmRhYmxlCV93cml0YWJsZQpfZXhw
|
||||
b3NhYmxlB19pc09wZW4dTWFyc2hhbEJ5UmVmT2JqZWN0K19faWRlbnRpdHkHAAAAAAAAAAACAggICAgB
|
||||
AQEBCQIAAAAAAAAAAAAAAIwWAACMFgAAAAEAAQoPAgAAAIwWAAACUklGRoQWAABXQVZFZm10IBAAAAAB
|
||||
AQEBCQIAAAAAAAAAjBYAAIwWAACMFgAAAAEAAQoPAgAAAIwWAAACUklGRoQWAABXQVZFZm10IBAAAAAB
|
||||
AAEARKwAAIhYAQACABAAZGF0YWAWAAAAAKYLIxdYIhQtQjexQFBJ81CUVwddTmFLZP9lXmZqZSRjl1/J
|
||||
WtFUu02mRao84jJzKHsdJRKPBub6TO/q4+XYZM6FxG67ObMCrOel8aA9ncuar5nimWybQZ5eoq+nKa6t
|
||||
tTC+hcec0U3cbefr8on+MQq6FfQgxSsFNo8/R0gRUMpWblzSYAFk2WVlZpxlfmMbYHJboVWsTrdG1D0l
|
||||
|
@ -34573,4 +34573,31 @@
|
|||
<data name="SuperDesk screenshot" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\SuperDesk screenshot.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="Ambient1" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Ambient1.mp3;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="Ambient2" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Ambient2.mp3;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="Ambient3" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Ambient3.mp3;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="Ambient4" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Ambient4.mp3;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="Ambient5" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Ambient5.mp3;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="Ambient6" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Ambient6.mp3;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="Ambient7" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Ambient7.mp3;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="Ambient8" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Ambient8.mp3;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="Ambient9" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Ambient9.mp3;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
BIN
ShiftOS.WinForms/Resources/Ambient1.mp3
Normal file
BIN
ShiftOS.WinForms/Resources/Ambient1.mp3
Normal file
Binary file not shown.
BIN
ShiftOS.WinForms/Resources/Ambient2.mp3
Normal file
BIN
ShiftOS.WinForms/Resources/Ambient2.mp3
Normal file
Binary file not shown.
BIN
ShiftOS.WinForms/Resources/Ambient3.mp3
Normal file
BIN
ShiftOS.WinForms/Resources/Ambient3.mp3
Normal file
Binary file not shown.
BIN
ShiftOS.WinForms/Resources/Ambient4.mp3
Normal file
BIN
ShiftOS.WinForms/Resources/Ambient4.mp3
Normal file
Binary file not shown.
BIN
ShiftOS.WinForms/Resources/Ambient5.mp3
Normal file
BIN
ShiftOS.WinForms/Resources/Ambient5.mp3
Normal file
Binary file not shown.
BIN
ShiftOS.WinForms/Resources/Ambient6.mp3
Normal file
BIN
ShiftOS.WinForms/Resources/Ambient6.mp3
Normal file
Binary file not shown.
BIN
ShiftOS.WinForms/Resources/Ambient7.mp3
Normal file
BIN
ShiftOS.WinForms/Resources/Ambient7.mp3
Normal file
Binary file not shown.
BIN
ShiftOS.WinForms/Resources/Ambient8.mp3
Normal file
BIN
ShiftOS.WinForms/Resources/Ambient8.mp3
Normal file
Binary file not shown.
BIN
ShiftOS.WinForms/Resources/Ambient9.mp3
Normal file
BIN
ShiftOS.WinForms/Resources/Ambient9.mp3
Normal file
Binary file not shown.
|
@ -757,6 +757,15 @@
|
|||
<None Include="Resources\ShiftnetServices.txt" />
|
||||
<None Include="Resources\3beepvirus.wav" />
|
||||
<None Include="Resources\dial-up-modem-02.wav" />
|
||||
<None Include="Resources\Ambient1.mp3" />
|
||||
<None Include="Resources\Ambient2.mp3" />
|
||||
<None Include="Resources\Ambient3.mp3" />
|
||||
<None Include="Resources\Ambient4.mp3" />
|
||||
<None Include="Resources\Ambient5.mp3" />
|
||||
<None Include="Resources\Ambient6.mp3" />
|
||||
<None Include="Resources\Ambient7.mp3" />
|
||||
<None Include="Resources\Ambient8.mp3" />
|
||||
<None Include="Resources\Ambient9.mp3" />
|
||||
<Content Include="Resources\fileiconcf.bmp" />
|
||||
<None Include="Resources\infobox.wav" />
|
||||
<None Include="Resources\typesound.wav" />
|
||||
|
|
|
@ -223,9 +223,9 @@ namespace ShiftOS.Engine
|
|||
/// </summary>
|
||||
internal static void Exit()
|
||||
{
|
||||
OnExit?.Invoke();
|
||||
//disconnect from MUD
|
||||
ServerManager.Disconnect();
|
||||
Environment.Exit(0);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -47,9 +47,12 @@ namespace ShiftOS.Engine
|
|||
/// </summary>
|
||||
public static void Stop()
|
||||
{
|
||||
_out?.Stop();
|
||||
_reader?.Dispose();
|
||||
_out?.Dispose();
|
||||
Desktop.InvokeOnWorkerThread(() =>
|
||||
{
|
||||
_out?.Stop();
|
||||
_reader?.Dispose();
|
||||
_out?.Dispose();
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -366,7 +366,6 @@ namespace ShiftOS.Engine
|
|||
public static bool Shutdown()
|
||||
{
|
||||
TerminalBackend.InvokeCommand("sos.save");
|
||||
SaveSystem.ShuttingDown = true;
|
||||
AppearanceManager.Exit();
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -52,6 +52,9 @@ namespace ShiftOS.Engine
|
|||
|
||||
public static ClientSave CurrentUser { get; set; }
|
||||
|
||||
public static bool Ready = false;
|
||||
|
||||
public static event Action PreDigitalSocietyConnection;
|
||||
|
||||
public static Save CurrentSave { get; set; }
|
||||
|
||||
|
@ -118,6 +121,18 @@ namespace ShiftOS.Engine
|
|||
|
||||
Console.WriteLine("[inetd] Connecting to network...");
|
||||
|
||||
Ready = false;
|
||||
|
||||
if (PreDigitalSocietyConnection != null)
|
||||
{
|
||||
PreDigitalSocietyConnection?.Invoke();
|
||||
|
||||
while (!Ready)
|
||||
{
|
||||
Thread.Sleep(10);
|
||||
}
|
||||
}
|
||||
|
||||
if (defaultConf.ConnectToMud == true)
|
||||
{
|
||||
bool guidReceived = false;
|
||||
|
|
|
@ -213,211 +213,201 @@ namespace ShiftOS.Engine
|
|||
{
|
||||
if (Shiftorium.UpgradeAttributesUnlocked(method))
|
||||
{
|
||||
if (CanRunRemotely(method, isRemote))
|
||||
foreach (var ma in method.GetCustomAttributes(false))
|
||||
{
|
||||
foreach (var ma in method.GetCustomAttributes(false))
|
||||
if (ma is Command)
|
||||
{
|
||||
if (ma is Command)
|
||||
var cmd = ma as Command;
|
||||
if (text.Split('.')[1] == cmd.name)
|
||||
{
|
||||
var cmd = ma as Command;
|
||||
if (text.Split('.')[1] == cmd.name)
|
||||
if (KernelWatchdog.IsSafe(method))
|
||||
{
|
||||
if (KernelWatchdog.IsSafe(method))
|
||||
if (KernelWatchdog.CanRunOffline(method))
|
||||
{
|
||||
if (KernelWatchdog.CanRunOffline(method))
|
||||
{
|
||||
var attr = method.GetCustomAttribute<CommandObsolete>();
|
||||
var attr = method.GetCustomAttribute<CommandObsolete>();
|
||||
|
||||
if (attr != null)
|
||||
if (attr != null)
|
||||
{
|
||||
string newcommand = attr.newcommand;
|
||||
if (attr.warn)
|
||||
{
|
||||
string newcommand = attr.newcommand;
|
||||
if (attr.warn)
|
||||
{
|
||||
Console.WriteLine(Localization.Parse((newcommand == "" ? "{ERROR}" : "{WARN}") + attr.reason, new Dictionary<string, string>() {
|
||||
Console.WriteLine(Localization.Parse((newcommand == "" ? "{ERROR}" : "{WARN}") + attr.reason, new Dictionary<string, string>() {
|
||||
{"%newcommand", newcommand}
|
||||
}));
|
||||
}
|
||||
if (newcommand != "")
|
||||
{
|
||||
// redo the entire process running newcommand
|
||||
|
||||
return RunClient(newcommand, args);
|
||||
}
|
||||
}
|
||||
|
||||
var requiresArgs = method.GetCustomAttributes<RequiresArgument>();
|
||||
bool error = false;
|
||||
bool providedusage = false;
|
||||
|
||||
foreach (RequiresArgument argument in requiresArgs)
|
||||
if (newcommand != "")
|
||||
{
|
||||
if (!args.ContainsKey(argument.argument))
|
||||
{
|
||||
// redo the entire process running newcommand
|
||||
|
||||
if (!providedusage)
|
||||
{
|
||||
string usageparse = "{COMMAND_" + ns.name.ToUpper() + "_" + cmd.name.ToUpper() + "_USAGE}";
|
||||
if (usageparse == Localization.Parse(usageparse))
|
||||
usageparse = "";
|
||||
else
|
||||
usageparse = Shiftorium.UpgradeInstalled("help_usage") ? Localization.Parse("{ERROR}{USAGE}" + usageparse, new Dictionary<string, string>() {
|
||||
return RunClient(newcommand, args);
|
||||
}
|
||||
}
|
||||
|
||||
var requiresArgs = method.GetCustomAttributes<RequiresArgument>();
|
||||
bool error = false;
|
||||
bool providedusage = false;
|
||||
|
||||
foreach (RequiresArgument argument in requiresArgs)
|
||||
{
|
||||
if (!args.ContainsKey(argument.argument))
|
||||
{
|
||||
|
||||
if (!providedusage)
|
||||
{
|
||||
string usageparse = "{COMMAND_" + ns.name.ToUpper() + "_" + cmd.name.ToUpper() + "_USAGE}";
|
||||
if (usageparse == Localization.Parse(usageparse))
|
||||
usageparse = "";
|
||||
else
|
||||
usageparse = Shiftorium.UpgradeInstalled("help_usage") ? Localization.Parse("{ERROR}{USAGE}" + usageparse, new Dictionary<string, string>() {
|
||||
{"%ns", ns.name},
|
||||
{"%cmd", cmd.name}
|
||||
}) : "";
|
||||
|
||||
Console.WriteLine(usageparse);
|
||||
Console.WriteLine(usageparse);
|
||||
|
||||
providedusage = true;
|
||||
}
|
||||
if (Shiftorium.UpgradeInstalled("help_usage"))
|
||||
{
|
||||
Console.WriteLine(Localization.Parse("{ERROR_ARGUMENT_REQUIRED}", new Dictionary<string, string>() {
|
||||
providedusage = true;
|
||||
}
|
||||
if (Shiftorium.UpgradeInstalled("help_usage"))
|
||||
{
|
||||
Console.WriteLine(Localization.Parse("{ERROR_ARGUMENT_REQUIRED}", new Dictionary<string, string>() {
|
||||
{"%argument", argument.argument}
|
||||
}));
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine(Localization.Parse("{ERROR_ARGUMENT_REQUIRED_NO_USAGE}"));
|
||||
}
|
||||
|
||||
error = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine(Localization.Parse("{ERROR_ARGUMENT_REQUIRED_NO_USAGE}"));
|
||||
}
|
||||
|
||||
if (error)
|
||||
{
|
||||
throw new Exception("{ERROR_COMMAND_WRONG}");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
return (bool)method.Invoke(null, new[] { args });
|
||||
}
|
||||
catch (TargetInvocationException e)
|
||||
{
|
||||
Console.WriteLine(Localization.Parse("{ERROR_EXCEPTION_THROWN_IN_METHOD}"));
|
||||
Console.WriteLine(e.InnerException.Message);
|
||||
Console.WriteLine(e.InnerException.StackTrace);
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return (bool)method.Invoke(null, new object[] { });
|
||||
error = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.Write("<");
|
||||
ConsoleEx.Bold = true;
|
||||
ConsoleEx.ForegroundColor = ConsoleColor.DarkRed;
|
||||
Console.Write("session_mgr");
|
||||
ConsoleEx.ForegroundColor = SkinEngine.LoadedSkin.TerminalForeColorCC;
|
||||
ConsoleEx.Bold = false;
|
||||
Console.Write(">");
|
||||
ConsoleEx.Italic = true;
|
||||
ConsoleEx.ForegroundColor = ConsoleColor.DarkYellow;
|
||||
Console.WriteLine(" You cannot run this command while disconnected from the multi-user domain..");
|
||||
return true;
|
||||
|
||||
if (error)
|
||||
{
|
||||
throw new Exception("{ERROR_COMMAND_WRONG}");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
return (bool)method.Invoke(null, new[] { args });
|
||||
}
|
||||
catch (TargetInvocationException e)
|
||||
{
|
||||
Console.WriteLine(Localization.Parse("{ERROR_EXCEPTION_THROWN_IN_METHOD}"));
|
||||
Console.WriteLine(e.InnerException.Message);
|
||||
Console.WriteLine(e.InnerException.StackTrace);
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return (bool)method.Invoke(null, new object[] { });
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (SaveSystem.CurrentUser.Permissions == Objects.UserPermissions.Admin)
|
||||
{
|
||||
Infobox.PromptText("Elevate to root mode", "This command cannot be run as a regular user. To run this command, please enter your password to elevate to root mode temporarily.", (pass) =>
|
||||
{
|
||||
if (pass == SaveSystem.CurrentUser.Password)
|
||||
{
|
||||
KernelWatchdog.EnterKernelMode();
|
||||
RunClient(text, args, isRemote);
|
||||
KernelWatchdog.LeaveKernelMode();
|
||||
}
|
||||
else
|
||||
{
|
||||
Infobox.Show("Access denied.", "You did not type in the correct password.");
|
||||
}
|
||||
}, true);
|
||||
return true;
|
||||
}
|
||||
Console.Write("<");
|
||||
ConsoleEx.Bold = true;
|
||||
ConsoleEx.ForegroundColor = ConsoleColor.DarkRed;
|
||||
Console.Write("watchdog");
|
||||
Console.Write("session_mgr");
|
||||
ConsoleEx.ForegroundColor = SkinEngine.LoadedSkin.TerminalForeColorCC;
|
||||
ConsoleEx.Bold = false;
|
||||
Console.Write(">");
|
||||
ConsoleEx.Italic = true;
|
||||
ConsoleEx.ForegroundColor = ConsoleColor.DarkYellow;
|
||||
Console.WriteLine(" You cannot run this command. You do not have permission. Incident reported.");
|
||||
KernelWatchdog.Log("potential_sys_breach", "user attempted to run kernel mode command " + text + " - watchdog has prevented this, good sir.");
|
||||
Console.WriteLine(" You cannot run this command while disconnected from the multi-user domain..");
|
||||
return true;
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (SaveSystem.CurrentUser.Permissions == Objects.UserPermissions.Admin)
|
||||
{
|
||||
Infobox.PromptText("Elevate to root mode", "This command cannot be run as a regular user. To run this command, please enter your password to elevate to root mode temporarily.", (pass) =>
|
||||
{
|
||||
if (pass == SaveSystem.CurrentUser.Password)
|
||||
{
|
||||
KernelWatchdog.EnterKernelMode();
|
||||
RunClient(text, args, isRemote);
|
||||
KernelWatchdog.LeaveKernelMode();
|
||||
}
|
||||
else
|
||||
{
|
||||
Infobox.Show("Access denied.", "You did not type in the correct password.");
|
||||
}
|
||||
}, true);
|
||||
return true;
|
||||
}
|
||||
Console.Write("<");
|
||||
ConsoleEx.Bold = true;
|
||||
ConsoleEx.ForegroundColor = ConsoleColor.DarkRed;
|
||||
Console.Write("watchdog");
|
||||
ConsoleEx.ForegroundColor = SkinEngine.LoadedSkin.TerminalForeColorCC;
|
||||
ConsoleEx.Bold = false;
|
||||
Console.Write(">");
|
||||
ConsoleEx.Italic = true;
|
||||
ConsoleEx.ForegroundColor = ConsoleColor.DarkYellow;
|
||||
Console.WriteLine(" You cannot run this command. You do not have permission. Incident reported.");
|
||||
KernelWatchdog.Log("potential_sys_breach", "user attempted to run kernel mode command " + text + " - watchdog has prevented this, good sir.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
Console.WriteLine(text + " cannot be ran in a remote session");
|
||||
Console.Write("<");
|
||||
ConsoleEx.Bold = true;
|
||||
ConsoleEx.ForegroundColor = ConsoleColor.DarkRed;
|
||||
Console.Write("session_mgr");
|
||||
ConsoleEx.ForegroundColor = SkinEngine.LoadedSkin.TerminalForeColorCC;
|
||||
ConsoleEx.Bold = false;
|
||||
Console.Write(">");
|
||||
ConsoleEx.Italic = true;
|
||||
ConsoleEx.ForegroundColor = ConsoleColor.DarkYellow;
|
||||
Console.WriteLine(" You cannot run this command while disconnected from the multi-user domain..");
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if (SaveSystem.CurrentUser.Permissions == Objects.UserPermissions.Admin)
|
||||
{
|
||||
Infobox.PromptText("Elevate to root mode", "This command cannot be run as a regular user. To run this command, please enter your password to elevate to root mode temporarily.", (pass) =>
|
||||
{
|
||||
if (pass == SaveSystem.CurrentUser.Password)
|
||||
{
|
||||
KernelWatchdog.EnterKernelMode();
|
||||
RunClient(text, args, isRemote);
|
||||
KernelWatchdog.LeaveKernelMode();
|
||||
}
|
||||
else
|
||||
{
|
||||
Infobox.Show("Access denied.", "You did not type in the correct password.");
|
||||
}
|
||||
}, true);
|
||||
return true;
|
||||
}
|
||||
Console.Write("<");
|
||||
ConsoleEx.Bold = true;
|
||||
ConsoleEx.ForegroundColor = ConsoleColor.DarkRed;
|
||||
Console.Write("session_mgr");
|
||||
Console.Write("watchdog");
|
||||
ConsoleEx.ForegroundColor = SkinEngine.LoadedSkin.TerminalForeColorCC;
|
||||
ConsoleEx.Bold = false;
|
||||
Console.Write(">");
|
||||
ConsoleEx.Italic = true;
|
||||
ConsoleEx.ForegroundColor = ConsoleColor.DarkYellow;
|
||||
Console.WriteLine(" You cannot run this command while disconnected from the multi-user domain..");
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if (SaveSystem.CurrentUser.Permissions == Objects.UserPermissions.Admin)
|
||||
{
|
||||
Infobox.PromptText("Elevate to root mode", "This command cannot be run as a regular user. To run this command, please enter your password to elevate to root mode temporarily.", (pass) =>
|
||||
{
|
||||
if (pass == SaveSystem.CurrentUser.Password)
|
||||
{
|
||||
KernelWatchdog.EnterKernelMode();
|
||||
RunClient(text, args, isRemote);
|
||||
KernelWatchdog.LeaveKernelMode();
|
||||
}
|
||||
else
|
||||
{
|
||||
Infobox.Show("Access denied.", "You did not type in the correct password.");
|
||||
}
|
||||
}, true);
|
||||
Console.WriteLine(" You cannot run this command. You do not have permission. Incident reported.");
|
||||
KernelWatchdog.Log("potential_sys_breach", "user attempted to run kernel mode command " + text + " - watchdog has prevented this, good sir.");
|
||||
return true;
|
||||
}
|
||||
Console.Write("<");
|
||||
ConsoleEx.Bold = true;
|
||||
ConsoleEx.ForegroundColor = ConsoleColor.DarkRed;
|
||||
Console.Write("watchdog");
|
||||
ConsoleEx.ForegroundColor = SkinEngine.LoadedSkin.TerminalForeColorCC;
|
||||
ConsoleEx.Bold = false;
|
||||
Console.Write(">");
|
||||
ConsoleEx.Italic = true;
|
||||
ConsoleEx.ForegroundColor = ConsoleColor.DarkYellow;
|
||||
Console.WriteLine(" You cannot run this command. You do not have permission. Incident reported.");
|
||||
KernelWatchdog.Log("potential_sys_breach", "user attempted to run kernel mode command " + text + " - watchdog has prevented this, good sir.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -429,6 +419,7 @@ namespace ShiftOS.Engine
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void PrintPrompt()
|
||||
{
|
||||
if (SaveSystem.CurrentSave != null && CurrentUser != null)
|
||||
|
|
Loading…
Reference in a new issue