#!/usr/bin/env python3
# Copyright 2019 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

from __future__ import print_function

import sys

import dbus
import flimflam

if len(sys.argv) < 2:
    print('Usage: %s <ssid> [passphrase] [security]' % (sys.argv[0]))
    sys.exit(1)

print('Attempting to configure hidden service %s' % (sys.argv[1]))

flim = flimflam.FlimFlam(dbus.SystemBus())

ssid = sys.argv[1]
if len(sys.argv) > 2:
    if len(sys.argv) > 3:
        security = sys.argv[3]
    else:
        security = 'psk'
    passphrase = sys.argv[2]
else:
    security = 'none'
    passphrase = None

params = {
    'Type': 'wifi',
    'Mode': 'managed',
    'SSID': ssid,
    'WiFi.HiddenSSID': True,
    'SecurityClass': security,
}
if passphrase:
    params['Passphrase'] = passphrase

flim.manager.ConfigureService(params, signature='a{sv}')
