Пример #1
0
 public RESTStatus GetLastError(SQLLib sql, object foo, NetworkConnectionInfo ni)
 {
     Err         = new ErrorInfo();
     Err.Error   = ni.Error;
     Err.ErrorID = (int)ni.ErrorID;
     return(RESTStatus.Success);
 }
Пример #2
0
        public RESTStatus Push10(SQLLib sql, object dummy, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ComputerLogin) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            PushData data = PushServiceHelper.WaitForPush(ni, 10);

            if (data == null)
            {
                ni.Error   = "Push Service Error";
                ni.ErrorID = ErrorFlags.SystemError;
                return(RESTStatus.ServerError);
            }

            ReturnData      = new PushDataRoot();
            ReturnData.Data = data;

            if (Certificates.Sign(ReturnData, SettingsManager.Settings.UseCertificate) == false)
            {
                ni.Error   = "Push Service Signing Error";
                ni.ErrorID = ErrorFlags.SystemError;
                return(RESTStatus.ServerError);
            }

            return(RESTStatus.Success);
        }
Пример #3
0
        public RESTStatus GetPendingChatMessages(SQLLib sql, object dummy, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ComputerLogin) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            string MachineID = ni.Username;

            ChatList2      = new PushChatMessageList();
            ChatList2.List = new List <PushChatMessage>();

            lock (ni.sqllock)
            {
                SqlDataReader dr = sql.ExecSQLReader("select * from Chats where [Read]=0 AND MachineID=@m AND ToClient=1 ORDER BY DT ASC",
                                                     new SQLParam("@m", MachineID));
                while (dr.Read())
                {
                    PushChatMessage pch = new PushChatMessage();
                    pch.ID   = Convert.ToInt64(dr["ID"]);
                    pch.DT   = SQLLib.GetDTUTC(dr["DT"]);
                    pch.Name = Convert.ToString(dr["Name"]);
                    pch.Text = Convert.ToString(dr["Text"]);
                    ChatList2.List.Add(pch);
                }
                dr.Close();
            }

            return(RESTStatus.Success);
        }
Пример #4
0
        public RESTStatus PushResponseB(SQLLib sql, PushDataResponse pdr, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ComputerLogin) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

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

            if (ni.PushChannel == null)
            {
                ni.Error   = "Too early";
                ni.ErrorID = ErrorFlags.InvalidData;
                return(RESTStatus.Fail);
            }

            if (PushServiceHelper.PushResponse(ni.Username, pdr, ni.PushChannel.Value, true) == false)
            {
                ni.Error   = "Cannot push";
                ni.ErrorID = ErrorFlags.SystemError;
                return(RESTStatus.ServerError);
            }

            return(RESTStatus.Success);
        }
Пример #5
0
        public RESTStatus GetFileDataMgmt(SQLLib sql, object dummy, NetworkConnectionInfo ni, Int64 ID)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            lock (ni.sqllock)
            {
                SqlDataReader dr = sql.ExecSQLReader("SELECT COUNT(*) FROM FileTransfers WHERE ID=@id",
                                                     new SQLParam("@id", ID));
                if (dr.HasRows == false)
                {
                    ni.Error   = "Not found";
                    ni.ErrorID = ErrorFlags.InvalidID;
                    dr.Close();
                    return(RESTStatus.NotFound);
                }

                dr.Read();

                UploadedData2 = FillUploadData(dr);

                dr.Close();
            }

            return(RESTStatus.Success);
        }
Пример #6
0
        public RESTStatus GetFileList(SQLLib sql, object dummy, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ComputerLogin) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            Int64List           = new NetInt64ListSigned();
            Int64List.data      = new NetInt64List2();
            Int64List.data.data = new List <long>();

            lock (ni.sqllock)
            {
                SqlDataReader dr = sql.ExecSQLReader("SELECT ID FROM FileTransfers WHERE MachineID=@mid AND ((Size=ProgressSize AND Direction=0) OR (Direction=1)) ORDER BY RequestOnly ASC, ID ASC",
                                                     new SQLParam("@mid", ni.Username));
                while (dr.Read())
                {
                    Int64List.data.data.Add(Convert.ToInt64(dr["ID"]));
                }
                dr.Close();
            }

            if (Certificates.Sign(Int64List, SettingsManager.Settings.UseCertificate) == false)
            {
                FoxEventLog.WriteEventLog("Cannot sign policy with Certificate " + SettingsManager.Settings.UseCertificate, System.Diagnostics.EventLogEntryType.Warning);
                ni.Error   = "Cannot sign policy with Certificate " + SettingsManager.Settings.UseCertificate;
                ni.ErrorID = ErrorFlags.CannotSign;
                return(RESTStatus.ServerError);
            }

            return(RESTStatus.Success);
        }
Пример #7
0
        public RESTStatus PushSTDIOData(SQLLib sql, Push_Stdio_StdIn stdin, NetworkConnectionInfo ni, string MachineID)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            if (stdin == null)
            {
                ni.Error   = "Missing data";
                ni.ErrorID = ErrorFlags.InvalidData;
                return(RESTStatus.Fail);
            }

            string sess = "stdio-" + stdin.SessionID;

            PushData p = new PushData();

            p.Action          = "stdin";
            p.ReplyID         = sess;
            p.AdditionalData1 = JsonConvert.SerializeObject(stdin);

            PushServiceHelper.SendPushService(MachineID, p, 0);

            return(RESTStatus.Success);
        }
Пример #8
0
    void GotoNextScene()
    {
        NetworkConnectionInfo info = SystemManager.Instance.ConnectionInfo;

        if (info.Host) // 현재 연결이 호스트라면
        {
            Debug.Log("FW Start with Host!");
            //singleton은 NetwortkManager 형태이기 때문에 FWNetwortkManager 메소드를 원한다면 캐스팅
            FWNetwortkManager.singleton.StartHost();
        }
        else // 현재 연결이 클라이언트라면
        {
            Debug.Log("FW Start with Client!");

            if (!string.IsNullOrEmpty(info.IPAddress)) //Title 씬에서 이미 설정되어있다
            {
                FWNetwortkManager.singleton.networkAddress = info.IPAddress;
            }

            if (info.Port != FWNetwortkManager.singleton.networkPort) //SystemManager와 FWNetwortkManager 포트가 다르다면
            {
                FWNetwortkManager.singleton.networkPort = info.Port;
            }

            FWNetwortkManager.singleton.StartClient();
        }


        NextSceneCall = true;
    }
Пример #9
0
        public RESTStatus AddUser(SQLLib sql, NetString User, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Fail);
            }

            if (string.IsNullOrWhiteSpace(User.Data) == true)
            {
                ni.Error   = "Missing username";
                ni.ErrorID = ErrorFlags.InvalidID;
                return(RESTStatus.Fail);
            }

            if (Convert.ToInt32(sql.ExecSQLScalar("SELECT COUNT(*) FROM Users WHERE Username=@u",
                                                  new SQLParam("@u", User.Data.Trim()))) != 0)
            {
                ni.Error   = "User already exists";
                ni.ErrorID = ErrorFlags.InvalidID;
                return(RESTStatus.Fail);
            }

            sql.InsertMultiData("Users",
                                new SQLData("Username", User.Data.Trim()),
                                new SQLData("Name", "new user"),
                                new SQLData("Permissions", 0),
                                new SQLData("Password", ""));

            return(RESTStatus.Success);
        }
Пример #10
0
        public RESTStatus DeleteUser(SQLLib sql, NetString User, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Fail);
            }

            if (Convert.ToInt32(sql.ExecSQLScalar("SELECT COUNT(*) FROM Users WHERE Username=@u",
                                                  new SQLParam("@u", User.Data))) == 0)
            {
                ni.Error   = "Invalid User";
                ni.ErrorID = ErrorFlags.InvalidID;
                return(RESTStatus.Fail);
            }

            if (User.Data.ToLower().Trim() == "root")
            {
                ni.Error   = "Invalid User";
                ni.ErrorID = ErrorFlags.InvalidID;
                return(RESTStatus.Fail);
            }

            sql.ExecSQL("DELETE FROM Users WHERE Username=@u",
                        new SQLParam("@u", User.Data));

            return(RESTStatus.Success);
        }
Пример #11
0
    void GotoNextScene()
    {
        NetworkConnectionInfo info = SystemManager.Instance.ConnectionInfo;

        if (info.Host)
        {
            FWNetworkManager.singleton.StartHost();
        }

        else
        {
            if (!string.IsNullOrEmpty(info.IPAddress))
            {
                FWNetworkManager.singleton.networkAddress = info.IPAddress;
            }

            if (info.Port != FWNetworkManager.singleton.networkPort)
            {
                FWNetworkManager.singleton.networkPort = info.Port;
            }

            FWNetworkManager.singleton.StartClient();
        }


        NextSceneCall = true;
    }
Пример #12
0
        public RESTStatus RestartClientForced(SQLLib sql, object dummy, 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();

            PushData p = new PushData();

            p.Action  = "restartsystemforced";
            p.ReplyID = guid;

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

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

            Dummy      = new NetString();
            Dummy.Data = "OK";

            return(RESTStatus.Success);
        }
Пример #13
0
        bool CookieValidator(CookieCollection req, CookieCollection res)
        {
            string InternalRunningSessionID = req["Agent-SessionID"].Value;

            if (string.IsNullOrWhiteSpace(InternalRunningSessionID) == true)
            {
                return(false);
            }
            NetworkConnectionInfo ni = NetworkConnection.GetSession(InternalRunningSessionID);

            if (ni == null)
            {
                return(false);
            }
            if (ni.ComputerLoggedIn == false)
            {
                return(false);
            }
            lock (RemoteNetworkConnectionWSCrosser.DictLock)
            {
                if (RemoteNetworkConnectionWSCrosser.Sessions.ContainsKey(SessionID) == false)
                {
                    return(false);
                }
                if (RemoteNetworkConnectionWSCrosser.Sessions[SessionID].MachineID != ni.Username)
                {
                    return(false);
                }
            }

            Debug.WriteLine("Cookie (AG-SPM) validated");
            return(true);
        }
Пример #14
0
        public RESTStatus ListUsers(SQLLib sql, object Dummy, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Fail);
            }

            UserLists      = new UserDetailsList();
            UserLists.List = new List <UserDetails>();

            SqlDataReader dr = sql.ExecSQLReader("SELECT * FROM Users ORDER BY Username");

            while (dr.Read())
            {
                UserDetails d = new UserDetails();
                d.EMail              = Convert.ToString(dr["EMail"]);
                d.LDAPUsername       = Convert.ToString(dr["LDAPUsername"]);
                d.MustChangePassword = Convert.ToBoolean(dr["MustChangePassword"]);
                d.Name        = Convert.ToString(dr["Name"]);
                d.Permissions = Convert.ToInt64(dr["Permissions"]);
                d.UseLDAP     = Convert.ToBoolean(dr["UseLDAP"]);
                d.Username    = Convert.ToString(dr["Username"]);
                UserLists.List.Add(d);
            }
            dr.Close();
            return(RESTStatus.Success);
        }
Пример #15
0
 public RESTStatus GetUser(SQLLib sql, object Dummy, NetworkConnectionInfo ni)
 {
     CurrentUser          = new UserInfo();
     CurrentUser.Username = ni.Username;
     CurrentUser.Name     = ni.Name;
     return(RESTStatus.Success);
 }
Пример #16
0
 public RESTStatus GetWebsocketURL(SQLLib sql, object foo, NetworkConnectionInfo ni)
 {
     WSURL = new NetString()
     {
         Data = Settings.Default.WSPublishURL
     };
     return(RESTStatus.Success);
 }
Пример #17
0
        public RESTStatus ReportUsersList(SQLLib sql, UsersList users, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ComputerLogin) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

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

            users.MachineID = ni.Username;

            lock (ni.sqllock)
            {
                if (Convert.ToInt32(sql.ExecSQLScalar("SELECT COUNT(*) FROM ComputerAccounts WHERE MachineID=@m",
                                                      new SQLParam("@m", users.MachineID))) == 0)
                {
                    ni.Error   = "Invalid MachineID";
                    ni.ErrorID = ErrorFlags.InvalidValue;
                    return(RESTStatus.NotFound);
                }
            }

            lock (ni.sqllock)
            {
                sql.ExecSQL("DELETE FROM UsersList WHERE MachineID=@id", new SQLParam("@id", users.MachineID));
            }

            if (users.Users == null)
            {
                users.Users = new Dictionary <string, string>();
            }

            foreach (KeyValuePair <string, string> kvp in users.Users)
            {
                if (string.IsNullOrWhiteSpace(kvp.Key) == true || string.IsNullOrWhiteSpace(kvp.Value) == true)
                {
                    continue;
                }

                lock (ni.sqllock)
                {
                    sql.InsertMultiData("UsersList",
                                        new SQLData("MachineID", users.MachineID),
                                        new SQLData("SID", kvp.Key),
                                        new SQLData("Username", kvp.Value));
                }
            }

            return(RESTStatus.Success);
        }
Пример #18
0
        public RESTStatus GetSettings(SQLLib sql, object foo, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            Settingss = SettingsManager.Settings;
            return(RESTStatus.Success);
        }
Пример #19
0
        public RESTStatus GetContractInfos(SQLLib sql, object dummy, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            CI       = new ContractInfosList();
            CI.Items = new List <ContractInfos>();

            if (Settings.Default.UseContract == false)
            {
                return(RESTStatus.Success);
            }
            lock (ni.sqllock)
            {
                SqlDataReader dr = sql.ExecSQLReader("select * from contracts order by ContractID");
                while (dr.Read())
                {
                    ContractInfos i = new ContractInfos();
                    i.IncludedComputers = new List <ComputerData>();
                    sql.LoadIntoClass(dr, i);
                    CI.Items.Add(i);
                }
                dr.Close();
            }

            foreach (ContractInfos i in CI.Items)
            {
                List <string> Machines = new List <string>();
                lock (ni.sqllock)
                {
                    SqlDataReader dr = sql.ExecSQLReader("select MachineID from ComputerAccounts where ContractID=@c",
                                                         new SQLParam("@c", i.ContractID));
                    while (dr.Read())
                    {
                        Machines.Add(Convert.ToString(dr["MachineID"]));
                    }
                    dr.Close();
                }

                foreach (string M in Machines)
                {
                    ComputerData c = Computers.GetComputerDetail(sql, M);
                    i.IncludedComputers.Add(c);
                }
            }

            return(RESTStatus.Success);
        }
Пример #20
0
        public RESTStatus GetPaperList(SQLLib sql, object dummy, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            RetListPaper       = new NetStringList();
            RetListPaper.Items = SupportedNames;

            return(RESTStatus.Success);
        }
Пример #21
0
        public RESTStatus GetClientSettings(SQLLib sql, object foo, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ComputerLogin) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            ClientSettings = new ClientSettings();
            ClientSettings.AdministratorName = SettingsManager.Settings.AdministratorName;
            ClientSettings.MessageDisclaimer = SettingsManager.Settings.MessageDisclaimer;
            return(RESTStatus.Success);
        }
Пример #22
0
        public RESTStatus GetPaperTemplate(SQLLib sql, object dummy, NetworkConnectionInfo ni, string Paper)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            if (string.IsNullOrWhiteSpace(Paper) == true)
            {
                ni.Error   = "Invalid data";
                ni.ErrorID = ErrorFlags.InvalidData;
                return(RESTStatus.Fail);
            }

            Paper = Paper.ToUpper().Trim();

            if (SupportedNames.Contains(Paper) == false)
            {
                ni.Error   = "Invalid data";
                ni.ErrorID = ErrorFlags.InvalidData;
                return(RESTStatus.Fail);
            }

            RetPaper      = new NetByte();
            RetPaper.Data = null;

            lock (ni.sqllock)
            {
                object o = sql.ExecSQLScalar("SELECT [data] from ReportPapers WHERE ID=@id",
                                             new SQLParam("@id", Paper));
                if (o is DBNull || o is null)
                {
                    switch (Paper)
                    {
                    case "COMPUTERREPORT":
                        RetPaper.Data = Resources.Computer_Report;
                        break;
                    }
                }
                else
                {
                    RetPaper.Data = (byte[])o;
                }
            }

            return(RESTStatus.Success);
        }
Пример #23
0
        public RESTStatus CancelUploadAgentToServer(SQLLib sql, object dummy, NetworkConnectionInfo ni, Int64 ID)
        {
            if (ni.HasAcl(ACLFlags.ComputerLogin) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            lock (ni.sqllock)
            {
                if (Convert.ToInt32(sql.ExecSQLScalar("SELECT COUNT(*) FROM FileTransfers WHERE ID=@id AND MachineID=@mid AND Direction in (0,1)",
                                                      new SQLParam("@mid", ni.Username),
                                                      new SQLParam("@id", ID))) == 0)
                {
                    ni.Error   = "Invalid ID";
                    ni.ErrorID = ErrorFlags.InvalidData;
                    return(RESTStatus.Fail);
                }
            }

            string Filename = null;

            lock (ni.sqllock)
            {
                Filename = Settings.Default.DataPath + Convert.ToString(sql.ExecSQLScalar("SELECT ServerFile FROM FileTransfers WHERE ID=@id AND MachineID=@mid",
                                                                                          new SQLParam("@mid", ni.Username),
                                                                                          new SQLParam("@id", ID)));
            }

            if (File.Exists(Filename) == true)
            {
                try
                {
                    CommonUtilities.SpecialDeleteFile(Filename);
                }
                catch
                { }
            }

            lock (ni.sqllock)
            {
                sql.ExecSQLScalar("DELETE FROM FileTransfers WHERE ID=@id AND MachineID=@mid",
                                  new SQLParam("@mid", ni.Username),
                                  new SQLParam("@id", ID));
            }

            return(RESTStatus.Success);
        }
Пример #24
0
        public RESTStatus CloseWSServerMappingPort(SQLLib sql, NetString GUID, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ComputerLogin) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            RemoteNetworkConnectionWSCrosser.CloseSession(ni.Username, GUID.Data);

            Res        = new PushConnectNetworkResult();
            Res.Result = 0;
            return(RESTStatus.Success);
        }
Пример #25
0
        public RESTStatus PopSTDIOData(SQLLib sql, NetString StdIOSession, NetworkConnectionInfo ni, string MachineID)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            if (StdIOSession == null)
            {
                ni.Error   = "Missing Session Data";
                ni.ErrorID = ErrorFlags.InvalidData;
                return(RESTStatus.Fail);
            }

            if (string.IsNullOrWhiteSpace(StdIOSession.Data) == true)
            {
                ni.Error   = "Missing Session Data";
                ni.ErrorID = ErrorFlags.InvalidData;
                return(RESTStatus.Fail);
            }

            string           sess = "stdio-" + StdIOSession.Data;
            PushDataResponse resp = PushServiceHelper.PopResponse(MachineID, 0, sess, true);

            if (resp == null)
            {
                res           = new Push_Stdio_StdOut();
                res.SessionID = StdIOSession.Data;
                res.State     = PushStdoutState.Timeout;
                return(RESTStatus.NoContent);
            }

            try
            {
                res = JsonConvert.DeserializeObject <Push_Stdio_StdOut>(resp.Data.ToString());
            }
            catch
            {
                res           = new Push_Stdio_StdOut();
                res.SessionID = StdIOSession.Data;
                res.State     = PushStdoutState.InternalError;
                return(RESTStatus.NoContent);
            }

            return(RESTStatus.Success);
        }
Пример #26
0
        public RESTStatus ChangeUser(SQLLib sql, UserDetailsPassword User, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Fail);
            }

            if (Convert.ToInt32(sql.ExecSQLScalar("SELECT COUNT(*) FROM Users WHERE Username=@u",
                                                  new SQLParam("@u", User.Username))) == 0)
            {
                ni.Error   = "Invalid User";
                ni.ErrorID = ErrorFlags.InvalidID;
                return(RESTStatus.Fail);
            }

            if (string.IsNullOrWhiteSpace(User.NewPassword) == false)
            {
                if (MeetPasswordPolicy(User.NewPassword) == false)
                {
                    ni.Error   = "Password policy not met";
                    ni.ErrorID = ErrorFlags.PWPolicyNotMet;
                    return(RESTStatus.Fail);
                }
                string PWMD5REQ = Convert.ToBase64String(Encoding.Unicode.GetBytes(User.NewPassword));
                sql.ExecSQL("UPDATE Users SET Password=@p WHERE Username=@u",
                            new SQLParam("@u", User.Username),
                            new SQLParam("@p", PWMD5REQ));
            }

            if (User.Username.ToLower().Trim() == "root")
            {
                User.Permissions = SQLTest.AllPermissions;
            }

            sql.ExecSQL("UPDATE Users SET Name=@n, Permissions=@p, MustChangePassword=@mchg,EMail=@email,UseLDAP=@UseLDAP,LDAPUsername=@LDAPUsername WHERE Username=@u",
                        new SQLParam("@u", User.Username),
                        new SQLParam("@n", User.Name),
                        new SQLParam("@p", User.Permissions),
                        new SQLParam("@mchg", User.MustChangePassword),
                        new SQLParam("@email", User.EMail),
                        new SQLParam("@useldap", User.UseLDAP),
                        new SQLParam("@LDAPUsername", User.LDAPUsername));

            return(RESTStatus.Success);
        }
Пример #27
0
        public RESTStatus TestPaperTemplate(SQLLib sql, object dummy, NetworkConnectionInfo ni, string Paper)
        {
#if !TXTREPORT
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            if (string.IsNullOrWhiteSpace(Paper) == true)
            {
                ni.Error   = "Invalid data";
                ni.ErrorID = ErrorFlags.InvalidData;
                return(RESTStatus.Fail);
            }

            Paper = Paper.ToUpper().Trim();

            if (SupportedNames.Contains(Paper) == false)
            {
                ni.Error   = "Invalid data";
                ni.ErrorID = ErrorFlags.InvalidData;
                return(RESTStatus.Fail);
            }

            RetPaper      = new NetByte();
            RetPaper.Data = null;

            lock (ni.sqllock)
            {
                switch (Paper)
                {
                case "COMPUTERREPORT":
                    RetPaper.Data = RenderReport.RenderReportData(RenderReport.GetReportPaperData(sql, Paper, Resources.Computer_Report), new Dictionary <string, object>(), "PDF");
                    break;
                }
            }

            return(RESTStatus.Success);
#else
            ni.Error   = "Unsupported functionality";
            ni.ErrorID = ErrorFlags.SystemError;
            return(RESTStatus.Fail);
#endif
        }
Пример #28
0
        public RESTStatus CheckFile(SQLLib sql, NetString Req, 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();

            PushData p = new PushData();

            p.Action          = "checkfile";
            p.ReplyID         = guid;
            p.AdditionalData1 = Req.Data;

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

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

            try
            {
                FileRes = new NetInt32();
                if (Int32.TryParse(resp.Data.ToString(), out FileRes.Data) == false)
                {
                    ni.Error   = "Faulty data";
                    ni.ErrorID = ErrorFlags.NoData;
                    return(RESTStatus.NoContent);
                }
            }
            catch
            {
                ni.Error   = "Faulty data";
                ni.ErrorID = ErrorFlags.NoData;
                return(RESTStatus.NoContent);
            }
            return(RESTStatus.Success);
        }
Пример #29
0
        public RESTStatus ChangeMyPassword(SQLLib sql, ChangePassword chgpw, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ComputerLogin) == true)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            ni.Error = "";

            if (ni.IsLDAP == true)
            {
                ni.Error   = "Password is LDAP";
                ni.ErrorID = ErrorFlags.IsLDAP;
                return(RESTStatus.Fail);
            }

            string PWMD5REQ = Convert.ToBase64String(Encoding.Unicode.GetBytes(chgpw.OldPassword));

            if (MeetPasswordPolicy(chgpw.NewPassword) == false)
            {
                ni.Error   = "Password policy not met";
                ni.ErrorID = ErrorFlags.PWPolicyNotMet;
                return(RESTStatus.Fail);
            }
            int Count = Convert.ToInt32(sql.ExecSQLScalar("SELECT Count(*) FROM Users WHERE Username=@u AND Password=@p",
                                                          new SQLParam("@u", ni.Username),
                                                          new SQLParam("@p", PWMD5REQ)));

            if (Count < 1)
            {
                ni.Error   = "Invalid old password";
                ni.ErrorID = ErrorFlags.InvalidPassword;
                return(RESTStatus.Fail);
            }
            string PWMD5New = Convert.ToBase64String(Encoding.Unicode.GetBytes(chgpw.NewPassword));

            sql.ExecSQLNQ("UPDATE Users SET Password=@pw, MustChangePassword=0 WHERE Username=@u",
                          new SQLParam("@u", ni.Username),
                          new SQLParam("@pw", PWMD5New));
            ni.MustChangePassword = false;

            return(RESTStatus.NoContent);
        }
Пример #30
0
        public RESTStatus GetSettings(SQLLib sql, ServerSettings settings, NetworkConnectionInfo ni)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            lock (ni.sqllock)
            {
                if (SettingsManager.SaveApplySettings(sql, settings, ni) == false)
                {
                    return(RESTStatus.Fail);
                }
            }
            return(RESTStatus.NoContent);
        }