0.0.2 • Published 6 years ago

system-configuration v0.0.2

Weekly downloads
2
License
MIT
Repository
-
Last release
6 years ago

Node macOS System Configuration Services

Request authorization and make changes to the macOS system configuration in JavaScript from Node.

Framework References:

Setup

npm i system-configuration

Example: Setting the System Proxy

const SC = require('system-configuration');

function setSystemProxy(host, port, callback) {
  // 1. request authorization from the user to modify the systems network configuration
  SC.requestAuthorization(
    ['system.services.systemconfiguration.network'],
    (token, err) => {
      if (err) {
        // was not authorized by user
        callback('not authorized');
      }

      // 2. get the primary network services configuration
      const primaryServiceId = getPrimaryServiceId();
      const systemPreferences = new SC.Preferences('name', token);
      const servicePreferences = systemPreferences.getNetworkService(
        primaryServiceId
      );

      // 3. grab the services proxy configuration
      const proxy = servicePreferences.getProtocol('Proxies');
      const configuration = proxy.getConfiguration();

      // 4. make changes
      configuration['HTTPEnable'] = true;
      configuration['HTTPProxy'] = host;
      configuration['HTTPPort'] = port;

      // 5. update the configuration
      proxy.setConfiguration(configuration);

      // 6. apply the updated configuration to the system
      if (!systemPreferences.commit() || !systemPreferences.apply()) {
        callback('update failed');
      }

      // 7. Success!
      callback(null);
    }
  );
}

// Find the primary network service identifier
function getPrimaryServiceId() {
  const primaryServiceKey = SC.createGlobalNetworkEntityKey(
    SC.Schema.Prefixes.State,
    SC.Schema.NetworkEntity.IPv4
  );
  const dynamicStore = new SC.DynamicStore('name');
  const primaryServiceId = dynamicStore.read(primaryServiceKey)[
    'PrimaryService'
  ];
}
0.0.2

6 years ago

0.0.1

6 years ago