Beispiel #1
0
        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);
        }
Beispiel #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);
        }
Beispiel #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);
        }
Beispiel #4
0
        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);
        }
Beispiel #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);
        }