public void ExtractFile(String FileSource, String FileTarget) { FileStream FileISO = File.Open(FileName, FileMode.Open, FileAccess.Read); try { CDReader ReaderISO = new CDReader(FileISO, true); SparseStream _SourceStream = ReaderISO.OpenFile(FileSource, FileMode.Open, FileAccess.Read); Byte[] _ReadAllByte = new Byte[_SourceStream.Length]; _SourceStream.Read(_ReadAllByte, 0, _ReadAllByte.Length); _SourceStream.Close(); FileStream _FileCreated = new FileStream(FileTarget, FileMode.CreateNew); _FileCreated.Position = 0; _FileCreated.Write(_ReadAllByte, 0, _ReadAllByte.Length); _FileCreated.Close(); } catch (IOException ex) { if (ex.Message != "No such file") { Console.WriteLine("-----------------------------------------------------"); Console.WriteLine("ExtractFile(" + FileSource + ", " + FileTarget + ")"); Console.WriteLine(ex.Message); Console.WriteLine("-----------------------------------------------------"); } else { Console.WriteLine("ExtractFile(" + FileSource + ") --> " + Path.GetFileName(FileName)); } } FileISO.Close(); }
public override void Close() { using (new NtfsTransaction()) { base.Close(); _baseStream.Close(); UpdateMetadata(); } }
private void NewToolStripMenuItem_Click(object sender, EventArgs e) { if (fileLoaded) { string fname = Interaction.InputBox("Enter file name.", "Dreamcaster", "file.lua"); LuaFile file = new LuaFile(fname, "-- " + fname); SparseStream strm = fs.OpenFile(fname, FileMode.Create); byte[] data = Encoding.ASCII.GetBytes(file.data); strm.Write(data, 0, data.Length); strm.Close(); UpdateListbox(); } }
private void SaveToolStripMenuItem_Click(object sender, EventArgs e) { if (fileLoaded) { LuaFile file = m_luaFiles.SelectedItem as LuaFile; Console.WriteLine("Saving " + file.name); SparseStream strm = fs.OpenFile(file.name, FileMode.Create, FileAccess.Write); byte[] data = Encoding.ASCII.GetBytes(file.data); strm.Write(data, 0, data.Length); strm.Close(); Console.WriteLine("Saved"); UpdateListbox(); } }
public override void Close() { if (_baseStream == null) { return; } using (new NtfsTransaction()) { base.Close(); _baseStream.Close(); UpdateMetadata(); _baseStream = null; } }
private void CompileToolStripMenuItem_Click(object sender, EventArgs e) { if (fileLoaded) { UpdateListbox(); fs.DeleteDirectory("lua", true); fs.CreateDirectory("lua"); foreach (LuaFile file in lfiles) { Console.WriteLine("Writing " + file.name); SparseStream stream = fs.OpenFile(file.name, FileMode.Create); stream.Write(Encoding.ASCII.GetBytes(file.data), 0, file.data.Length); stream.Close(); Console.WriteLine("Wrote"); } MessageBox.Show("Finished saving.", "Dreamcaster"); } }
public static void ReadIsoFolder(DiscFileSystem cdReader, string sIsoPath, string sDestinationRootPath) { try { string[] saFiles = cdReader.GetFiles(sIsoPath); foreach (string sFile in saFiles) { DiscFileInfo dfiIso = cdReader.GetFileInfo(sFile); string sDestinationPath = Path.Combine(sDestinationRootPath, dfiIso.DirectoryName.Substring(0, dfiIso.DirectoryName.Length - 1)); if (!Directory.Exists(sDestinationPath)) { Directory.CreateDirectory(sDestinationPath); } string sDestinationFile = Path.Combine(sDestinationPath, dfiIso.Name); SparseStream streamIsoFile = cdReader.OpenFile(sFile, FileMode.Open); FileStream fsDest = new FileStream(sDestinationFile, FileMode.Create); byte[] baData = new byte[0x4000]; while (true) { int nReadCount = streamIsoFile.Read(baData, 0, baData.Length); if (nReadCount < 1) { break; } else { fsDest.Write(baData, 0, nReadCount); } } streamIsoFile.Close(); fsDest.Close(); } string[] saDirectories = cdReader.GetDirectories(sIsoPath); foreach (string sDirectory in saDirectories) { ReadIsoFolder(cdReader, sDirectory, sDestinationRootPath); } return; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
private void CopyDirectoriesAndFiles(FatFileSystem ffs, string parentDirectory) { foreach (var file in Directory.GetFiles(parentDirectory)) { SparseStream ss = ffs.OpenFile(file.Replace(InputRootDirectory, ""), FileMode.CreateNew); FileStream fs = new FileStream(file, FileMode.Open); byte[] bytes = new byte[fs.Length]; fs.Read(bytes, 0, (int)fs.Length); ss.Write(bytes, 0, (int)fs.Length); ss.Flush(); ss.Close(); ffs.SetAttributes(file.Replace(InputRootDirectory, ""), FileAttributes.Normal); } foreach (var directory in Directory.GetDirectories(parentDirectory)) { ffs.CreateDirectory(directory.Replace(InputRootDirectory, "")); CopyDirectoriesAndFiles(ffs, directory); } }
private void UpdateListbox() { Console.WriteLine("Updating listbox"); if (fileLoaded) { lfiles.Clear(); foreach (string i in fs.GetFiles("lua")) { Console.WriteLine("Adding " + i); SparseStream strm = fs.OpenFile(i, FileMode.Open); byte[] data = new byte[strm.Length]; strm.Read(data, 0, data.Length); strm.Close(); string sdata = Encoding.ASCII.GetString(data); LuaFile newfile = new LuaFile(i, sdata); lfiles.Add(newfile); } m_luaFiles.Items.Clear(); foreach (LuaFile file in lfiles) { m_luaFiles.Items.Add(file); } } }
public Byte[] ReadAllByte(String FileSource) { Byte[] result = { 0x0 }; FileStream FileISO = File.Open(FileName, FileMode.Open, FileAccess.Read); try { CDReader ReaderISO = new CDReader(FileISO, true); SparseStream _SourceStream = ReaderISO.OpenFile(FileSource, FileMode.Open, FileAccess.Read); Byte[] _ReadAllByte = new Byte[_SourceStream.Length]; _SourceStream.Read(_ReadAllByte, 0, _ReadAllByte.Length); result = _ReadAllByte; _SourceStream.Close(); } catch (Exception ex) { Console.WriteLine("-----------------------------------------------------"); Console.WriteLine("ReadAllByte(" + FileSource + ")"); Console.WriteLine(ex.Message); Console.WriteLine("-----------------------------------------------------"); } FileISO.Close(); return(result); }
public override void Close() { base.Close(); _wrapped.Close(); }
private void NewToolStripMenuItem1_Click(object sender, EventArgs e) { Console.WriteLine("Creating new project"); fileLoaded = true; string flasize = Interaction.InputBox("Enter lua & asset size in megabytes.", "Dreamcaster", "30"); long asSize = int.Parse(flasize) * 1024 * 1024; string fmdsize = Interaction.InputBox("Enter meta size in megabytes.", "Dreamcaster", "5"); long mdSize = int.Parse(fmdsize) * 1024 * 1024; string fname = Interaction.InputBox("Enter project name.", "Dreamcaster", "project.bin"); FileStream fst = File.Create(fname); Console.WriteLine("Asset Dat Size: " + asSize); Console.WriteLine("Media Dat Size: " + mdSize); Console.WriteLine("Total Dat Size: " + (asSize + mdSize)); disk = Disk.Initialize(fst, Ownership.None, asSize + mdSize); BiosPartitionTable table = BiosPartitionTable.Initialize(disk); table.Create(asSize, WellKnownPartitionType.WindowsFat, false); // main assets table.Create(mdSize, WellKnownPartitionType.WindowsFat, false); // meta fs = FatFileSystem.FormatPartition(disk, 0, "DHP1-LA"); // lua and assets mfs = FatFileSystem.FormatPartition(disk, 1, "DHP1-MD"); // metadata fs.CreateDirectory("lua"); mfs.CreateDirectory("mdlg"); mfs.CreateDirectory("gpst"); mfs.CreateDirectory(@"gpst\readonly"); SparseStream mstream = mfs.OpenFile(@"mdlg\licn.mdt", FileMode.OpenOrCreate); SparseStream stream = fs.OpenFile(@"lua\main.lua", FileMode.Create); string defaultstr = @"local key = '' -- this is the key that people will use to enter your Server -- if the key specified here is not the same as the key people use to join(e.g.the key is bivkoi and the user is joining with a key of "") -- then the connection will be denied, and if the key is blank and someone joins with a key the connection will be denied aswell. -- you can manually change how it accepts requests by changing the function peerhandle local game = DataModel:C('Factories'):C('GameLibrary') local characterfactory = DataModel:C('Factories'):C('CharacterFactory') local math = game.math local random = game:GenerateRandom(game:FindEntropy()) resolution = { 433, 426} function peerhandle(request) request:AcceptIfKey(key) end function peerdisconnect(peer, info, player) player:Destroy() end function peerconnect(peer, player) game:Debug('New Connection') player = characterfactory:NewPlayer('newpeer', peer) char = player:GetChar() char:Fill(0, 0, 0) player:SetGameTitle('Dreamscape') char:AddBrush(0, 0, 0)-- brush 0 black char:AddBrush(255, 0, 0)-- brush 1 red char:AddBrush(0, 255, 0)-- brush 2 green char:AddBrush(0, 0, 255)-- brush 3 blue char:AddBrush(255, 0, 255)-- brush 4 red + blue char:AddBrush(255, 255, 0)-- brush 5 red + green char:AddBrush(0, 255, 255)-- brush 6 green + blue char:AddBrush(255, 255, 255)-- brush 7 white char:AddBrush(127, 127, 127)-- brush 8 gray end function act(action, peer, player) end function getinfo() return '<head><style>body { font-family: arial; }</style></head><body><h1>Generic Dreamscape Server</h1></body>' end"; byte[] defautlbyt = Encoding.ASCII.GetBytes(defaultstr); stream.Write(defautlbyt, 0, defautlbyt.Length); defaultstr = m_file.Text; defautlbyt = Encoding.ASCII.GetBytes(defaultstr); mstream.Write(defautlbyt, 0, defautlbyt.Length); stream.Close(); mstream.Close(); UpdateListbox(); Text = "Dreamcaster -- " + fname; Console.WriteLine("Done"); }
void MainC(string[] args) { Disk disk = new Disk("server.bin"); PartitionTable partitions = disk.Partitions; PartitionInfo fs_pi = partitions[0]; FatFileSystem fs = new FatFileSystem(fs_pi.Open()); PartitionInfo mfs_pi = partitions[1]; FatFileSystem mfs = new FatFileSystem(mfs_pi.Open()); svtime = DateTime.Now.Ticks; Console.WriteLine("Starting..."); netListener = new EventBasedNetListener(); client = new NetManager(netListener, new XorEncryptLayer("dreamscape")); inetListener = new EventBasedNetListener(); iclient = new NetManager(inetListener); lua = new Lua(); gameInstance = new Instance("DataModel"); Factory factoryContainer = new Factory("Factories"); factoryContainer.Parent = gameInstance; CharacterFactory characterFactory = new CharacterFactory("CharacterFactory"); characterFactory.Parent = factoryContainer; GameLibrary gameLibrary = new GameLibrary("GameLibrary"); gameLibrary.Parent = factoryContainer; lua.LoadCLRPackage(); lua.DebugHook += Lua_DebugHook; SparseStream stream = fs.OpenFile("lua\\main.lua", FileMode.Open, FileAccess.Read); byte[] data = new byte[stream.Length]; stream.Read(data, 0, data.Length); string code = Encoding.ASCII.GetString(data); stream.Close(); lua["netwriter"] = new NetDataWriter(); lua["netserver"] = client; lua["DataModel"] = gameInstance; lua.DoString("import('dreamhost','dreamscape','System','NLua','LiteNetLib','LiteNetLib.Utils','dreamhost.lua')\n" + code, svtime.ToString()); this.characterFactory = characterFactory; client.Start(6698); Console.WriteLine("Server ready! Hosting on UDP port 6698."); client.AutoRecycle = true; netListener.ConnectionRequestEvent += (request) => { Console.WriteLine("Connection"); LuaFunction func = lua["peerhandle"] as LuaFunction; try { func.Call(request); } catch (Exception e) { request.Accept(); Console.WriteLine(e); } }; netListener.PeerDisconnectedEvent += (peer, info) => { Player plr = null; foreach (Player i in characterFactory.Children) { if (i.peer == peer) { plr = i; } } Console.WriteLine("Disconnect"); LuaFunction func = lua["peerdisconnect"] as LuaFunction; try { func.Call(peer, info, plr); } catch (Exception e) { Console.WriteLine(e); } }; netListener.PeerConnectedEvent += (peer) => { Player player = new Player(gameLibrary.FindEntropy().ToString(), peer); player.Parent = characterFactory; Console.WriteLine("Successful Connect"); LuaFunction func = lua["peerconnect"] as LuaFunction; try { func.Call(peer, player); } catch (Exception e) { Console.WriteLine(e); } }; netListener.NetworkReceiveEvent += NetworkReceive; Console.WriteLine("Starting info server..."); inetListener.PeerConnectedEvent += (peer) => { Console.WriteLine("Sending peer info"); NetDataWriter writer = new NetDataWriter(); LuaFunction func = lua["getinfo"] as LuaFunction; try { writer.Put(func.Call(peer).First() as string); } catch (Exception e) { Console.WriteLine(e); writer.Put("Please contact the <b>SYSOP</b> for this server.\n" + e); } peer.Send(writer, DeliveryMethod.ReliableSequenced); }; inetListener.ConnectionRequestEvent += (request) => { Console.WriteLine("Connected to info"); request.Accept(); }; iclient.Start(6699); iclient.AutoRecycle = true; Console.WriteLine("Info server ready! Hosting on UDP port 6699."); while (true) { client.PollEvents(); Thread.Sleep(15); } }