#!/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 = ''

flim.manager.ConfigureService(({
    'Type': 'wifi',
    'Mode': 'managed',
    'SSID': ssid,
    'WiFi.HiddenSSID': True,
    'Security': security,
    'Passphrase': passphrase}))
