Commit Graph

83 Commits

Author SHA1 Message Date
Luke De Mouy
553b14185b add ability to set the uid and gid when creating a user back in 2016-01-14 11:15:14 -07:00
Luke De Mouy
66c878697c Add Default Constructors to users and groups, and change Users to
Members in the Group class.
2016-01-13 20:38:42 -07:00
Luke De Mouy
b099e477ee various fixes to make things work and a few style changes, namely
General::ExecuteCommand cannot execute a command with a space in it so
it has to be added as an arg, and switched from .append to <<
2016-01-13 19:49:05 -07:00
Luke De Mouy
dbe7a84c3e Simply password changing code so that it doesn't repeat itself between
being and not being in a chroot
2016-01-13 18:04:14 -07:00
Luke De Mouy
b2368aadd4 Document all of the member functions in the header 2016-01-13 17:52:09 -07:00
Luke De Mouy
3d16bc3456 simplify the process for creating a new user and switch all system calls
over to using General::RunCommand();
2016-01-13 17:35:22 -07:00
Luke De Mouy
942d158db3 Document the functionality to create a new user and transfer it over to
using sysadm-general, this commit is done in preparation for simplifying
things from the following:

create zfs dataset -> create group associated with user -> manually
create the home directory -> Create the user, passing in the flags that
would have otherwise created the home directory normally, and sets the
groupID to that of the group we created before (which it should
automatically do if we don't specify a group) -> set the user password -
> enable flash -> chown the home folder over to the user

to:
create zfs dataset -> create the user using appropriate flags -> set user
password -> enable flash
2016-01-13 16:05:31 -07:00
Luke De Mouy
30c71db6ae Create the UserManager class, and pull in the functionality from the old
usermanager backend. Brings in the following functionality:
*Create/Delete User
*Create/Delete Group
*Add/Remove User from Group
*Change a Users Password/Shell/Full Name
*Get the list of Users, Groups, and Shells
2016-01-12 19:39:41 -07:00
Kris Moore
f659ce2fb1 Merge pull request #3 from ldemouy/master
Move system() calls over to their equivalents from sysadm-general.
2016-01-12 13:14:20 -05:00
Kris Moore
8f4deefda2 This is a change to the "listcron" API call, specifically it
adds the "scrub":"<value>" data, so if a scrub is scheduled for
a pool, it will be listed alongside the snap schedule, or on
its own if no snapshots are scheduled

REST Request:
-------------------------------
PUT /sysadm/lifepreserver
{
   "action" : "listcron"
}

REST Response:
-------------------------------
{
    "args": {
        "listcron": {
            "tank1": {
                "keep": "3",
                "schedule": "daily@18",
                "scrub": "daily@22"
            }
        }
    }
}

WebSocket Request:
-------------------------------
{
   "name" : "lifepreserver",
   "id" : "fooid",
   "namespace" : "sysadm",
   "args" : {
      "action" : "listcron"
   }
}

WebSocket Response:
-------------------------------
{
  "args": {
    "listcron": {
      "tank1": {
        "keep": "3",
        "schedule": "daily@18",
        "scrub": "daily@22"
      }
    }
  },
  "id": "fooid",
  "name": "response",
  "namespace": "sysadm"
}
2016-01-12 13:03:51 -05:00
Luke De Mouy
de6e1b41de Move system() calls over to their equivalents from sysadm-general.
Note: It would probably be a good idea for sysadm-general to have an API
for changing rc.conf
2016-01-12 10:48:00 -07:00
Kris Moore
cbf3ce8b8b Add new API call to schedule a cron scrub
Frequency Options: none, daily@XX, weekly@YY@XX, monthly@ZZ@XX
XX = Hour to execute, YY = Day of week to execute, ZZ = Day of month

REST Request:
-------------------------------
PUT /sysadm/lifepreserver
{
   "action" : "cronscrub",
   "pool" : "tank",
   "frequency" : "daily@22"
}

REST Response:
-------------------------------
{
    "args": {
        "cronscrub": {
            "frequency": "daily@22",
            "pool": "tank"
        }
    }
}

WebSocket Request:
-------------------------------
{
   "args" : {
      "action" : "cronscrub",
      "pool" : "tank",
      "frequency" : "daily@22"
   },
   "namespace" : "sysadm",
   "name" : "lifepreserver",
   "id" : "fooid"
}

WebSocket Response:
-------------------------------
{
  "args": {
    "cronscrub": {
      "frequency": "daily@22",
      "pool": "tank"
    }
  },
  "id": "fooid",
  "name": "response",
  "namespace": "sysadm"
}
2016-01-12 12:12:19 -05:00
Luke De Mouy
58db613ab7 Refactor to use Range Based For Loops since C++11 is enabled, also add
in LoadOpenPorts to the function to reset to the default config, so that
we have the correct set of open ports.
2016-01-12 02:58:35 -07:00
Luke De Mouy
43a4274565 Add in the ability to close or open multiple ports at once, by passing
in a QVector<PortInfo> to the OpenPort and ClosePort functions,
2016-01-12 02:37:07 -07:00
Luke De Mouy
aec5ce9aeb Move the #include<tuple> to where it should be in the header file as
opposed to the cpp
2016-01-12 02:26:06 -07:00
Luke De Mouy
4645d2fa20 rename PortType to Type, and simply the argument names from functions
from portType and portNumber to type and number respectively
2016-01-11 19:38:42 -07:00
Luke De Mouy
20ee1eaf62 Switch openports from being a nonintuitive string to using our PortInfo
struct and add comments to the /etc/ipfw.openports file when we write to
it.

Enable C++11 in the library.pro file as it's required for std::sort and
std::tie, since qSort is deprecated as of Qt 5.3
2016-01-11 19:28:02 -07:00
Luke De Mouy
17d2c131b5 Add in the option to restore the default configuration 2016-01-11 15:02:07 -07:00
Luke De Mouy
21f5cf6265 Add license header on firewall cpp file 2016-01-11 14:29:42 -07:00
Luke De Mouy
38ff401f11 Copy the functionality from the original utility into the Firewall
class, in particular adds in the following functionality:
Start, Stop, and Restart the firewall, and see if it's running
Open or Close a port, and get a list of the ports that are currently
open.

UI code was removed, and functions were modified as appropriate.
2016-01-11 14:17:02 -07:00
Ken Moore
35c090da89 Merge pull request #1 from ldemouy/master
Adds in the LookUpPort function call as well as the basic framework for a new sysadm-firewall management class.
2016-01-11 14:27:45 -05:00
Luke De Mouy
a326c3f811 renamed PortLookUp to firewall, and the files to sysadm-firewall 2016-01-11 12:22:54 -07:00
Luke De Mouy
fb508a8352 Move PortInfo struct out of PortLookUp class, and fiddled with the regex
to make it actually work based on testing. The filter operation now will
pickup things like 522/tcp in the QStringList if you're searching for
22/tcp, but testing seems to indicate that just taking the first one in
the list works for getting what we want.
2016-01-09 13:00:23 -07:00
Kris Moore
4c562a85b2 Add a new API call to create snapshot schedules for LifePreserver
REST Request:
-------------------------------
PUT /sysadm/lifepreserver
{
   "pool" : "mytank",
   "keep" : "10",
   "frequency" : "daily@11",
   "action" : "cronsnap"
}

REST Response:
-------------------------------
{
    "args": {
        "cronsnap": {
            "frequency": "daily@11",
            "keep": "10",
            "pool": "mytank"
        }
    }
}

WebSocket Request:
-------------------------------
{
   "args" : {
      "action" : "cronsnap",
      "keep" : "10",
      "frequency" : "daily@11",
      "pool" : "mytank"
   },
   "namespace" : "sysadm",
   "name" : "lifepreserver",
   "id" : "fooid"
}

WebSocket Response:
-------------------------------
{
  "args": {
    "cronsnap": {
      "frequency": "daily@11",
      "keep": "10",
      "pool": "mytank"
    }
  },
  "id": "fooid",
  "name": "response",
  "namespace": "sysadm"
}
2016-01-08 15:52:09 -05:00
Kris Moore
9160af8912 Add a new API call for sysadm/lifepserver which returns the system-wide
settings of the utility

REST Request:
-------------------------------
PUT /sysadm/lifepreserver
{
   "action" : "settings"
}

REST Response:
-------------------------------
{
    "args": {
        "settings": {
            "diskwarn": "85%",
            "email": "WARN",
            "emailaddress": "krismoore134@gmail.com",
            "recursive": "ON"
        }
    }
}

WebSocket Request:
-------------------------------
{
   "id" : "fooid",
   "args" : {
      "action" : "settings"
   },
   "namespace" : "sysadm",
   "name" : "lifepreserver"
}

WebSocket Response:
-------------------------------
{
  "args": {
    "settings": {
      "diskwarn": "85%",
      "email": "WARN",
      "emailaddress": "krismoore134@gmail.com",
      "recursive": "ON"
    }
  },
  "id": "fooid",
  "name": "response",
  "namespace": "sysadm"
}
2016-01-08 14:47:55 -05:00
Ken Moore
eee477167b Fix the cert/key paths used for the websocket server. 2016-01-08 14:12:22 -05:00
Ken Moore
e119e6f25a Merge branch 'master' of github.com:pcbsd/sysadm 2016-01-08 14:02:20 -05:00
Ken Moore
262ddb637d Commit some more work on on updating the websocket server to use wss. 2016-01-08 14:01:49 -05:00
Kris Moore
1ceb256922 Add the new listsnap API call 2016-01-08 13:48:51 -05:00
Ken Moore
ba654808db Get the TCP server running with SSL encryption all the time now (TLS1.2) 2016-01-08 12:07:17 -05:00
Ken Moore
fbbc72c3a4 Commit some more work converting the QTcpServer into an SslServer. The API test will now connect without failures - but it hangs there (no incoming messages detected) 2016-01-08 10:33:01 -05:00
Luke De Mouy
5cc11be9e6 add the port type to the PortInfo struct 2016-01-07 16:55:04 -07:00
Luke De Mouy
26f51d6822 Make portlookup take the port type into consideration when checking the
port
2016-01-07 16:42:11 -07:00
Ken Moore
8abeeac890 Merge branch 'master' of github.com:pcbsd/sysadm 2016-01-07 16:08:11 -05:00
Ken Moore
cce21a7677 Switch the sysadm server over to the secure socket protocols (wss/https) 2016-01-07 16:07:35 -05:00
Kris Moore
dbbef963ed Merge branch 'master' of https://github.com/pcbsd/sysadm 2016-01-07 15:41:09 -05:00
Kris Moore
aadcc88b4e Auto-generate SSL certs we can use for REST/WS servers 2016-01-07 15:40:43 -05:00
Ken Moore
40a7e41213 Fix a bug with event notifications and the new output structure (ensure it sets the output data properly). 2016-01-07 15:14:46 -05:00
Luke De Mouy
bdac469ed3 remove unnecessary <string> include, delete the QFile once we're done
with it. Add in a constructor that initializes the port cache, and add
in a destructor to delete the cache if portlookup is deleted.
2016-01-07 03:39:50 -07:00
Luke De Mouy
19c072bc81 update library.pro to build the portlookup class
Refactor portlookup from a function that reads a file each time it is
called to a class that reads the file into a QStringList the first time
that it is called and reuses it afterwards.
2016-01-06 18:04:47 -07:00
Luke De Mouy
37c6b2a7c9 Adds in the LookUpPort function call that returns a struct containing
information about a port including it's description and keyword.
SSH and the web port are current placeholders for the recommended ports list
2016-01-06 12:59:00 -07:00
Kris Moore
2bfdc0928b Fixed up the way REST / HTTP1.1 messages are formatted when passed
back to the client. Fixes an issue with bad header formatting, and
changed JSON to be more human-readable.

Also, changed the test script to only display the verbose error
output if it fails, otherwise it'll just return the JSON response
2016-01-05 17:55:22 -05:00
Ken Moore
7ffec5003b Add PUT REST support, and clean up the bytes calculation for the output JSON data. 2016-01-05 16:20:37 -05:00
Ken Moore
b425c7bb89 Allow "Post" Requests from REST input. 2016-01-05 15:54:55 -05:00
Ken Moore
838a5d9f60 Fix up some REST input parsing. 2016-01-05 15:50:38 -05:00
Ken Moore
35a90406ec Oops, forgot to comment out the auth user/pass line from the log file (don't need to keep that around). 2016-01-05 15:12:07 -05:00
Ken Moore
858ed83611 Add in the REST authorization protocols so REST communications now get through to the backend systems if valid requests. 2016-01-05 15:11:01 -05:00
Ken Moore
c08a458127 Quick fix for the unauthorized return value for bad requests. 2016-01-05 14:46:00 -05:00
Ken Moore
a1ba1044ee Don't 'close' a socket after a TCP reply - instead just disconnect from the host after all data has been transmitted. 2016-01-05 14:17:46 -05:00
Ken Moore
a5fcddcbbe Separate out the reply systems within the websocket.[cpp/h] files, and ensure that we close the TCP socket after sending back a reply. 2016-01-05 13:46:55 -05:00