[ADMN] Mobile Admin for Minecraft (Android) v3.2.8 [1.4.7-R1.0]

Discussion in 'Archived: Plugin Releases' started by mkaltner, Feb 9, 2011.

  1. Offline

    mkaltner

    Mobile Admin for Minecraft (Android Client + Plugin):
    Version: v3.2.5
    Client Version: v3.2.7

    Mobile Admin for Minecraft allows you to administer common server properties, users, plugins and even chat right from your Android phone! Mobile Admin consists of two parts: a plugin (server) and an Android application (client). The server requires a username and password to connect which are specified in MobileAdmin.properties (stored in plugins folder).

    Current Versions:
    • Client - 3.2.8 (Requires server 3.2.3)
    • Server - 3.2.5 (Requires client 3.2.3+)
    DevBukkit:
    Mobile Admin for Minecraft also had a DevBukkit page.
    http://dev.bukkit.org/server-mods/minecraft-mobile-admin/

    Free vs Paid:
    In the spirit of Bukkit and its licensing, the free version of the client supports (and will continue to support) native Bukkit commands and API calls. The client and plugin are provided completely free without advertising support. I will continue to add features where I see a place and purpose for them and as Bukkit adds more features.

    The paid version of the client adds real-time server chat functionality and third party plugin support (which IMHO is outside the scope of free Bukkit support and helps me maintain this project, servers, time spent, etc...)

    PayPal and Non-US Users
    No Credit Card? No Android Market Support? No problem! Mobile Admin for Minecraft is also available via the SlideME third party Android market via the following link: Mobile Admin for Minecraft | SlideME

    Screenshots
    [​IMG] [​IMG] [​IMG] [​IMG]

    Screenshots (Widget)

    [​IMG]

    Downloads
    Plugin:
    Download the Plugin (or visit http://www.kaltner.net for more information)

    Client:
    You can download Mobile Admin for Minecraft from the market via one of the QR codes below (or click them for a link to the Android Market)

    Free Version
    [​IMG]
    Paid Version
    [​IMG]

    Supported Plugins (Paid Version):
    • Dynmap - If the client detects that dynamp is installed, a new Map tab will be added with your map in a WebView (based on the server name/IP address you're connected to)
    iOS Users
    Mobile Admin for Minecraft is only available on Android devices.
    However, Alec Gorge has written something similar to MMA for iOS.
    See his site for more information: http://adminiumapp.com/
    Please note however, Alec and Adminium are not affiliated with me or Mobile Admin for Minecraft in any way.

    Other Links:
    Features (open)

    Features:

    Server Functions
    • Console Command
    • Reload
    • Server Time (day/night)
    • Add Player to Whitelist (Paid, requires Whitelist plugin)
    • Remove Player from Whitelist (Paid, requires Whitelist plugin)
    Server Properties
    • PVP (true/false)
    • Hell World (true/false)
    • Max Players
    • Online Mode (true/false)
    • Server IP
    • Server Port
    • Spawn Animals (true/false)
    • Spawn Monsters (true/false)
    • Set Whitelist Kick Message (Paid, requires Whitelist plugin)
    Players
    • Give Item(s)
    • Kick
    • Send Message
    • Remove from Whitelist (Paid, requires Whitelist plugin)
    Plugins

    • Enable
    • Disable
    • Load new plugin
    Chat
    • Real-time server chat (Paid)
    Map
    • Seamless integration of dynmap (Paid, requires dynmap plugin)
    Changelog (open)


    Changelog:

    v3.2.5 Changes (Plugin)
    Note: This is a plugin update only, a new client is not required.
    Server Changes
    • Updated plugin to support Bukkit 1.3.1-R2.0 (switched from PlayerChatEvent to AsyncPlayerChatEvent)
    v3.2.7 Changes
    Note: This is a client update only, no new plugin required.
    Client Changes
    • Added support for "view-plugins" permission in Users.config
    • Added support for "view-console" permission in Users.config
    • Cleaned up code, warnings and other house keeping items.
    • Improved license validation
    v3.2.4 Changes (Plugin)
    Note: This is a plugin update only, a new client is not required.
    Server Changes
    • Updated plugin to support Bukkit 1.1-R6 and 1.2.3-R0.1 Beta
    v3.2.6 Changes
    Note: This is a client update only, no new plugin required.
    Client Changes
    • Updated server communication code to alleviate timeout issues while reading/writing from/to the server socket.
    • Update players, chat and console activities to use their custom adapters correctly (hopefully fixes force close issues some users are having)
    • Chat log no longer cached/saved when switching servers
    v3.2.5 Changes
    Note: This is a client update only, no new plugin required.
    Client Changes
    • Reverted ReentrantLock code to 3.2.2 to hopefully alleviate instability issues witnessed in the recent release(s)
    v3.2.4 Changes
    Note: This is a client update only, no new plugin required.
    Client Changes
    • Client now checks for map plugin asynchronously one time on load and once found, doesn't check again.
    • Updated widget code to remove erroneous code that was causing null point exceptions.
    v3.2.3 Changes
    This is a feature update and requires the updated client (app) and server (plugin)
    Client Changes
    • Updated widget pop-up dialogs to hide properly when home button is pressed
    • Added widget refresh speed to preferences in main app (Paid)
    • Client APK now optimized and obfuscated to reduce package size and security
    • Implemented Android License Verification to validate Android Market purchases (Paid)
    • Implemented SlideLock to validate SlideME purchases (Paid)
    • Miscellaneous bug fixes
    Server Changes
    • Created server command wrapper to utilize BukkitScheduler when/where applicable
    • Miscellaneous bug fixes
    Global Changes
    • Changed encryption algorithm from DES to AES/CBC/PKCS5Padding
    • Implemented salting of encryption keys during handshake to limit key transmission over the internet.
    v3.2.2 Changes
    Note: This is a plugin update only, a new client is not required.
    Server Changes
    • Resolved an issue with Bukkit ConsoleCommandSender in RB1240
    v3.2.2 Changes
    This is a feature update and requires the updated client (app) and server (plugin)
    Client Changes
    • Updated server calls to utilize UTF-16 where required to properly handle Unicode characters.
    Server Changes
    • Updated server methods to utilize UTF-16 where required to properly handle Unicode characters.
    v3.2.1 Changes
    Note: This is a client update only, no new plugin required.
    Server Changes
    • Fixed issue in Chat/Console screens where messages would double post.
    • Fixed issue with Properties screen that kept properties from saving.
    v3.2 Changes
    This is a feature update and requires the updated client (app) and server (plugin)
    Client Changes
    • Added a new Preferences menu option in the paid version
      • Contains options for Show Offline Players, Show Player Skins, Skin Cache Time, Chat/Console Refresh Speed and number of lines
    • Added 33 new items (including some from 1.9) to the item list and cleaned up old/removed items.
    • Further improvements to chat/server log bandwidth usage
    • Removed Hellworld preference as it is no longer applicable
    • Removed IP Address/Port preferences as these are not required and some hosting services don't allow them
    Server Changes
    • Updated plugin to check for Users.yml if Users.config does not exist
    • Updated getPlayerList call to support all or online only
    v3.1 Changes
    This is a feature update and requires the updated client (app) and server (plugin)
    Client Changes
    • Updated chat screen to request only latest chat log lines since last update.
    • Updated console screen to request only latest server log lines since last update.
    • Updated players screen to fix new minecraft default skin url.
    • Updated players screen error handling to hopefully stabilize the skin downloads for users experiencing force closes.
    Server Changes
    • Updated chat server call to take new last line retrieved parameter and only send new lines
    • Updated console server call to take new last line retrieved parameter and only send new lines
    v3.0.1 Changes
    Note: This is a client update only, no new plugin required.
    Server Changes
    • Fixed an issue with loading properties that do not or no longer exist in the server.properties file.
    v3.0.1 Changes
    Note: This is a client update only, no new plugin required.
    Client Changes
    • Added Danish language (Courtesy of KKLD)
    • Added French language (Courtesy of dpvDuncan)
    • Added Russian language (Courtesy of Cyber BlackSite)
    • Fixed console-command permission issue
      • The text box and send button are now removed from the console window when set to false for a user
    • Updated Message Details dialog (Chat tab) to use native language date/time format
    v3.0 Changes
    Note: This is a feature update and requires the updated client (app) and server (plugin)
    Client Changes
    • New Server Control widget (Paid)
    • Further improved connection/login code to be more seamless/transparent
    • Support for op/deop (Bukkit)
    • Support for ban/pardon (Bukkit)
    • Support for official whitelist (Bukkit)
    • Chat timestamps (Bukkit/hMod, Paid)
    • Allow -1 quantity
    • Added support to show all users that have logged into the server, online or not (Paid)
    • Added player status when clicking on a user, online or not (Paid)
    • Added player skin/icon to player list (Paid)
    • Enter button sends chat message (Paid)
    • Improved add/remove whitelist and ban/pardon functions via player tab
    • Added support for multiple users and permissions (Paid)
    • Map tab now shows if mobileadmin-dynmapurl is set to a url, regardless of which map plugin you have (Paid)
    • Improved login screen with support for multiple saved servers (Paid)
    • Interactive server console (Paid)
    • Multi-language support with German translation
    • Many more smaller/forgotten items
    Server Changes
    • Username/Password configuration moved to "plugins/MobileAdmin/Users.config"
    • Added new server stats functionality
    • Support for op/deop (Bukkit)
    • Support for ban/pardon (Bukkit)
    • Support for official whitelist (Bukkit)
    • Chat timestamps (Bukkit/hMod)
    • Trim properties read from the props file (spaces after username/password break login)
    • Added support to track all users that have logged into the server, online or not (also saves to disk for historical data)
    • Added support to save/load chat log to/from disk
    • Added multi-user support with individual user permissions (Paid, enforced by plugin)
    • Updated all broadcast messages to include username
    • Updated all server logs to include username
    • Now shows proper item name in messages when giving items to users
    • Ability to load server log
    • Many more smaller/forgotten items
    v2.4.2 Changes
    Note: This is a plugin update only, a new client is not required.
    Server Changes
    • Updated plugin to work with latest Recommended Build (733) by using a more standard approach to calling console commands.
    • Updated enable/disable plugin logging to show proper plugin name.
    • Updated enable plugin command to parse the plugin name correctly.
    • Updated load plugin command to properly find the file/plugin.
    v2.4.1 Changes
    Note: This is a plugin update only, a new client is not required.
    Server Changes
    • Updated plugin namespace and plugin.yml name to match the jar file name. CraftBukkit 670 started moving files to MobileAdminBukkit and the plugin was looking for the properties in MobileAdmin. CraftBukkit will accept MobileAdmin folder with this version and leave your files alone.
    v2.4 Changes
    Note: This is a plugin update only, a new client is not required.
    Server Changes
    • Fixed a bug introduced by the latest recommended build of CraftBukkit related to plugin commands.
    v2.4 Changes
    Note: This is a feature updated and requires the update client (app) and server (plugin)
    Client Changes
    • Added Map tab for users who have the "map" plugin (Paid/hMod)
    • Improved login screen field validation and behavior
    • Client now properly disconnects from server when phone goes to sleep (screen off)
    • Improved input validation in all screens
    Server Changes
    • Added mobileadmin-ipaddress property (Bukkit/hMod)
    • Added mobileadmin-dynmapurl property (hMod)
    v2.3 Changes
    Note: This is a feature updated and requires the update client (app) and server (plugin)
    Client Changes
    • Added hints to login screen server and port text boxes
    • Set default value of give item quantity dialog to 1
    • Added "No Players" to Player screen if no players are logged in
    • Added Console Command support (free and paid)
    • Added Monster Spawner to item list
    Server Changes
    • Moved properties file to MobileAdmin folder
    • Added mobileadmin-dynampurl property
      • To set a custom dynmap url, set this property
    • Added Console Command support
    v2.2.1 Changes
    Note: This is a client update only, no new plugin required.
    Client Changes
    • Addressed an issue in the Login screen where it would become unresponsive in an unsuccessful login scenario (version mismatch with the plugin, unable to connect to server or invalid credentials)
    v2.2 Changes
    Note: This is a client update only, no new plugin required.
    Client Changes
    • Updated threading in all tabs of the client improving performance and responsiveness.
    • Moved less frequently used server options to a new Properties page accessible via the menu.
    v2.1 Changes
    Note: This is a feature updated and requires the update client (app) and server (plugin)
    Client Changes
    • Added support for the Whitelist plugin (Bukkit / Paid)
    • Added support for the dynmap plugin (Bukkit / Paid)
    Server Changes
    • Added support for Whitelist plugin (Bukkit)
    Version 2.0.1
    Note: This is a plugin update only, a new client is not required (make sure you have the latest bukkit and craftbukkit however).
    Server Changes
    • Updated getWorlds call to handle the new method signature
    • Added better exception handling and logging
    • Added console logging of actions in a few ares
    Version 2.0 (Update)
    Note: This update does not require an updated plugin however I strong recommend it as I've changed the version checking a bit. If you do not get the latest plugin this time, the next client update will likely cause plugin crashes until you get the latest version.
    • Update the login screen layout to hopefully alleviate problems for users with smaller screens.
    Version 2.0
    • Initial Bukkit release
     
    PumaRxStudios, zok, JWhy and 17 others like this.
  2. Offline

    rmkilc

    I love this plugin! :cool: One thing I would like to see is configurable chat formatting with color, so I could change "<username> message" to something else.
     
  3. Offline

    Riddler165

    20:18:39 [INFO] [MobileAdmin] Loading server stats.
    20:18:39 [INFO] [MobileAdmin] Loading chat log.
    20:18:39 [INFO] [MobileAdmin] Loading users.
    20:18:39 [SEVERE] Error occurred while enabling MobileAdmin v3.2.2 (Is it up to
    date?): java.lang.Integer cannot be cast to java.lang.String
    java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Stri
    ng
    at net.kaltner.MobileAdmin.MobileAdmin.onEnable(MobileAdmin.java:95)
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:174)
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader
    .java:957)
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManage
    r.java:280)
    at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:171)
    at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:154
    )
    at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:297)
    at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:284)
    at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:152)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:348)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)

    EDIT: Thanks Kinkajou, that was the problem.
     
  4. Offline

    Kinkajou

    Riddler, I know I'm not Mike, and I don't know much about that code you posted, but I'm pretty sure your problem is a fully numeric password. Make your password letters and numbers and try again. Why do I say that?

    java.lang.Integer cannot be cast to java.lang.String


    Also I remember Mike mentioning it is the number one reason people have a problem with the app.
     
    Riddler165 likes this.
  5. Offline

    PaleFlyer

    I love this plugin, but i have been getting:

    07:21:23 [SEVERE] Exception in thread "ServerThread"
    07:21:23 [SEVERE] java.lang.OutOfMemoryError: Java heap space
    07:21:23 [SEVERE] at java.util.Arrays.copyOfRange(Arrays.java:3209)
    07:21:23 [SEVERE] at java.lang.String.<init>(String.java:215)
    07:21:23 [SEVERE] at java.io.BufferedReader.readLine(BufferedReader.java:331)
    07:21:23 [SEVERE] at java.io.BufferedReader.readLine(BufferedReader.java:362)
    07:21:23 [SEVERE] at net.kaltner.MobileAdmin.ServerThread.getServerLog(ServerThread.java:1354)
    07:21:23 [SEVERE] at net.kaltner.MobileAdmin.ServerThread.run(ServerThread.java:1075)
    07:21:23 [WARNING] Can't keep up! Did the system time change, or is the server overloaded?

    everytime i try to access the console from the app. the app is the most recent you have on the Android Market, and the Plugin is what ever was up on 11/8/11. the rest of the app appears to work fine. i can give you any data you need.

    i then opened the server log for a nother issue, and found this over and over:

    2011-11-15 02:44:12 [SEVERE] [MobileAdmin] Caught IOException while accepting client connection
    java.net.SocketException: Too many open files
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408)
    at java.net.ServerSocket.implAccept(ServerSocket.java:462)
    at java.net.ServerSocket.accept(ServerSocket.java:430)
    at net.kaltner.MobileAdmin.AdminServer.run(AdminServer.java:86)

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jul 18, 2016
  6. Offline

    Doc

    Can you interface w/ RTK for server stop/restart, and other timed restart events?
    Worth every penny!
    I would even pay an upgrade fee for the RTK bits.
     
  7. Offline

    Arton

    Looks very good,but i have a iphone so i can't use it :(. could you maby make it work with iphone if it isen't to much work for you? :p
     
  8. Offline

    ACStache

    wanted to pop in and say:
    Using the Samsung Epic (Galaxy S from Sprint) went from 2.2 to 2.3 with the update that came out yesterday and everything is still working wonderfully!
     
  9. Offline

    mkaltner

    We made it Minecon! If anyone is here, look for the shirt I posted above.
    Also, this weekend only, Mobile Admin paid version is 30% off!
    I'll be sure to check back in on the issues above when I get back home.
     
    khamseen_air and ACStache like this.
  10. Its causing problems at my that some things dont hve an direct effect. I notice at an error that I got from it thats it isn't using the server thread to acces the objects like players. Can you make it the use of the server thread, so I can see the effect of turning on the whitelist whitout the need to restart server?
    Edit: from http://wiki.bukkit.org/Scheduler_Programming:
    The main message is
    • don't call API methods from other threads (with some exceptions) <-----
    • don't put the main thread to sleep
     
  11. Offline

    MathijsNL

    Hello,

    I noticed the mobile admin plugin didnt load at server start.
    here is the error code:
    Code:
    23:10:28 [SEVERE] Error occurred while enabling MobileAdmin v3.2.2 (Is it up to date?): 2
    java.lang.ArrayIndexOutOfBoundsException: 2
            at net.kaltner.MobileAdmin.PlayerListener.loadChatLog(PlayerListener.java:119)
            at net.kaltner.MobileAdmin.MobileAdmin.onEnable(MobileAdmin.java:60)
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:174)
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:957)
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:280)
            at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:171)
            at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:154)
            at org.bukkit.craftbukkit.CraftServer.reload(CraftServer.java:413)
            at org.bukkit.Bukkit.reload(Bukkit.java:182)
            at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:22)
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:163)
            at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:355)
            at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:351)
            at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:506)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:485)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:374)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
    
    I fixed it by deleting the chat log, so there is no big problem at the moment. Maybe its usefull for you :)
     
  12. Offline

    Yoogoo

    I have a problem with this:(
    It said something that i dont have the MobileAdminPlugin installed but i have it installed.
    Please help me.
     
  13. Offline

    Kinkajou

    You're pretty bright, 3.2.2 IS the most up to date version released.
    You shouldn't make suggestions like that without even LOOKING to see if that is the most up to date.
     
  14. Offline

    khamseen_air

    If it shows as having loaded in your server log, then it may be a configuration problem. Could you show us your config file please? :)
     
  15. Offline

    Yoogoo

    Well my server is gone srry:(
     
  16. Offline

    khamseen_air

    Ok, so you're no longer needing help then?
     
  17. Offline

    mkaltner

    Thanks for the link.
    I'll take a look and determine how and where it applies to mobile admin.
    Always looking for ways to improve. :)

    FYI, I thought I'd give Mobile Admin a spin on the latest dev build (1470) and it appears to be working pretty well.
    Notice a few oddities but I'm not going to chase them down too much until the next RB is released.

    P.S. I was great seeing so many people at Minecon that know of and/or use mobile admin.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jul 18, 2016
  18. Offline

    Kinkajou

    Well, now that you're back, I said I had come up with a few things you could possibly add to the paid app.

    1. A setting so if a server you are monitoring goes offline or is unreachable and remains offline for a specific interval (say one hour) the app will throw a notification into your notification bar and possibly play a ringtone/vibrate.
    2. Setup so if players on the server say a codeword (ex: "Fuzzy Pickles") or run a command (ex: "/ea bananaphone") the next time the app on the phone communicates with the plugin a notification pops into the notification bar, vibrate and ringtone options as well. Granted it's not immediate, but it's still a way for players to call the admin if the admin is away from Minecraft for whatever reason (GASP a life outside of Minecraft, I speak blasphemy).

    That's all I really thought of, that and the Backup thing we talked about a few weeks ago.
     
  19. Offline

    Yoogoo

    nop srry for ask.
    Well have a good day.
     
  20. Offline

    khamseen_air

    No problem. :) Take care.
     
  21. Offline

    xBladeM6x

    So I try to connect to the plugin on my phone and when I press my server, it instantly tells me that it's "unable to connect to plugin". I bought this, and I feel like I'm kinda SOL.
     
  22. Offline

    Kinkajou

    You most likely have a configuration issue, don't give up on the app because of a hiccup.
    If you just got it and you're trying to use it on the most recent build of Bukkit, Mike is aware of some oddities but he's not going to try and fix them until after a recommended build for Bukkit comes out. If you've been using it fine and it's broken after updating Bukkit, see previous statement. If you're new to MMA, it could be a bad config or bad setup on your phone. Double check your port number and your IP address.
     
  23. Offline

    xBladeM6x

    Alright, fixed it all. Woooooo. :3 This plugin is BOSS. Even on my 1.0.0 server. (Unofficial bukkit mod that works with like 1.8.1 plugins, but has it all work on 1.0.0)
     
  24. Offline

    formaldehyd

    I can't add new users. :( Even if i stop the server, edit the users.config and restart the server the changes aren't saved.
    Is it possible that it doesn't work because i'm using bukkit for minecraf 1.0?
     
  25. Offline

    ibreaktoucher

    is it compatible with 1.0.0 ?
     
  26. Offline

    rmkilc

    Seems to be working just fine for me.

    Sent from my Motorola Atrix using Tapatalk
     
  27. Offline

    jmerch

    getting server error after update ( [SEVERE] Error occurred while enabling MobileAdmin v3.2.2 (Is it up to date?): while scanning for the next token; found character '\t' that cannot start any token

    n/m works now! best app ever!

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jul 18, 2016
  28. Offline

    mkaltner

    Thanks! :)
     
    MikeA likes this.
  29. Offline

    MikeA

    Great plugin & app, I bought the paid version and it works great. The Chat is pretty nice, and it seems like it's in real-time.
     
  30. Offline

    Kinkajou

    There's a slight delay, but yea, it's pretty real time. Like a 5 second delay or so.
     
  31. Offline

    mkaltner

    Chat Refresh Speed is configurable via the Preferences.
    It sends real-time, checks every N seconds for new messages.
    I may make this even more real time in v4 but not sure it's worth the effort as it works pretty good as it is.

    BTW, just tested RB1597, seems to pass my smoke tests.
    I'll do some more in depth testing later but so far it seems fine.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jul 18, 2016

Share This Page