Ignore:
Timestamp:
Sep 12, 2014, 11:14:11 AM (10 years ago)
Author:
alloc
Message:

fixes

Location:
binary-improvements/7dtd-server-fixes/src
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/7dtd-server-fixes/src/CustomCommands/TeleportPlayer.cs

    r174 r189  
    22using System;
    33using System.Collections.Generic;
     4using UnityEngine;
    45
    56namespace AllocsFixes.CustomCommands
     
    2425                {
    2526                        try {
    26                                 if (_params.Length != 4) {
     27                                if (_params.Length != 4 && _params.Length != 2) {
    2728                                        m_Console.SendResult ("Usage: teleportplayer <entityid|playername|steamid> <x> <y> <z>");
     29                                        m_Console.SendResult ("   or: teleportplayer <entityid|playername|steamid> <target entityid|playername|steamid>");
    2830                                } else {
    29                                         string steamid = PersistentContainer.Instance.Players.GetSteamID (_params [0], true);
    30                                         if (steamid == null) {
     31                                        Player p1 = PersistentContainer.Instance.Players.GetPlayerByNameOrId (_params [0], true);
     32                                        if (p1 == null) {
    3133                                                m_Console.SendResult ("Playername or entity/steamid id not found.");
    3234                                                return;
    3335                                        }
    34 
    35                                         Player p = PersistentContainer.Instance.Players [steamid];
    36                                         if (!p.IsOnline) {
     36                                        if (!p1.IsOnline) {
    3737                                                m_Console.SendResult ("Player not online.");
    3838                                                return;
    3939                                        }
    4040
    41                                         int x = int.MinValue;
    42                                         int.TryParse (_params [1], out x);
    43                                         int y = int.MinValue;
    44                                         int.TryParse (_params [2], out y);
    45                                         int z = int.MinValue;
    46                                         int.TryParse (_params [3], out z);
     41                                        if (_params.Length == 4) {
     42                                                int x = int.MinValue;
     43                                                int y = int.MinValue;
     44                                                int z = int.MinValue;
    4745
    48                                         if (x == int.MinValue || y == int.MinValue || z == int.MinValue) {
    49                                                 m_Console.SendResult ("At least one of the given coordinates is not a valid integer");
    50                                                 return;
     46                                                int.TryParse (_params [1], out x);
     47                                                int.TryParse (_params [2], out y);
     48                                                int.TryParse (_params [3], out z);
     49
     50                                                if (x == int.MinValue || y == int.MinValue || z == int.MinValue) {
     51                                                        m_Console.SendResult ("At least one of the given coordinates is not a valid integer");
     52                                                        return;
     53                                                }
     54
     55                                                p1.Entity.position.x = x;
     56                                                p1.Entity.position.y = y;
     57                                                p1.Entity.position.z = z;
     58                                        } else {
     59                                                Player p2 = PersistentContainer.Instance.Players.GetPlayerByNameOrId (_params [1], true);
     60                                                if (p2 == null) {
     61                                                        m_Console.SendResult ("Target playername or entity/steamid id not found.");
     62                                                        return;
     63                                                }
     64                                                if (!p2.IsOnline) {
     65                                                        m_Console.SendResult ("Target player not online.");
     66                                                        return;
     67                                                }
     68
     69                                                p1.Entity.position = p2.Entity.GetPosition();
    5170                                        }
    5271
    53                                         p.Entity.position.x = x;
    54                                         p.Entity.position.y = y;
    55                                         p.Entity.position.z = z;
    56                                         NetPackage_EntityPosAndRot pkg = new NetPackage_EntityPosAndRot (p.Entity);
     72                                        NetPackage_EntityPosAndRot pkg = new NetPackage_EntityPosAndRot (p1.Entity);
    5773
    58                                         p.ClientInfo.netConnection [0].Send (pkg);
     74                                        p1.ClientInfo.netConnection [0].Send (pkg);
    5975                                }
    6076                        } catch (Exception e) {
  • binary-improvements/7dtd-server-fixes/src/MapRendering/MapRenderBlockBuffer.cs

    r168 r189  
    3737                {
    3838                        bool res = false;
    39                         Monitor.Enter (blockMap);
    40                         try {
     39                        lock (blockMap) {
    4140                                string folder = Constants.MAP_DIRECTORY + "/" + (zoomLevel) + "/" + block.x;
    4241                                string fileName = folder + "/" + block.y + ".png";
     
    4847                                }
    4948                                currentBlockMap = fileName;
    50                         } finally {
    51                                 Monitor.Exit (blockMap);
    5249                        }
    5350                        return res;
  • binary-improvements/7dtd-server-fixes/src/MapRendering/MapRendering.cs

    r187 r189  
    5555                                        try {
    5656                                                if (!Instance.renderingFullMap) {
    57                                                         Monitor.Enter (Instance.zoomLevelBuffers);
    58                                                         try {
     57                                                        lock (Instance.zoomLevelBuffers) {
    5958                                                                Chunk c = (Chunk)o;
    6059                                                                Vector3i cPos = c.GetWorldPos ();
     
    7271                                                                        Instance.chunkSaveTimer.Start ();
    7372                                                                }
    74                                                         } finally {
    75                                                                 Monitor.Exit (Instance.zoomLevelBuffers);
    7673                                                        }
    7774                                                }
     
    103100                        );
    104101
    105                         Monitor.Enter (Instance.zoomLevelBuffers);
    106                         try {
     102                        lock (Instance.zoomLevelBuffers) {
    107103                                for (int i = 0; i < Constants.ZOOMLEVELS; i++) {
    108104                                        zoomLevelBuffers [i].ResetBlock ();
     
    152148                                        Log.Out (String.Format ("RenderMap: {0}/{1} ({2}%)", curFullMapPos.x, widthPix, (int)((float)curFullMapPos.x / widthPix * 100)));
    153149                                }
    154                         } finally {
    155                                 Monitor.Exit (Instance.zoomLevelBuffers);
    156150                        }
    157151
     
    178172                private void TimedRendering (object source, System.Timers.ElapsedEventArgs e)
    179173                {
    180                         Monitor.Enter (zoomLevelBuffers);
    181                         try {
     174                        lock (zoomLevelBuffers) {
    182175                                RenderDirtyChunks ();
    183176                                if (dirtyChunks.Count > 0)
    184177                                        Instance.chunkSaveTimer.Start ();
    185                         } finally {
    186                                 Monitor.Exit (zoomLevelBuffers);
    187178                        }
    188179                }
  • binary-improvements/7dtd-server-fixes/src/NetConnections/ConsoleOutputSeparator.cs

    r132 r189  
    2828                        Log.Out ("Executed command \"" + _command + "\" from player \"" + _playerID + "\"");
    2929
    30                         object obj = netCommandQueue;
    31                         Monitor.Enter (obj);
    32                         try {
     30                        lock (netCommandQueue) {
    3331                                isCurrentCommandFromClient = true;
    3432                                console.issuerOfCurrentClientCommand = _networkPlayer;
    3533                                console.ExecuteClientCmdInternal (_playerID, _command);
    3634                                isCurrentCommandFromClient = false;
    37                         } finally {
    38                                 Monitor.Exit (obj);
    3935                        }
    4036
     
    6157                {
    6258                        if (netCommandQueue.Count > 0) {
    63                                 object obj = netCommandQueue;
    64                                 Monitor.Enter (obj);
    65                                 try {
     59                                lock (netCommandQueue) {
    6660                                        issuerOfCurrentCommand = netCommandQueue [0].client;
    67                                         console.ExecuteRemoteCmdInternal (netCommandQueue [0].command, false);
     61                                        try {
     62                                                console.ExecuteRemoteCmdInternal (netCommandQueue [0].command, false);
     63                                        } catch (Exception e) {
     64                                                Log.Out("Exception while executing command: " + e);
     65                                        }
    6866                                        netCommandQueue.RemoveAt (0);
    6967                                        issuerOfCurrentCommand = null;
    70                                 } finally {
    71                                         Monitor.Exit (obj);
    7268                                }
    7369                        }
     
    7672                public static void QueueNetCommand (string _line, IConnection _con)
    7773                {
    78                         object obj = netCommandQueue;
    79                         Monitor.Enter (obj);
    80                         try {
     74                        lock (netCommandQueue) {
    8175                                netCommandQueue.Add (new NetCommand (_line, _con));
    82                         } finally {
    83                                 Monitor.Exit (obj);
    8476                        }
    8577                }
  • binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/TelnetConnection.cs

    r187 r189  
    3838
    3939                        if (endpoint is IPEndPoint) {
    40                                 endpointAddressHash = ((IPEndPoint)endpoint).Address.GetHashCode();
     40                                endpointAddressHash = ((IPEndPoint)endpoint).Address.GetHashCode ();
    4141                                //Log.Out ("Hash: " + endpointAddressHash);
    4242                        } else {
    43                                 Log.Out ("EndPoint is not an IPEndPoint but: " + endpoint.GetType().ToString());
     43                                Log.Out ("EndPoint is not an IPEndPoint but: " + endpoint.GetType ().ToString ());
    4444                        }
    4545
     
    7878                                        while (!IsClosed()) {
    7979                                                string line = reader.ReadLine ();
    80                                                 if (line != null) {
     80                                                if (line != null && line.Length > 0) {
    8181                                                        line = line.Trim ();
    82 
    83                                                         if (!IsAuthenticated ()) {
    84                                                                 if (line.Equals (GamePrefs.GetString (EnumGamePrefs.TelnetPassword))) {
    85                                                                         authenticated = true;
    86                                                                         WriteLine ("Logon successful.");
    87                                                                         WriteLine (string.Empty);
    88                                                                         WriteLine (string.Empty);
    89                                                                         WriteLine (string.Empty);
    90                                                                         LoginMessage ();
     82                                                        if (line.Length > 0) {
     83                                                                if (!IsAuthenticated ()) {
     84                                                                        if (line.Equals (GamePrefs.GetString (EnumGamePrefs.TelnetPassword))) {
     85                                                                                authenticated = true;
     86                                                                                WriteLine ("Logon successful.");
     87                                                                                WriteLine (string.Empty);
     88                                                                                WriteLine (string.Empty);
     89                                                                                WriteLine (string.Empty);
     90                                                                                LoginMessage ();
     91                                                                        } else {
     92                                                                                if (owner.RegisterFailedLogin (endpointAddressHash)) {
     93                                                                                        WriteLine ("Password incorrect, please enter password:");
     94                                                                                } else {
     95                                                                                        WriteLine ("Too many failed login attempts!");
     96                                                                                        Thread.Sleep (100);
     97                                                                                        Close ();
     98                                                                                        Log.Out ("Telnet connection closed for too many login attempts: " + endpoint);
     99                                                                                        break;
     100                                                                                }
     101                                                                        }
    91102                                                                } else {
    92                                                                         if (owner.RegisterFailedLogin(endpointAddressHash)) {
    93                                                                                 WriteLine ("Password incorrect, please enter password:");
    94                                                                         } else {
    95                                                                                 WriteLine ("Too many failed login attempts!");
    96                                                                                 Thread.Sleep(100);
     103                                                                        if (line.ToLower ().Equals ("exit")) {
     104                                                                                Log.Out ("Telnet connection closed by client: " + endpoint);
    97105                                                                                Close ();
    98                                                                                 Log.Out ("Telnet connection closed for too many login attempts: " + endpoint);
    99106                                                                                break;
    100107                                                                        }
     108                                                                        Log.Out ("Telnet executed \"" + line + "\" from: " + endpoint);
     109                                                                        ConsoleOutputSeparator.QueueNetCommand (line, this);
    101110                                                                }
    102                                                         } else {
    103                                                                 if (line.ToLower ().Equals ("exit")) {
    104                                                                         Log.Out ("Telnet connection closed by client: " + endpoint);
    105                                                                         Close ();
    106                                                                         break;
    107                                                                 }
    108                                                                 Log.Out ("Telnet executed \"" + line + "\" from: " + endpoint);
    109                                                                 ConsoleOutputSeparator.QueueNetCommand (line, this);
    110111                                                        }
    111112                                                }
  • binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Web/StaticHandler.cs

    r154 r189  
    3030                                byte[] content;
    3131                                if (cache) {
    32                                         Monitor.Enter (fileCache);
    33                                         try {
     32                                        lock (fileCache) {
    3433                                                if (!fileCache.ContainsKey (fn)) {
    3534                                                        if (!File.Exists (datapath + "/" + fn)) {
     
    4140
    4241                                                content = fileCache [fn];
    43                                         } finally {
    44                                                 Monitor.Exit (fileCache);
    4542                                        }
    4643                                } else {
     
    5552                                resp.ContentLength64 = content.Length;
    5653                                resp.OutputStream.Write (content, 0, content.Length);
    57                         } catch (FileNotFoundException e) {
     54                        } catch (FileNotFoundException) {
    5855                                resp.StatusCode = (int)HttpStatusCode.NotFound;
    5956                                if (logMissingFiles)
  • binary-improvements/7dtd-server-fixes/src/PersistentData/Inventory.cs

    r163 r189  
    2727                private void ProcessInv (List<InvItem> target, InventoryField[] sourceFields)
    2828                {
    29                         Monitor.Enter (target);
    30                         try {
     29                        lock (target) {
    3130                                target.Clear ();
    3231                                for (int i = 0; i < sourceFields.Length; i++) {
     
    4039                                        }
    4140                                }
    42                         } finally {
    43                                 Monitor.Exit (target);
    4441                        }
    4542                }
  • binary-improvements/7dtd-server-fixes/src/PersistentData/Players.cs

    r159 r189  
    4545                }
    4646
     47                public Player GetPlayerByNameOrId (string _nameOrId, bool _ignoreColorCodes)
     48                {
     49                        string sid = GetSteamID(_nameOrId, _ignoreColorCodes);
     50                        if (sid != null)
     51                                return this[sid];
     52                        else
     53                                return null;
     54                }
     55
    4756                public string GetSteamID (string _nameOrId, bool _ignoreColorCodes)
    4857                {
Note: See TracChangeset for help on using the changeset viewer.