Esempio n. 1
0
        public GroupForm(Dictionary <String, String> SettingList, IServerObject ServerObj, String groupName, String groupMembers, String userName, String mode)
        {
            InitializeComponent();
            try
            {
                this.ServerObj           = ServerObj;
                this.SettingList         = SettingList;
                this.textBoxName.Text    = groupName;
                this.textBoxMembers.Text = groupMembers;
                this.userName            = userName;
                this.groupName           = groupName;
                this.mode = mode;

                if (this.mode == "edit")
                {
                    String   line = "";
                    String[] arr  = groupMembers.Split(';');
                    foreach (String a in arr)
                    {
                        if (a.Trim() != "")
                        {
                            line = line + a.ToString().Trim() + ";" + Environment.NewLine;
                        }
                    }
                    this.textBoxMembers.Text = line;
                }
            }
            catch
            {
                //Error mesage will be catched in SelectForm  ???????????????????????
            }
        }
Esempio n. 2
0
        public LoginPage()
        {
            Text = "Chat Service Login/Register";
            Console.WriteLine("Client starting ...");
            InitializeComponent();

            clientProv = new BinaryClientFormatterSinkProvider();
            serverProv = new BinaryServerFormatterSinkProvider();
            serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;


            Hashtable props = new Hashtable();

            props["name"] = "remotingClient";
            props["port"] = 0;      //First available port

            tcpChan = new TcpChannel(props, clientProv, serverProv);
            ChannelServices.RegisterChannel(tcpChan, false);

            RemotingConfiguration.RegisterWellKnownClientType(new WellKnownClientTypeEntry(typeof(IServerObject), serverURI));

            try
            {
                remoteServer = (IServerObject)Activator.GetObject(typeof(IServerObject), serverURI);
                Console.WriteLine(remoteServer.HelloWorld());
            }
            catch (Exception ex)
            {
                Console.WriteLine("Could not connect: " + ex.Message);
            }
        }
        private IFeatureCursor GetEditAreas(IServerObject serverObject, string versionName)
        {
            IFeatureClass editAreasFC = null;

            try
            {
                // Open edit areas feature class in default workspace
                editAreasFC = GetEditAreaFeatureClass(serverObject);

                // Search for entries for the given version
                QueryFilter qryFilter = null;
                qryFilter             = new QueryFilter();
                qryFilter.WhereClause = _versionNameFName + "='" + versionName + "'";
                return(editAreasFC.Search(qryFilter, false));
            }
            catch (Exception e)
            {
                _serverLog.LogMessage(ServerLogger.msgType.infoStandard, _soiName + ".GetEditAreas()",
                                      200, "Error while retrieving edit areas: " + e.ToString());
            }
            finally
            {
                editAreasFC = null;
            }
            return(null);
        }
Esempio n. 4
0
        public async Task StartScanAsync(IServerObject server, SynchronizationContext ctx)
        {
            if (server == null)
            {
                return;
            }
            syncContext = ctx;
            lock (_lock) {
                _syncTable.Clear();
            }
            _visitedNames.Clear();
            redirected = globalErrors = globalWarnings = false;
            server.Log.Clear();
            server.Log.AppendLine("**************************************************************************");
            server.Log.AppendLine($"Processing '{server.ServerAddress}'");
            server.Log.AppendLine("**************************************************************************");
            server.Log.AppendLine($"Scan started: {DateTime.Now:dd-MM-yyyy HH:mm:ss}");

            using (Entry = new ServerObjectWrapper(server)) {
                Entry.InternalChain = new X509Chain(!Config.AllowUserTrust);
                ServicePointManager.SecurityProtocol = (SecurityProtocolType)Config.SslProtocolsToUse;
                // execute main routine
                await createRequest();
            }

            // calculate resulting status of the object
            getEffectiveStatus();
            // release resources and close connections
            NativeEntry.Log.AppendLine("Finished!");
            NativeEntry.Log.Progress = 100;
            NativeEntry.Log.AppendLine("Scan ended: " + DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss"));
            redirected = false;
        }
Esempio n. 5
0
 public ClientObject(TcpClient tcpClient, IServerObject serverObject)
 {
     Id            = Guid.NewGuid().ToString();
     client        = tcpClient;
     _serverObject = serverObject;
     _serverObject.AddConnection(this);
 }
Esempio n. 6
0
        public MainPage(User userLogged, IServerObject server)
        {
            Text = "Chat Service";
            //get user from loginPage
            this.userLogged      = userLogged;
            this.activeChatPages = new Dictionary <string, List <ChatPage> >();
            InitializeComponent();
            labelUserFullName.Text = userLogged.Name;
            labelUserNickname.Text = userLogged.Nickname;

            //Server components
            this.eventProxy   = new EventProxy();
            this.remoteServer = server;

            //get activeUsers from server
            GenerateActiveUsersList(remoteServer.getOnlineUsers());

            //Handle proxy
            eventProxy.OnlineUsersChanged      += new OnlineUsersChangedEvent(EventProxy_OnlineUsersChanged);
            eventProxy.NewChatRequest          += new NewChatRequestEvent(EventProxy_NewChatRequest);
            eventProxy.OpenAcceptedChatRequest += new OpenAcceptedChatRequestEvent(EventProxy_OpenAcceptedChatRequest);
            eventProxy.CloseOtherUserChatPage  += new CloseOtherUserChatPageEvent(EventProxy_CloseOtherUserChatPage);

            //attach the proxy handle functions to Server events
            remoteServer.OnlineUsersChanged      += new OnlineUsersChangedEvent(eventProxy.LocallyHandleOnlineUsersChanged);
            remoteServer.NewChatRequest          += new NewChatRequestEvent(eventProxy.LocallyHandleNewChatRequest);
            remoteServer.OpenAcceptedChatRequest += new OpenAcceptedChatRequestEvent(eventProxy.LocallyHandleOpenAcceptedChatRequest);
            remoteServer.CloseOtherUserChatPage  += new CloseOtherUserChatPageEvent(eventProxy.LocallyHandleCloseOtherUserChatPageRequest);
        }
Esempio n. 7
0
 public SendForm(Dictionary <String, String> SettingList, IServerObject ServerObj, String userName, String info, List <String> ListReplyName)
 {
     InitializeComponent();
     this.SettingList   = SettingList;
     this.ServerObj     = ServerObj;
     this.userName      = userName;
     this.info          = info;
     this.ListReplyName = ListReplyName;
 }
        /**
         * This method returns the utility network dataset.
         */
        public IDataset GetUNDataset(IServerObject serverObject, string versionName = null)
        {
            IMapServer           mapService          = (MapServer)serverObject;
            IMapServerDataAccess mapServerDataAccess = (IMapServerDataAccess)serverObject;

            // Get feature class from any layer
            IFeatureClass fc = (IFeatureClass)mapServerDataAccess.GetDataSource(mapService.DefaultMapName, 0);

            // Get the container feature dataset
            IFeatureDataset fd = fc.FeatureDataset;

            // Open feature dataset in specified version
            if (!String.IsNullOrEmpty(versionName))
            {
                IWorkspace           workspace          = fd.Workspace;
                IVersionedWorkspace4 versionedWorkspace = (IVersionedWorkspace4)workspace;
                IVersion4            childVersion       = (IVersion4)versionedWorkspace.FindVersion(versionName);
                IFeatureWorkspace    childFWS           = (IFeatureWorkspace)childVersion;
                fd = childFWS.OpenFeatureDataset(fd.Name);
            }

            // Loop through contained datasets to find the UN one
            IDataset     ds        = (IDataset)fd;
            IEnumDataset enumSubDS = ds.Subsets;
            IDataset     subDS     = enumSubDS.Next();

            while (subDS != null)
            {
                if (subDS.Type == esriDatasetType.esriDTUtilityNetwork)
                {
                    return(subDS);
                }
                subDS = enumSubDS.Next();
            }

            return(null);

            // Alternative approach is to use the dataset extension

            /*
             * // Get extension container
             * IFeatureDatasetExtensionContainer fdce = (IFeatureDatasetExtensionContainer)fd;
             *
             * // Find UN dataset by type
             * IFeatureDatasetExtension unFDSExt = fdce.FindExtension(esriDatasetType.esriDTUtilityNetwork);
             * IDatasetContainer2 unDSContainer = (IDatasetContainer2)unFDSExt;
             *
             * IEnumDatasetName dsNames = unDSContainer.DatasetNames[esriDatasetType.esriDTUtilityNetwork];
             *
             * IDatasetName dsName = dsNames.Next();
             * if (dsName != null)
             * {
             *  unDataset = unDSContainer.DatasetByName[esriDatasetType.esriDTUtilityNetwork, dsName.Name];
             * }
             */
        }
Esempio n. 9
0
        public void testConnection()
        {
            try
            {
                // try to call a function (Ping) on the server
                IServerObject remoteServer = (IServerObject)Activator.GetObject(typeof(IServerObject), serverURI);
                remoteServer.Ping();

                MessageBox.Show("The server is up! (" + serverURI + ").");
            } catch (Exception ex)
            {
                MessageBox.Show("Can't connect to server (" + serverURI + ").");
            }
        }
Esempio n. 10
0
 public InfoForm(IServerObject ServerObj, Dictionary <String, String> SettingList, String strInfo)
 {
     InitializeComponent();
     try
     {
         this.SettingList  = SettingList;
         this.strInfo      = strInfo;
         this.ListUserAttr = ServerObj.GetObjectAttr("domainUserAttributes");
         this.ListHostAttr = ServerObj.GetObjectAttr("domainHostAttributes");
     }
     catch
     {
     }
 }
Esempio n. 11
0
 static void Main(string[] args)
 {
     try
     {
         server       = new ServerObject();
         listenThread = new Thread(new ThreadStart(server.Listen));
         listenThread.Start();
     }
     catch (Exception ex)
     {
         server.Disconnect();
         Console.WriteLine(ex.Message);
     }
     Console.ReadLine();
 }
Esempio n. 12
0
 public SelectForm(Dictionary <String, String> SettingList, IServerObject ServerObj, String userName)
 {
     InitializeComponent();
     try
     {
         this.SettingList      = SettingList;
         this.ServerObj        = ServerObj;
         this.ListClientsInfo  = ServerObj.GetClientsInfo();
         this.ListADGroups     = ServerObj.GetADGroups();
         userNameCurrent       = userName.Split('(')[0].Trim();
         this.ListPrivateGroup = ServerObj.GetPrivateGroups(userNameCurrent);
     }
     catch
     {
     }
 }
        public IDataset GetUNDataset2(IServerObject serverObject, string versionName = null)
        {
            IDataset             unDataset           = null;
            IMapServer           mapService          = (MapServer)serverObject;
            IMapServerDataAccess mapServerDataAccess = (IMapServerDataAccess)serverObject;

            // Get feature class from any layer
            IFeatureClass fc = (IFeatureClass)mapServerDataAccess.GetDataSource(mapService.DefaultMapName, 0);

            // Get the container feature dataset
            IFeatureDataset fd = fc.FeatureDataset;

            // Open feature dataset in specified version
            if (!String.IsNullOrEmpty(versionName))
            {
                IWorkspace           workspace          = fd.Workspace;
                IVersionedWorkspace4 versionedWorkspace = (IVersionedWorkspace4)workspace;
                IVersion4            childVersion       = (IVersion4)versionedWorkspace.FindVersion(versionName);
                IFeatureWorkspace    childFWS           = (IFeatureWorkspace)childVersion;
                fd = childFWS.OpenFeatureDataset(fd.Name);
            }

            // Get extension container
            IFeatureDatasetExtensionContainer fdce = (IFeatureDatasetExtensionContainer)fd;

            // Find UN dataset by type
            IFeatureDatasetExtension unFDSExt      = fdce.FindExtension(esriDatasetType.esriDTUtilityNetwork);
            IDatasetContainer2       unDSContainer = (IDatasetContainer2)unFDSExt;

            IEnumDatasetName dsNames = unDSContainer.DatasetNames[esriDatasetType.esriDTUtilityNetwork];

            IDatasetName dsName = dsNames.Next();

            if (dsName != null)
            {
                unDataset = unDSContainer.DatasetByName[esriDatasetType.esriDTUtilityNetwork, dsName.Name];
            }

            return(unDataset);
        }
        private IFeatureClass GetEditAreaFeatureClass(IServerObject serverObject)
        {
            try
            {
                // Get GDB workspace
                IMapServer           mapService          = (MapServer)serverObject;
                IMapServerDataAccess mapServerDataAccess = (IMapServerDataAccess)serverObject;
                IDataset             ds        = (IDataset)mapServerDataAccess.GetDataSource(mapService.DefaultMapName, 0);
                IWorkspace           workspace = ds.Workspace;

                // Open edit areas feature class in default workspace
                IVersionedWorkspace4 versionedWorkspace = (IVersionedWorkspace4)workspace;
                IVersion4            defaultVersion     = (IVersion4)versionedWorkspace.DefaultVersion;
                IFeatureWorkspace    defaultFWS         = (IFeatureWorkspace)defaultVersion;
                return(defaultFWS.OpenFeatureClass(_editAreasFCName));
            }
            catch (Exception e)
            {
                _serverLog.LogMessage(ServerLogger.msgType.infoStandard, _soiName + ".GetEditAreaFeatureClass()",
                                      200, "Error while retrieving edit areas feature class: " + e.ToString());
            }
            return(null);
        }
        private bool RemoveEditAreas(IServerObject serverObject, string versionName)
        {
            bool           isOk       = false;
            IFeature       curFeature = null;
            IFeatureCursor fCursor    = null;

            try
            {
                // Search for entries for the given version
                fCursor = GetEditAreas(serverObject, versionName);

                if (fCursor != null)
                {
                    curFeature = fCursor.NextFeature();
                }

                while (curFeature != null)
                {
                    curFeature.Delete();
                    curFeature = fCursor.NextFeature();
                }
                isOk = true;
                fCursor.Flush();
            }
            catch (Exception e)
            {
                _serverLog.LogMessage(ServerLogger.msgType.infoStandard, _soiName + ".RemoveEditArea()",
                                      200, "Error while deleting edit area: " + e.ToString());
            }
            finally
            {
                fCursor    = null;
                curFeature = null;
            }

            return(isOk);
        }
Esempio n. 16
0
        /// <summary>
        /// The bttn_Connect_Click
        /// </summary>
        /// <param name="sender">The sender<see cref="object"/></param>
        /// <param name="e">The e<see cref="EventArgs"/></param>
        private void bttn_Connect_Click(object sender, EventArgs e)
        {
            if (isconnected)
            {
                return;
            }

            try
            {
                remoteServer = (IServerObject)Activator.GetObject(typeof(IServerObject), serverURI);
                remoteServer.MessageArrived += new MessageArrivedEvent(eventProxy.LocallyHandleMessageArrived);

                remoteServer.PublishMessage("Client Connected");        //This is where it will break if we didn't connect

                //Now we have to attach the events...
                isconnected = true;
            }
            catch (Exception ex)
            {
                isconnected = false;
                SetTextBox("Could not connect: " + ex.Message);
                ErrorLogger.ErrorLog(ex);
            }
        }
Esempio n. 17
0
 public void StartScan(IServerObject server)
 {
     StartScanAsync(server, null).Wait();
 }
Esempio n. 18
0
        private byte[] ExecuteStoredProcedureHandler(NameValueCollection boundVariables,
                                                     JsonObject operationInput,
                                                     string outputFormat,
                                                     string requestProperties,
                                                     out string responseProperties)
        {
            responseProperties = null;
            string retString = "";

            try
            {
                //return Encoding.UTF8.GetBytes(retStrn);
                //return null;

                string pipeDelimetedStringValuePairsForStoredProc = "";
                bool   found = operationInput.TryGetString("ParamValuePairs", out pipeDelimetedStringValuePairsForStoredProc);
                if (!found || string.IsNullOrEmpty(pipeDelimetedStringValuePairsForStoredProc))
                {
                    throw new ArgumentNullException("ParamValuePairs");
                }

                string extra;
                found = operationInput.TryGetString("Extra", out extra);
                if (!found || string.IsNullOrEmpty(extra))
                {
                    throw new ArgumentNullException("extra");
                }

                responseProperties = null;
                IServerEnvironment3 senv    = GetServerEnvironment() as IServerEnvironment3;
                JsonObject          result  = new JsonObject();
                JsonObject          suinfoj = new JsonObject();
                //get user info and serialize into JSON
                IServerUserInfo suinfo = senv.UserInfo;
                if (null != suinfo)
                {
                    suinfoj.AddString("currentUser", suinfo.Name);

                    IEnumBSTR     roles    = suinfo.Roles;
                    List <string> rolelist = new List <string>();
                    if (null != roles)
                    {
                        string role = roles.Next();
                        while (!string.IsNullOrEmpty(role))
                        {
                            rolelist.Add(role);
                            role = roles.Next();
                        }
                    }

                    suinfoj.AddArray("roles", rolelist.ToArray());
                    result.AddJsonObject("serverUserInfo", suinfoj);
                }
                else
                {
                    result.AddJsonObject("serverUserInfo", null);
                }

                IServerObject so = serverObjectHelper.ServerObject;
                retString = "got so>";

                string progString = "";
                retString += "> Stored Proc via oleDB ";// + ex.Message;
                OleDbConnection con = new OleDbConnection();
                string          paramsThatParsed = "";



                con.ConnectionString = @"Provider =SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=" + extra.Split(',')[0] + ";Data Source=" + extra.Split(',')[1];// @"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TestDB;Data Source=PC684"; //
                string storedProcedureName = "dbo.apLITSaveChanges";
                bool   isStatusOutput      = Convert.ToBoolean(extra.Split(',')[2]);
                //the connection string below uses integrated security which is usually superior to storing credential in visible text
                //con.ConnectionString = @"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TestDB;Data Source=PC684";
                //con.Open();
                //retString += ">opened connection";
                string       SQLString = "";
                OleDbCommand cmd       = new OleDbCommand(storedProcedureName, con);
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                string userName = "******";
                if (suinfo.Name != null)
                {
                    userName = suinfo.Name;
                }
                cmd.Parameters.AddWithValue("@WindowsLogin", userName);
                SQLString += "@WindowsLogin='******'";
                //SQLString += "@WindowsLogin="******">created command";
                string[] paramValsForStoredProc = pipeDelimetedStringValuePairsForStoredProc.Split('|');
                foreach (string paramVal in paramValsForStoredProc)
                {
                    string param = paramVal.Split(',')[0];
                    paramsThatParsed += "," + param;
                    string val = paramVal.Split(',')[1];
                    retString += ">param and value : " + param + " = " + val;

                    param = "@" + param;
                    if (param.ToUpper().Contains("GEOLOCID"))
                    {
                        int i = int.Parse(val);
                        cmd.Parameters.AddWithValue(param, i);
                        SQLString += ", " + param + "= " + i;
                    }
                    else if (param.ToUpper() == "@LATITUDE" || param.ToUpper() == "@LONGITUDE")
                    {
                        double d = double.Parse(val);
                        cmd.Parameters.AddWithValue(param, d);
                        SQLString += ", " + param + "=  " + d;
                    }
                    else if (param.ToUpper() == "@STATUS")
                    {
                        if (isStatusOutput)
                        {
                            //cmd.Parameters[param].Direction = ParameterDirection.Output;
                            retString += ">Set direction of status parameter to output";
                            SQLString += ", @STATUS = @localstatus OUTPUT";
                        }
                    }
                    else
                    {
                        cmd.Parameters.AddWithValue(param, val);
                        //SQLString += ", " + param + "=  " + val ;
                        SQLString += ", " + param + "=  '" + val + "'";
                    }
                }//CurGeoLocID,NewGeoLocID,Address,City,ZipCode,Latitude,Longitude,FacilityName,AppID,WindowsLogin,ServerName,ServerName,Status
                SQLString = "exec dbo.apLITSaveChanges " + SQLString;
                if (isStatusOutput)
                {
                    SQLString = "DECLARE @localstatus varchar(256);" + SQLString;
                }
                string retStrn = UseAOToCreateUpdateFeatures(SQLString);
                return(Encoding.UTF8.GetBytes(retStrn));

                return(null);

                cmd.Connection = con;
                cmd.ExecuteNonQuery();

                return(Encoding.UTF8.GetBytes(result.ToJson() + "  -  " + retString.ToString()));
            }
            catch (Exception ex)
            {
                return(Encoding.UTF8.GetBytes("ERROR   " + ex.ToString() + "  :  " + retString.ToString()));
            }
        }
Esempio n. 19
0
        private void LogOnServer()
        {
            try
            {
                m_compIP = GetCompIP(Dns.GetHostName().ToLower());

                BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider();
                serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
                BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider();

                IDictionary props = new Hashtable();
                props["port"] = portClient;
                props["name"] = "";
                clientChannel = new TcpChannel(props, clientProv, serverProv);
                ChannelServices.RegisterChannel(clientChannel, false);
                ClientObj = new ClientObject(this);
                m_obj     = RemotingServices.Marshal(ClientObj, "ClientObject.soap");

                String serverURL = "tcp://" + ipAddressServer + ":" + portServer.ToString() + "/ServerObject.rem";
                ServerObj = (IServerObject)Activator.GetObject(typeof(IServerObject), serverURL);
                RSend.ClientInfo ClData = new RSend.ClientInfo(userName, info, m_compIP, portClient, DateTime.Now);

                if (ServerObj.Logon(ClData))
                {
                    b_IsConnected = true;

                    // selftest block begin
                    if (selftest)
                    {
                        List <String> ListSendServer = new List <string>();
                        ListSendServer.Add(userName);
                        ServerObj.SendMessageToServer(userName, ListSendServer, "selftest", false);

                        int i     = 0;
                        int count = (int)(Math.Round((double)timeoutSelftest / 1000 * 2));

                        while (i < count)
                        {
                            if (selftestResult)
                            {
                                i = count;
                            }
                            else
                            {
                                System.Threading.Thread.Sleep(500);
                                i++;
                            }
                        }

                        if (selftestResult)
                        {
                            Online();
                        }
                        else
                        {
                            LogOffServer();
                        }
                    }
                    // selftest block end
                    else
                    {
                        Online();
                    }
                }
                else
                {
                    b_IsConnected = false;
                    LogOffServer();
                }
            }
            catch
            {
                Offline();
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="pSOH"></param>
        public void Init ( IServerObjectHelper pSOH )
        {
            try
            {
                _soHelper = pSOH;
                _serverLog = new ServerLogger();
                _serverObject = pSOH.ServerObject;

                _restServiceSOI = new RestSOIHelper(_soHelper);
                _SoapSOIHelper = new SoapSOIHelper(_soHelper, _wsdlFilePath);

                if (File.Exists(_permissionFilePath))
                {
                    //TODO REMOVE
                    _serverLog.LogMessage(ServerLogger.msgType.infoStandard, _soiName + ".init()", 200, "Reading permissions from " + _permissionFilePath);

                    _servicePermissionMap = ReadPermissionFile(_permissionFilePath);

                    //TODO REMOVE
                    _serverLog.LogMessage(ServerLogger.msgType.infoStandard, _soiName + ".init()", 200, "Total permission entries: " + _servicePermissionMap.Count());
                }
                else
                {
                    _serverLog.LogMessage(ServerLogger.msgType.error, _soiName + ".init()", 500, "Permission file does not exist at " + _permissionFilePath);
                }

                InitFiltering();

                _serverLog.LogMessage(ServerLogger.msgType.infoStandard, _soiName + ".init()", 200, "Initialized " + _soiName + " SOI.");
            }
            catch (Exception e)
            {
                _serverLog.LogMessage(ServerLogger.msgType.error, _soiName + ".init()", 500, "Exception: " + e.Message + " in " + e.StackTrace);
            }
        }
Esempio n. 21
0
        private void SendMessage()
        {
            try
            {
                List <String> ListClientsInfo = new List <string>();
                List <String> ListSend        = new List <string>();
                List <String> ListSendServer  = new List <string>();

                String ipAddressServer = ConfigurationSettings.AppSettings["ipAddressServer"].Trim();
                int    portServer      = Convert.ToInt32(ConfigurationSettings.AppSettings["portServer"].Trim());
                String to   = ConfigurationSettings.AppSettings["to"].Trim();
                String text = ConfigurationSettings.AppSettings["Text"].Trim();

                if (ipAddressServer == "")
                {
                    Console.Write("Parameter 'ipAddressServer' cannot be empty! Please check configuration file!");
                    return;
                }
                if (to == "")
                {
                    Console.Write("Parameter 'to' cannot be empty! Please check configuration file!");
                    return;
                }
                if (text == "")
                {
                    Console.Write("Parameter 'text' cannot be empty! Please check configuration file!");
                    return;
                }
                String hostName = Dns.GetHostName().ToLower();
                if (hostName != "")
                {
                    if (hostName.Length > 1)
                    {
                        hostName = hostName.ToLower();
                        hostName = hostName.Remove(1).ToUpper() + hostName.Substring(1);
                    }
                    else
                    {
                        hostName = hostName.ToUpper();
                    }
                }

                String userName = "******" + hostName + ")";

                String        serverURL = "tcp://" + ipAddressServer + ":" + portServer.ToString() + "/ServerObject.rem";
                IServerObject ServerObj = (IServerObject)Activator.GetObject(typeof(IServerObject), serverURL);
                ListClientsInfo = ServerObj.GetClientsInfo();

                if (to == "*")
                {
                    ListSendServer = ListClientsInfo;
                    if (ListSendServer.Count == 0)
                    {
                        Console.Write("Sorry. There is nobody to send this message.");
                        return;
                    }
                }
                else
                {
                    String[] arrayTo = to.Split(';');
                    foreach (String arr in arrayTo)
                    {
                        String tmp = arr.Trim();
                        if (tmp == "")
                        {
                            continue;
                        }
                        ListSend.Add(tmp);
                    }


                    for (int i = 0; i < ListSend.Count; i++)
                    {
                        for (int j = 0; j < ListClientsInfo.Count; j++)
                        {
                            if (Regex.IsMatch(ListClientsInfo[j].ToString(), ListSend[i].ToString(), RegexOptions.IgnoreCase))
                            {
                                ListSendServer.Add(ListClientsInfo[j].ToString().Split(')')[0].Trim() + ")");
                            }
                        }
                    }
                    if (ListSendServer.Count > 0)
                    {
                        ListSendServer.Sort();
                        int index = 0;
                        while (index < ListSendServer.Count - 1)
                        {
                            if (ListSendServer[index] == ListSendServer[index + 1])
                            {
                                ListSendServer.RemoveAt(index);
                            }
                            else
                            {
                                index++;
                            }
                        }
                    }
                    else
                    {
                        Console.Write("Sorry. There is nobody to send this message.");
                        return;
                    }
                }

                AsyncCallback       SendMessageCallBack = new AsyncCallback(SendMessageReturned);
                SendMessageDelegate SMDel = new SendMessageDelegate(ServerObj.SendMessageToServer);
                IAsyncResult        SendMessageAsyncResult = SMDel.BeginInvoke(userName, ListSendServer, text, false, SendMessageCallBack, SMDel);
                Console.Write("The message has been sent.");
            }
            catch (Exception ex)
            {
                Console.Write("Cannot send this message. Either RSend server is offline or incorrect parameters in configuration file."); // + ex.ToString());
            }
        }
        private bool AddEditArea(IServerObject serverObject, string creator, string versionName, int editCount, IEnvelope editZone, bool autoExpandZone = true)
        {
            bool          isOk        = false;
            IFeatureClass editAreasFC = null;

            try
            {
                // Open edit areas feature class in default workspace
                editAreasFC = GetEditAreaFeatureClass(serverObject);

                // Get field indices
                int creatorFIdx      = editAreasFC.FindField(_creatorFName);
                int creationDateFIdx = editAreasFC.FindField(_creationDateFName);
                int lastUpdateFIdx   = editAreasFC.FindField(_lastUpdateFName);
                int editCountFIdx    = editAreasFC.FindField(_editCountFName);
                int versionNameFIdx  = editAreasFC.FindField(_versionNameFName);

                DateTime currentTime = DateTime.Now;

                // Expand zone to make it more visible
                if (autoExpandZone)
                {
                    double expandRatio = (editCount <= 3) ? 1.5 : 1.15;
                    editZone.Expand(expandRatio, expandRatio, true);
                }

                // Check if there's an existing area
                IFeature       curFeature = null;
                IFeatureCursor fCursor    = GetEditAreas(serverObject, versionName);

                if (fCursor != null && (curFeature = fCursor.NextFeature()) != null)
                {
                    // Union the edit zones
                    IPolygon  curZone     = (IPolygon)curFeature.Shape;
                    IGeometry geometryBag = new GeometryBag();
                    geometryBag.SpatialReference = curZone.SpatialReference;
                    IGeometryCollection geometryCollection = (IGeometryCollection)geometryBag;
                    geometryCollection.AddGeometry(curZone);
                    geometryCollection.AddGeometry(editZone);

                    Polygon zoneConstructor      = new Polygon();
                    ITopologicalOperator newZone = (ITopologicalOperator)zoneConstructor;
                    newZone.ConstructUnion((IEnumGeometry)geometryCollection);

                    // Update feature values
                    curFeature.Shape = (IGeometry)newZone;
                    curFeature.Value[lastUpdateFIdx] = currentTime;
                    int curCount = (int)curFeature.Value[editCountFIdx];
                    curFeature.Value[editCountFIdx] = curCount + editCount;

                    // Store feature
                    curFeature.Store();
                    curFeature = null;
                }
                else
                {
                    // Save edit zone to feature class
                    IFeature zoneFeature = editAreasFC.CreateFeature();
                    zoneFeature.Value[creatorFIdx]      = creator;
                    zoneFeature.Value[creationDateFIdx] = currentTime;
                    zoneFeature.Value[lastUpdateFIdx]   = currentTime;
                    zoneFeature.Value[versionNameFIdx]  = versionName;
                    zoneFeature.Value[editCountFIdx]    = editCount;

                    // Set geometry
                    Polygon            editAreaPoly = new Polygon();
                    ISegmentCollection editAreaSeg  = (ISegmentCollection)editAreaPoly;
                    editAreaSeg.SetRectangle(editZone);
                    IZAware polyZAware = editAreaPoly as IZAware;
                    polyZAware.ZAware = false;
                    zoneFeature.Shape = polyZAware as IGeometry;

                    // Store feature
                    zoneFeature.Store();
                    fCursor.Flush();
                    fCursor     = null;
                    zoneFeature = null;
                }

                isOk = true;
            }
            catch (Exception e)
            {
                _serverLog.LogMessage(ServerLogger.msgType.infoStandard, _soiName + ".AddEditArea()",
                                      200, "Error while adding edit are: " + e.ToString());
            }
            finally
            {
                editAreasFC = null;
            }
            return(isOk);
        }
        private byte[] ProcessEditAreas(IServerObject serverObject, string versionName)
        {
            try
            {
                // Open utility network
                IDataset   unDataset = _soiUtil.GetUNDataset(serverObject, versionName);
                IWorkspace workspace = (IWorkspace)unDataset.Workspace;

                // Get all the dirty areas in the given validation area
                IBaseNetwork baseNetwork    = (IBaseNetwork)unDataset;
                ITable       dirtyAreaTable = baseNetwork.DirtyAreaTable;

                string shapeFieldName    = ((IFeatureClass)dirtyAreaTable).ShapeFieldName;
                int    areaFieldIndex    = dirtyAreaTable.FindField(shapeFieldName);
                int    creatorFieldIndex = dirtyAreaTable.FindField("CREATOR");

                // Get UN schema version
                IDatasetComponent dsComponent   = (IDatasetComponent)unDataset;
                IDEBaseNetwork    deBaseNetwork = (IDEBaseNetwork)dsComponent.DataElement;
                int unVersion = deBaseNetwork.SchemaGeneration;

                // Get inserts made to dirty areas table in the current version
                // For UN > V4, Errors are discarded (ERROCODE>0) to only retain true dirty areas
                // Note that changes made in the last edit session must be saved for this to work
                // as it is not possible to get the modifications until they have been saved.

                IVersionedTable versionedTable = (IVersionedTable)dirtyAreaTable;
                QueryFilter     qryFilter      = null;
                if (unVersion >= 4)
                {
                    qryFilter             = new QueryFilter();
                    qryFilter.WhereClause = _errorCodeFName + "=0";
                }

                IDifferenceCursor diffCursor = versionedTable.Differences(dirtyAreaTable, esriDifferenceType.esriDifferenceTypeInsert, qryFilter);

                // Loop through added rows to construct the modified zone extent
                int       editCount = 0;
                int       OID;
                IRow      diffRow;
                IEnvelope editZone = null;
                string    creator  = "";

                diffCursor.Next(out OID, out diffRow);

                // Return an error if no dirty areas found as it may be because the last edits were not saved
                if (diffRow == null)
                {
                    JSONObject responseJSON = new JSONObject();
                    responseJSON.AddBoolean("success", false);
                    JSONObject errorJSON = new JSONObject();
                    errorJSON.AddLong("extendedCode", (int)fdoError.FDO_E_DIRTY_AREA_BUILD_EXTENT_DO_NOT_INTERSECT);
                    errorJSON.AddString("message", "A dirty area is not present within the validate network topology input extent. A validate network topology process did not occur.");
                    JSONArray detailsJSON = new JSONArray();
                    detailsJSON.AddString("Make sure to save edits before validating.");
                    errorJSON.AddJSONArray("details", detailsJSON);
                    responseJSON.AddJSONObject("error", errorJSON);

                    return(Encoding.UTF8.GetBytes(responseJSON.ToJSONString(null)));
                }

                while (diffRow != null)
                {
                    editCount += 1;
                    creator    = diffRow.Value[creatorFieldIndex].ToString();
                    IGeometry rowShape = (IGeometry)diffRow.Value[areaFieldIndex];
                    IEnvelope rowArea  = rowShape.Envelope;
                    if (editZone != null)
                    {
                        editZone.Union(rowArea);
                    }
                    else
                    {
                        editZone = rowArea.Envelope;
                    }

                    diffCursor.Next(out OID, out diffRow);
                }
                diffCursor     = null;
                versionedTable = null;
                workspace      = null;

                // Add new or modify existing edit zone
                if (editZone != null)
                {
                    AddEditArea(serverObject, creator, versionName, editCount, editZone);
                }
            }
            catch (Exception e)
            {
                _serverLog.LogMessage(ServerLogger.msgType.infoStandard, _soiName + ".AddEditArea()",
                                      200, "Error while adding edit are: " + e.ToString());
            }

            return(null);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="MapServer"/> class.
 /// </summary>
 /// <param name="serverObject">The server object.</param>
 public MapServer(IServerObject serverObject)
 {
     Server = serverObject as IMapServer3;
     if (_server == null)
         throw new Exception("Unable to access the map server.");
 }
 public ServerObjectWrapper(IServerObject serverObject)
 {
     ServerObject = serverObject;
 }