• Recent
    • Unsolved
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    Host Screen Resolution

    Scheduled Pinned Locked Moved
    Feature Request
    7
    16
    5.6k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      networkguy
      last edited by networkguy

      Does Host Screen Resolution work with the latest version of FOG Server & Client?

      I’m running the following version of the server: 7591 (git) and 0.10.6 for the client but can’t seem to set the resolution of a machine to 800x600.

      Fog Configuration–>Fog Settings–>FOG Client - Display Manager is enabled with the default settings of 1024 x 768, 60.

      For the Host I am testing with I have Display Manager enabled for the Service Settings and the Host Screen Resolution are set to 60, 800, 600.

      They appear to be set in the database appropriately as well.

      mysql> select * from hostScreenSettings;
      +-------+-----------+----------+-----------+------------+----------------+-----------+-----------+
      | hssID | hssHostID | hssWidth | hssHeight | hssRefresh | hssOrientation | hssOther1 | hssOther2 |
      +-------+-----------+----------+-----------+------------+----------------+-----------+-----------+
      |     1 |         4 |      800 |       600 |         60 |              0 |         0 |         0 |
      +-------+-----------+----------+-----------+------------+----------------+-----------+-----------+
      

      I’ve rebooted a few times, logged off and back on, as well as uninstalled and re-installed the Fog client with no success. I do not see any mention of that module in the FOG.log either.

      1 Reply Last reply Reply Quote 0
      • S
        Sebastian Roth Moderator
        last edited by

        @networkguy AFAIK this was very low priority on the list of features for the new client. As the new client is cross platform I guess this would be hell to make it work for windows, linux and mac os x… @Jbob?

        Going to move this to feature requests as it isn’t really a bug as I see it.

        Web GUI issue? Please check apache error (debian/ubuntu: /var/log/apache2/error.log, centos/fedora/rhel: /var/log/httpd/error_log) and php-fpm log (/var/log/php*-fpm.log)

        Please support FOG if you like it: https://wiki.fogproject.org/wiki/index.php/Support_FOG

        1 Reply Last reply Reply Quote 0
        • J
          Joe Schmitt Senior Developer
          last edited by Joe Schmitt

          @networkguy 0.10.0+ removed DisplayManager from the client. As @Sebastian-Roth pointed at, its a very “Windows only” thing and never received much use compared to how much effort went into maintaining it. @Tom-Elliott, perhaps we can add some kind of “warning” next to display manager stating it isn’t present in 0.10.0+ ?

          Obviously if there is enough support for it, we can add back display manager, but we won’t be porting it to OSX or Linux.

          Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG! Get in contact with me (chat bubble in the top right corner) if you want to join in.

          Wayne WorkmanW 1 Reply Last reply Reply Quote 0
          • Wayne WorkmanW
            Wayne Workman @Joe Schmitt
            last edited by

            @Jbob We do the ACT exam at my school district in the high schools. Resolution for the exam must be set to 800x600, it’s required by the testing software. It’s a pain to go set this manually in the labs, and un-set it when testing is over. I’d really appreciate it if the DisplayManager functionality could be worked back into 0.10.x.

            Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG!
            Daily Clean Installation Results:
            https://fogtesting.fogproject.us/
            FOG Reporting:
            https://fog-external-reporting-results.fogproject.us/

            S 1 Reply Last reply Reply Quote 0
            • J
              Joe Schmitt Senior Developer
              last edited by

              A powershell snapin would do what you want:

              https://community.spiceworks.com/scripts/show/1854-change-screen-resolution-with-powershell

              Simply deploy the the snapin to any computers you want in ACT mode. I’m not saying a definitive no to display manager yet, but as you can see there are simple ways to replicate what it did with snapins.

              Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG! Get in contact with me (chat bubble in the top right corner) if you want to join in.

              1 Reply Last reply Reply Quote 0
              • S
                Sebastian Roth Moderator @Wayne Workman
                last edited by

                @Wayne-Workman said in Host Screen Resolution:

                We do the ACT exam at my school district in the high schools. Resolution for the exam must be set to 800x600, it’s required by the testing software.

                Holy cow… that’s a requirement! Wouldn’t have expected to hear that and obviously didn’t know that this feature is widely in use. Hope you can get this solved via snapins.

                Web GUI issue? Please check apache error (debian/ubuntu: /var/log/apache2/error.log, centos/fedora/rhel: /var/log/httpd/error_log) and php-fpm log (/var/log/php*-fpm.log)

                Please support FOG if you like it: https://wiki.fogproject.org/wiki/index.php/Support_FOG

                Wayne WorkmanW 1 Reply Last reply Reply Quote 0
                • Wayne WorkmanW
                  Wayne Workman @Sebastian Roth
                  last edited by Wayne Workman

                  @Sebastian-Roth From ACT’s web site:

                  The ACT® is the leading US college admissions test, measuring what you learn in high school to determine your academic readiness for college.
                  http://www.act.org/content/act/en/products-and-services/the-act.html

                  The software is used in many colleges as an entry exam, as well as in high schools for seniors.

                  Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG!
                  Daily Clean Installation Results:
                  https://fogtesting.fogproject.us/
                  FOG Reporting:
                  https://fog-external-reporting-results.fogproject.us/

                  1 Reply Last reply Reply Quote 0
                  • T
                    Tom S Developer
                    last edited by

                    I usually hate to throw out 3rd party software in this forum, but I too have software that requires certain screen resolutions. I use NirCmd with a simple batch file as a snapin job.

                    Download the app and add it to a share that can be accessed by a non user account. This would be everyone or domain computer (if on domain) permissions. Make sure that the file is marked read/execute by that group.

                    next simply create a batch file with:

                    @echo off
                    \\sharename\folder\nircmd.exe setdisplay 800 600 60
                    

                    next create snapin and upload that new batch file and viola

                    Again not a solution but this how I do it

                    -T

                    N 1 Reply Last reply Reply Quote 0
                    • N
                      networkguy @Tom S
                      last edited by networkguy

                      @Tom-S
                      Hi Tom. I tried that approach but it doesn’t seem to be working when run it as a snapin. When logged in as Administrator I run the exact same command (i just append the -updatereg in my case) and it does what is expected. Have you run into this behavior? I’m using Windows 7 64 bit and the latest nircmd.exe 64 bit.

                      Log file containing the error:

                      ------------------------------------------------------------------------------
                      ---------------------------------SnapinClient---------------------------------
                      ------------------------------------------------------------------------------
                       5/17/2016 9:30 AM Client-Info Client Version: 0.10.6
                       5/17/2016 9:30 AM Client-Info Client OS:      Windows
                       5/17/2016 9:30 AM Client-Info Server Version: 7613
                       5/17/2016 9:30 AM Middleware::Response Success
                       5/17/2016 9:30 AM SnapinClient Snapin Found:
                       5/17/2016 9:30 AM SnapinClient     ID: 12
                       5/17/2016 9:30 AM SnapinClient     RunWith: 
                       5/17/2016 9:30 AM SnapinClient     RunWithArgs: 
                       5/17/2016 9:30 AM SnapinClient     Name: vmware_800x600x16
                       5/17/2016 9:30 AM SnapinClient     File: vmware_800x600x16.bat
                       5/17/2016 9:30 AM SnapinClient     Created: 2016-05-17 09:27:58
                       5/17/2016 9:30 AM SnapinClient     Args: 
                       5/17/2016 9:30 AM SnapinClient     Action: 
                       5/17/2016 9:30 AM Middleware::Communication Download: http://myfogserver/fog/service/snapins.file.php?mac=00:50:XX:XX:XX:XX||00:00:00:00:00:00:00:E0&taskid=12
                       5/17/2016 9:30 AM SnapinClient C:\Program Files (x86)\FOG\tmp\vmware_800x600x16.bat
                       5/17/2016 9:30 AM Bus {
                        "self": true,
                        "channel": "Notification",
                        "data": "{\r\n  \"title\": \"Installing vmware_800x600x16\",\r\n  \"message\": \"Please do not shutdown until this is completed\",\r\n  \"subjectID\": \"snapin-vmware_800x600x16\"\r\n}"
                      }
                       5/17/2016 9:30 AM Bus ERROR: Could not enter socket
                       5/17/2016 9:30 AM Bus ERROR: Cannot load Counter Name data because an invalid index '' was read from the registry.
                       5/17/2016 9:30 AM Bus Emmiting message on channel: Notification
                       5/17/2016 9:30 AM SnapinClient Starting snapin...
                       5/17/2016 9:30 AM SnapinClient Snapin finished
                       5/17/2016 9:30 AM SnapinClient Return Code: -1
                       5/17/2016 9:30 AM Bus {
                        "self": true,
                        "channel": "Notification",
                        "data": "{\r\n  \"title\": \"vmware_800x600x16 Installed\",\r\n  \"message\": \"Installation has finished and is now ready for use\",\r\n  \"subjectID\": \"snapin-vmware_800x600x16\"\r\n}"
                      }
                       5/17/2016 9:30 AM Bus ERROR: Could not enter socket
                       5/17/2016 9:30 AM Bus ERROR: Cannot load Counter Name data because an invalid index '' was read from the registry.
                       5/17/2016 9:30 AM Bus Emmiting message on channel: Notification
                       5/17/2016 9:30 AM Middleware::Communication URL: http://myfogserver/fog/service/snapins.checkin.php?taskid=12&exitcode=-1&mac=00:50:XX:XX:XX:XX||00:00:00:00:00:00:00:E0&newService&json
                      ------------------------------------------------------------------------------
                      
                      1 Reply Last reply Reply Quote 0
                      • J
                        Joe Schmitt Senior Developer
                        last edited by

                        Snapins run as SYSTEM so they behave differently. Have you tried the powershell command I linked to?

                        Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG! Get in contact with me (chat bubble in the top right corner) if you want to join in.

                        N 1 Reply Last reply Reply Quote 0
                        • N
                          networkguy @Joe Schmitt
                          last edited by

                          @Jbob
                          Thank you for the suggestion Jbob but something is wonky. 'The system cannot find the file specified.

                          ------------------------------------------------------------------------------
                          ---------------------------------SnapinClient---------------------------------
                          ------------------------------------------------------------------------------
                           5/17/2016 11:16 AM Client-Info Client Version: 0.10.6
                           5/17/2016 11:16 AM Client-Info Client OS:      Windows
                           5/17/2016 11:16 AM Client-Info Server Version: 7659
                           5/17/2016 11:16 AM Middleware::Response Success
                           5/17/2016 11:16 AM SnapinClient Snapin Found:
                           5/17/2016 11:16 AM SnapinClient     ID: 15
                           5/17/2016 11:16 AM SnapinClient     RunWith: powershell.exe -file
                           5/17/2016 11:16 AM SnapinClient     RunWithArgs: 
                           5/17/2016 11:16 AM SnapinClient     Name: Set-800x600
                           5/17/2016 11:16 AM SnapinClient     File: Set-800x600.ps1
                           5/17/2016 11:16 AM SnapinClient     Created: 2016-05-17 11:15:15
                           5/17/2016 11:16 AM SnapinClient     Args: 
                           5/17/2016 11:16 AM SnapinClient     Action: 
                           5/17/2016 11:16 AM Middleware::Communication Download: http://myfogserver/fog/service/snapins.file.php?mac=00:50:XX:XX:XX:XX||00:00:00:00:00:00:00:E0&taskid=15
                           5/17/2016 11:16 AM SnapinClient C:\Program Files (x86)\FOG\tmp\Set-800x600.ps1
                           5/17/2016 11:16 AM Bus {
                            "self": true,
                            "channel": "Notification",
                            "data": "{\r\n  \"title\": \"Installing Set-800x600\",\r\n  \"message\": \"Please do not shutdown until this is completed\",\r\n  \"subjectID\": \"snapin-Set-800x600\"\r\n}"
                          }
                           5/17/2016 11:16 AM Bus ERROR: Could not enter socket
                           5/17/2016 11:16 AM Bus ERROR: Cannot load Counter Name data because an invalid index '' was read from the registry.
                           5/17/2016 11:16 AM Bus Emmiting message on channel: Notification
                           5/17/2016 11:16 AM SnapinClient Starting snapin...
                           5/17/2016 11:16 AM SnapinClient ERROR: Could not start snapin
                           5/17/2016 11:16 AM SnapinClient ERROR: The system cannot find the file specified
                           5/17/2016 11:16 AM Middleware::Communication URL: http://myfogserver/fog/service/snapins.checkin.php?taskid=15&exitcode=-1&mac=00:50:XX:XX:XX:XX||00:00:00:00:00:00:00:E0&newService&json
                          ------------------------------------------------------------------------------```
                          1 Reply Last reply Reply Quote 0
                          • J
                            Joe Schmitt Senior Developer
                            last edited by Joe Schmitt

                            Runwith should just powershell.exe. Run with args should be -file (actually -NoProfile -File) would be safer.

                            Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG! Get in contact with me (chat bubble in the top right corner) if you want to join in.

                            N 1 Reply Last reply Reply Quote 0
                            • N
                              networkguy @Joe Schmitt
                              last edited by

                              @Jbob
                              Well, still struggling. First off the file I downloaded to be sourced had strangely formatted double quotes so that prevented the file from being interpreted correctly. Fixed that easily with a quick find/replace.

                              Secondly, the share that I was running these from appear to not have the appropriate permissions and I had to add in the -ExecutionPolicy Bypass which I completely overlooked the ability to set those options with the GUI (very nice!).

                              What I ended up with was putting the file to be sourced in the ps1 that has the resolution I’m looking for and uploading that as a snapin. It runs perfectly fine when I manually download and run on the workstation but it is still giving me an error when running as a FOG snapin.

                              Powershell script [Set-800x600.ps1]:

                              Function Set-ScreenResolution { 
                              param ( 
                              [Parameter(Mandatory=$true, 
                                         Position = 0)] 
                              [int] 
                              $Width, 
                              [Parameter(Mandatory=$true, 
                                         Position = 1)] 
                              [int] 
                              $Height 
                              ) 
                              $pinvokeCode = @" 
                              using System; 
                              using System.Runtime.InteropServices; 
                              namespace Resolution 
                              { 
                                  [StructLayout(LayoutKind.Sequential)] 
                                  public struct DEVMODE1 
                                  { 
                                      [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] 
                                      public string dmDeviceName; 
                                      public short dmSpecVersion; 
                                      public short dmDriverVersion; 
                                      public short dmSize; 
                                      public short dmDriverExtra; 
                                      public int dmFields; 
                                      public short dmOrientation; 
                                      public short dmPaperSize; 
                                      public short dmPaperLength; 
                                      public short dmPaperWidth; 
                                      public short dmScale; 
                                      public short dmCopies; 
                                      public short dmDefaultSource; 
                                      public short dmPrintQuality; 
                                      public short dmColor; 
                                      public short dmDuplex; 
                                      public short dmYResolution; 
                                      public short dmTTOption; 
                                      public short dmCollate; 
                                      [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] 
                                      public string dmFormName; 
                                      public short dmLogPixels; 
                                      public short dmBitsPerPel; 
                                      public int dmPelsWidth; 
                                      public int dmPelsHeight; 
                                      public int dmDisplayFlags; 
                                      public int dmDisplayFrequency; 
                                      public int dmICMMethod; 
                                      public int dmICMIntent; 
                                      public int dmMediaType; 
                                      public int dmDitherType; 
                                      public int dmReserved1; 
                                      public int dmReserved2; 
                                      public int dmPanningWidth; 
                                      public int dmPanningHeight; 
                                  }; 
                                  class User_32 
                                  { 
                                      [DllImport("user32.dll")] 
                                      public static extern int EnumDisplaySettings(string deviceName, int modeNum, ref DEVMODE1 devMode); 
                                      [DllImport("user32.dll")] 
                                      public static extern int ChangeDisplaySettings(ref DEVMODE1 devMode, int flags); 
                                      public const int ENUM_CURRENT_SETTINGS = -1; 
                                      public const int CDS_UPDATEREGISTRY = 0x01; 
                                      public const int CDS_TEST = 0x02; 
                                      public const int DISP_CHANGE_SUCCESSFUL = 0; 
                                      public const int DISP_CHANGE_RESTART = 1; 
                                      public const int DISP_CHANGE_FAILED = -1; 
                                  } 
                                  public class PrmaryScreenResolution 
                                  { 
                                      static public string ChangeResolution(int width, int height) 
                                      { 
                                          DEVMODE1 dm = GetDevMode1(); 
                                          if (0 != User_32.EnumDisplaySettings(null, User_32.ENUM_CURRENT_SETTINGS, ref dm)) 
                                          { 
                                              dm.dmPelsWidth = width; 
                                              dm.dmPelsHeight = height; 
                                              int iRet = User_32.ChangeDisplaySettings(ref dm, User_32.CDS_TEST); 
                                              if (iRet == User_32.DISP_CHANGE_FAILED) 
                                              { 
                                                  return "Unable To Process Your Request. Sorry For This Inconvenience."; 
                                              } 
                                              else 
                                              { 
                                                  iRet = User_32.ChangeDisplaySettings(ref dm, User_32.CDS_UPDATEREGISTRY); 
                                                  switch (iRet) 
                                                  { 
                                                      case User_32.DISP_CHANGE_SUCCESSFUL: 
                                                          { 
                                                              return "Success"; 
                                                          } 
                                                      case User_32.DISP_CHANGE_RESTART: 
                                                          { 
                                                              return "You Need To Reboot For The Change To Happen.\n If You Feel Any Problem After Rebooting Your Machine\nThen Try To Change Resolution In Safe Mode."; 
                                                          } 
                                                      default: 
                                                          { 
                                                              return "Failed To Change The Resolution"; 
                                                          } 
                                                  } 
                                              } 
                                          } 
                                          else 
                                          { 
                                              return "Failed To Change The Resolution."; 
                                          } 
                                      } 
                                      private static DEVMODE1 GetDevMode1() 
                                      { 
                                          DEVMODE1 dm = new DEVMODE1(); 
                                          dm.dmDeviceName = new String(new char[32]); 
                                          dm.dmFormName = new String(new char[32]); 
                                          dm.dmSize = (short)Marshal.SizeOf(dm); 
                                          return dm; 
                                      } 
                                  } 
                              } 
                              "@ 
                              Add-Type $pinvokeCode -ErrorAction SilentlyContinue 
                              [Resolution.PrmaryScreenResolution]::ChangeResolution($width,$height) 
                              }
                              
                              #Call Function Set-ScreenResolution & set resolution
                              #Example Set-ScreenResolution 1024 768 or Set-ScreenResolution 1280 1024
                              
                              Set-ScreenResolution 800 600
                              

                              Error in fog.log

                              ------------------------------------------------------------------------------
                              ---------------------------------SnapinClient---------------------------------
                              ------------------------------------------------------------------------------
                               5/17/2016 11:53 AM Client-Info Client Version: 0.10.6
                               5/17/2016 11:53 AM Client-Info Client OS:      Windows
                               5/17/2016 11:53 AM Client-Info Server Version: 7659
                               5/17/2016 11:53 AM Middleware::Response Success
                               5/17/2016 11:53 AM SnapinClient Snapin Found:
                               5/17/2016 11:53 AM SnapinClient     ID: 20
                               5/17/2016 11:53 AM SnapinClient     RunWith: powershell.exe
                               5/17/2016 11:53 AM SnapinClient     RunWithArgs: -ExecutionPolicy Bypass -NoProfile -File
                               5/17/2016 11:53 AM SnapinClient     Name: Set_Resolution_800x600
                               5/17/2016 11:53 AM SnapinClient     File: Set-800x600.ps1
                               5/17/2016 11:53 AM SnapinClient     Created: 2016-05-17 11:52:32
                               5/17/2016 11:53 AM SnapinClient     Args: 
                               5/17/2016 11:53 AM SnapinClient     Action: 
                               5/17/2016 11:53 AM Middleware::Communication Download: http://myfogserver/fog/service/snapins.file.php?mac=00:50:XX:XX:XX:XX||00:00:00:00:00:00:00:E0&taskid=20
                               5/17/2016 11:53 AM SnapinClient C:\Program Files (x86)\FOG\tmp\Set-800x600.ps1
                               5/17/2016 11:53 AM Bus {
                                "self": true,
                                "channel": "Notification",
                                "data": "{\r\n  \"title\": \"Installing Set_Resolution_800x600\",\r\n  \"message\": \"Please do not shutdown until this is completed\",\r\n  \"subjectID\": \"snapin-Set_Resolution_800x600\"\r\n}"
                              }
                               5/17/2016 11:53 AM Bus ERROR: Could not enter socket
                               5/17/2016 11:53 AM Bus ERROR: Cannot load Counter Name data because an invalid index '' was read from the registry.
                               5/17/2016 11:53 AM Bus Emmiting message on channel: Notification
                               5/17/2016 11:53 AM SnapinClient Starting snapin...
                               5/17/2016 11:53 AM SnapinClient Snapin finished
                               5/17/2016 11:53 AM SnapinClient Return Code: 0
                               5/17/2016 11:53 AM Bus {
                                "self": true,
                                "channel": "Notification",
                                "data": "{\r\n  \"title\": \"Set_Resolution_800x600 Installed\",\r\n  \"message\": \"Installation has finished and is now ready for use\",\r\n  \"subjectID\": \"snapin-Set_Resolution_800x600\"\r\n}"
                              }
                               5/17/2016 11:53 AM Bus ERROR: Could not enter socket
                               5/17/2016 11:53 AM Bus ERROR: Cannot load Counter Name data because an invalid index '' was read from the registry.
                               5/17/2016 11:53 AM Bus Emmiting message on channel: Notification
                               5/17/2016 11:53 AM Middleware::Communication URL: http://myfogserver/fog/service/snapins.checkin.php?taskid=20&exitcode=0&mac=00:50:XX:XX:XX:XX||00:00:00:00:00:00:00:E0&newService&json
                              ------------------------------------------------------------------------------
                              
                              N 1 Reply Last reply Reply Quote 0
                              • JunkhackerJ
                                Junkhacker Developer
                                last edited by

                                you might try this modification to the arguments
                                Snapin Run With : powershell.exe
                                Snapin run with argument : -ExecutionPolicy Bypass -command "& ’
                                Snapin File : script.ps1
                                Snapin Args: ’ "
                                the -command "& '
                                and ’ "
                                are to wrap the .ps1 file in quotes

                                signature:
                                Junkhacker
                                We are here to help you. If you are unresponsive to our questions, don't expect us to be responsive to yours.

                                1 Reply Last reply Reply Quote 0
                                • N
                                  networkguy @networkguy
                                  last edited by

                                  @networkguy
                                  Giving up on this. It seems that I need to be logged in as a user to make this work. When run through any of our scripting tools while the computer is at ctrl-alt-del just doesn’t seem to work.

                                  1 Reply Last reply Reply Quote 0
                                  • I
                                    ITCC
                                    last edited by

                                    Please note that it’s been said that the DisplayManager has been built back into the client.

                                    https://forums.fogproject.org/topic/8383/svn-5949-screenres-manager/8?loggedin

                                    @Joe-Schmitt said in Host Screen Resolution:

                                    @networkguy 0.10.0+ removed DisplayManager from the client. As @Sebastian-Roth pointed at, its a very “Windows only” thing and never received much use compared to how much effort went into maintaining it. @Tom-Elliott, perhaps we can add some kind of “warning” next to display manager stating it isn’t present in 0.10.0+ ?

                                    Obviously if there is enough support for it, we can add back display manager, but we won’t be porting it to OSX or Linux.

                                    1 Reply Last reply Reply Quote 1
                                    • 1 / 1
                                    • First post
                                      Last post

                                    162

                                    Online

                                    12.0k

                                    Users

                                    17.3k

                                    Topics

                                    155.2k

                                    Posts
                                    Copyright © 2012-2024 FOG Project