コード例 #1
0
ファイル: Chat.cs プロジェクト: VulpesSARL/Fox-SDC
        public RESTStatus SendChatMessageToServer(SQLLib sql, PushChatMessage ChatMessage, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ComputerLogin) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            string MachineID = ni.Username;

            lock (ni.sqllock)
            {
                Int64?ID = sql.InsertMultiDataID("Chats",
                                                 new SQLData("MachineID", MachineID),
                                                 new SQLData("DT", DateTime.UtcNow),
                                                 new SQLData("Read", 0),
                                                 new SQLData("ToClient", 0),
                                                 new SQLData("Name", ni.Name),
                                                 new SQLData("Text", ChatMessage.Text));
            }
            return(RESTStatus.Success);
        }
コード例 #2
0
        public RESTStatus FinaliseUpload(SQLLib sql, object dummy, NetworkConnectionInfo ni)
        {
            if (ni.Upload == null)
            {
                ni.Error   = "Upload is not running";
                ni.ErrorID = ErrorFlags.UploadNotRunning;
                return(RESTStatus.Fail);
            }

            if (ni.Upload.Data == null)
            {
                ni.Error   = "No data";
                ni.ErrorID = ErrorFlags.NoData;
                return(RESTStatus.Fail);
            }

            if (ni.Upload.Size != ni.Upload.CurrentPosition)
            {
                ni.Error   = "Upload not completed";
                ni.ErrorID = ErrorFlags.UploadNotCompleted;
                return(RESTStatus.Fail);
            }

            switch (ni.Upload.FileType)
            {
            case FlagsConst.Document_Type_Package:
            {
                ni.Upload.Data.Close();
                PackageInstaller pki = new PackageInstaller();
                string           ErrorText;
                PKGStatus        res;
                PKGRecieptData   reciept;
                List <byte[]>    CER = PolicyCertificates.GetPolicyCertificates(sql);
                if (pki.InstallPackage(Settings.Default.DataPath + ni.Upload.TempFilename, CER, PackageInstaller.InstallMode.TestPackageOnly, false, out ErrorText, out res, out reciept) == false)
                {
                    try
                    {
                        CommonUtilities.SpecialDeleteFile(Settings.Default.DataPath + ni.Upload.TempFilename);
                    }
                    catch
                    {
                    }
                    ni.Error   = "Package contains errors: " + ErrorText;
                    ni.ErrorID = ErrorFlags.FaultyData;
                    ni.Upload  = null;
                    return(RESTStatus.Fail);
                }


                string GUID         = Guid.NewGuid().ToString();
                string Filename     = "PKG_" + GUID + ".foxpkg";
                string FilenameMeta = "PKG_" + GUID + ".meta.foxpkg";

                File.Move(Settings.Default.DataPath + ni.Upload.TempFilename, Settings.Default.DataPath + Filename);

                if (pki.CreateMetaDataPackage(Settings.Default.DataPath + Filename, Settings.Default.DataPath + FilenameMeta, out ErrorText) == false)
                {
                    try
                    {
                        CommonUtilities.SpecialDeleteFile(Settings.Default.DataPath + Filename);
                    }
                    catch { }
                    try
                    {
                        CommonUtilities.SpecialDeleteFile(Settings.Default.DataPath + FilenameMeta);
                    }
                    catch { }
                    ni.Error   = "Cannot create meta Package: " + ErrorText;
                    ni.ErrorID = ErrorFlags.FaultyData;
                    ni.Upload  = null;
                    return(RESTStatus.Fail);
                }


                if (pki.PackageInfo(Settings.Default.DataPath + Filename, CER, out ErrorText) == false)
                {
                    try
                    {
                        CommonUtilities.SpecialDeleteFile(Settings.Default.DataPath + Filename);
                    }
                    catch { }
                    try
                    {
                        CommonUtilities.SpecialDeleteFile(Settings.Default.DataPath + FilenameMeta);
                    }
                    catch { }
                    ni.Error   = "Cannot read Package Info: " + ErrorText;
                    ni.ErrorID = ErrorFlags.FaultyData;
                    ni.Upload  = null;
                    return(RESTStatus.Fail);
                }

                Int64?NewID = null;

                lock (ni.sqllock)
                {
                    NewID = sql.InsertMultiDataID("Packages",
                                                  new SQLData("PackageID", pki.PackageInfoData.PackageID),
                                                  new SQLData("Version", pki.PackageInfoData.VersionID),
                                                  new SQLData("Title", pki.PackageInfoData.Title),
                                                  new SQLData("Description", pki.PackageInfoData.Description),
                                                  new SQLData("Filename", Filename),
                                                  new SQLData("MetaFilename", FilenameMeta),
                                                  new SQLData("Size", ni.Upload.Size));
                }

                if (NewID == null)
                {
                    try
                    {
                        CommonUtilities.SpecialDeleteFile(Settings.Default.DataPath + Filename);
                    }
                    catch { }
                    try
                    {
                        CommonUtilities.SpecialDeleteFile(Settings.Default.DataPath + FilenameMeta);
                    }
                    catch { }
                    ni.Error = "Error storing data";
                    return(RESTStatus.Fail);
                }

                this.NewID          = new NewUploadDataID();
                this.NewID.NewID    = NewID.Value;
                this.NewID.FileType = ni.Upload.FileType;

                ni.Upload = null;


                break;
            }

            //case FlagsConst.Document_Type_Invoice:
            //case FlagsConst.Document_Type_Voucher:
            //case FlagsConst.Document_Type_ClientData:
            //    {
            //        ni.Error = "Cannot use this function";
            //        return (false);
            //    }
            default:
            {
                ni.Error   = "Invalid type";
                ni.ErrorID = ErrorFlags.InvalidType;
                return(RESTStatus.Fail);
            }
            }

            return(RESTStatus.Success);
        }
コード例 #3
0
        public RESTStatus NewUploadReqAgentToServer(SQLLib sql, FileUploadData uploadreq, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            if (uploadreq == null)
            {
                ni.Error   = "Invalid data";
                ni.ErrorID = ErrorFlags.InvalidValue;
                return(RESTStatus.Fail);
            }

            lock (ni.sqllock)
            {
                if (Computers.MachineExists(sql, uploadreq.MachineID) == false)
                {
                    ni.Error   = "Invalid data";
                    ni.ErrorID = ErrorFlags.InvalidValue;
                    return(RESTStatus.Fail);
                }
            }

            if (string.IsNullOrEmpty(uploadreq.RemoteFileLocation) == true)
            {
                ni.Error   = "No Filename";
                ni.ErrorID = ErrorFlags.InvalidValue;
                return(RESTStatus.Fail);
            }

            NewID = new NetInt64();

            Int64?id = null;

            lock (ni.sqllock)
            {
                id = sql.InsertMultiDataID("FileTransfers",
                                           new SQLData("MachineID", uploadreq.MachineID),
                                           new SQLData("RemoteFileLocation", uploadreq.RemoteFileLocation),
                                           new SQLData("ServerFile", ""),
                                           new SQLData("Direction", 1),
                                           new SQLData("MD5Sum", ""),
                                           new SQLData("Size", 0),
                                           new SQLData("ProgressSize", 0),
                                           new SQLData("DTUpdated", DateTime.UtcNow),
                                           new SQLData("RequestOnly", 1),
                                           new SQLData("OverrideMeteredConnection", uploadreq.OverrideMeteredConnection),
                                           new SQLData("FileLastModified", DateTime.UtcNow));
            }
            if (id == null)
            {
                ni.Error   = "DB error";
                ni.ErrorID = ErrorFlags.SystemError;
                return(RESTStatus.Fail);
            }

            NewID.Data = id.Value;

            return(RESTStatus.Success);
        }
コード例 #4
0
ファイル: Chat.cs プロジェクト: VulpesSARL/Fox-SDC
        public RESTStatus SendChatmessageToClient(SQLLib sql, PushChatMessage ChatMessage, NetworkConnectionInfo ni, string MachineID)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            string guid = Guid.NewGuid().ToString();

            Int64?ID = null;

            lock (ni.sqllock)
            {
                ID = sql.InsertMultiDataID("Chats",
                                           new SQLData("MachineID", MachineID),
                                           new SQLData("DT", DateTime.UtcNow),
                                           new SQLData("Read", 0),
                                           new SQLData("ToClient", 1),
                                           new SQLData("Name", ni.Name),
                                           new SQLData("Text", ChatMessage.Text));
            }
            if (ID != null)
            {
                ChatMessage.ID = ID.Value;
            }
            else
            {
                ChatMessage.ID = 0;
            }

            ChatMessage.DT   = DateTime.UtcNow;
            ChatMessage.Name = ni.Name;

            PushData p = new PushData();

            p.Action          = "chatmessage";
            p.ReplyID         = guid;
            p.AdditionalData1 = JsonConvert.SerializeObject(ChatMessage);

            PushServiceHelper.SendPushService(MachineID, p, 10);
            PushDataResponse resp = PushServiceHelper.PopResponse(MachineID, 10, guid);

            if (resp == null)
            {
                ni.Error   = "No response";
                ni.ErrorID = ErrorFlags.NoData;
                return(RESTStatus.NoContent);
            }

            try
            {
                Res = JsonConvert.DeserializeObject <NetBool>(resp.Data.ToString());
            }
            catch
            {
                ni.Error   = "Faulty data";
                ni.ErrorID = ErrorFlags.NoData;
                return(RESTStatus.NoContent);
            }
            return(RESTStatus.Success);
        }
コード例 #5
0
        public RESTStatus NewUploadAgentToServer(SQLLib sql, FileUploadData uploadreq, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ComputerLogin) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            if (uploadreq == null)
            {
                ni.Error   = "Invalid data";
                ni.ErrorID = ErrorFlags.InvalidValue;
                return(RESTStatus.Fail);
            }

            uploadreq.MachineID    = ni.Username;
            uploadreq.ProgressSize = 0;
            if (uploadreq.Size <= 0)
            {
                ni.Error   = "Wrong SZ";
                ni.ErrorID = ErrorFlags.InvalidValue;
                return(RESTStatus.Fail);
            }

            if (string.IsNullOrEmpty(uploadreq.MD5CheckSum) == true)
            {
                ni.Error   = "No MD5";
                ni.ErrorID = ErrorFlags.InvalidValue;
                return(RESTStatus.Fail);
            }

            if (string.IsNullOrEmpty(uploadreq.RemoteFileLocation) == true)
            {
                ni.Error   = "No Filename";
                ni.ErrorID = ErrorFlags.InvalidValue;
                return(RESTStatus.Fail);
            }

            NewID = new NetInt64();

            string GUID           = Guid.NewGuid().ToString();
            string ServerFilename = "FILE_" + GUID + ".dat";

            Int64?id = null;

            lock (ni.sqllock)
            {
                id = sql.InsertMultiDataID("FileTransfers",
                                           new SQLData("MachineID", uploadreq.MachineID),
                                           new SQLData("RemoteFileLocation", uploadreq.RemoteFileLocation),
                                           new SQLData("ServerFile", ServerFilename),
                                           new SQLData("Direction", 1),
                                           new SQLData("MD5Sum", uploadreq.MD5CheckSum),
                                           new SQLData("Size", uploadreq.Size),
                                           new SQLData("ProgressSize", 0),
                                           new SQLData("DTUpdated", DateTime.UtcNow),
                                           new SQLData("RequestOnly", 0),
                                           new SQLData("OverrideMeteredConnection", uploadreq.OverrideMeteredConnection),
                                           new SQLData("FileLastModified", uploadreq.FileLastModified));
            }

            if (id == null)
            {
                ni.Error   = "DB error";
                ni.ErrorID = ErrorFlags.SystemError;
                return(RESTStatus.Fail);
            }

            NewID.Data = id.Value;

            return(RESTStatus.Success);
        }