Works with a Dictionary like this:

["Key":["value1", "value2"]]

        let array = DICTIONARY.values.reduce([], +)
//Remove Empty Keys
            for (key, value) in DICTIONARY{
                if value == [] {
                    print("Key: ", key)
                    self.defaultDevicesSections.removeValue(forKey: key)
                }
            }

Sollte optimalerweise in der AppDelegate unter "didFinishLaunchingWithOptions" untergebracht werden:

let isFirstLaunch = UserDefaults.isFirstLaunch()
 if isFirstLaunch == true {
            print("firstStart")
        } else {
            print("notfirstStart")
        }

Snip um die Navigationsleiste komplett transparent zu machen:

let visualEffectView   = UIVisualEffectView(effect: UIBlurEffect(style: .light))
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0)
UINavigationBar.appearance().isTranslucent = true
UINavigationBar.appearance().addSubview(visualEffectView)
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)

Ich hatte ein paar Probleme mit Swift 3 eine URLSession mit aktivierter Authentifizierung zustande zu bekommen. Viele Anleitungen gelten noch für Swift 2, hier mal mein Code (Am beispiel einer Json Abfrage):

let url = URL(string: "http://blublbub.com/json")!
        print (url)

        let config = URLSessionConfiguration.default
        let username = "user"
        let password = "password"
        let loginData = String(format: "%@:%@", username, password).data(using: String.Encoding.utf8)!
        let base64LoginData = loginData.base64EncodedString()
        let authString = "Basic \(base64LoginData)"
        config.httpAdditionalHeaders = ["Authorization" : authString]

        let urlSession = URLSession(configuration: config)

        let task = urlSession.dataTask(with: url) { (data, response, error) in

            let jsonData =  try! JSONSerialization.jsonObject(with: data!, options: []) as? [String: AnyObject]


            }
        }

        task.resume()

Zusätzlich hier noch ein snip für HTTP Requests:

let devURL = URL(string: "http://url.com")

let username = "user"
let password = "password"
let loginData = String(format: "%@:%@", username, password).data(using: String.Encoding.utf8)!
let base64LoginData = loginData.base64EncodedString()

//HTTP Request:
let request = NSMutableURLRequest(url: devURL!)
request.httpMethod = "GET"
request.setValue("Basic \(base64LoginData)", forHTTPHeaderField: "Authorization")

let task = URLSession.shared.dataTask(with: request as URLRequest){
    data, response, error in
    if error != nil{
        print("error=\(String(describing: error))")
        return
    }

    let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
    print("responseString=\(String(describing: responseString))")

}

task.resume()

Folgende Codesnippets helfen um ein paar Teile von Plesk remote ein Backup z.B. auf ein NAS (auf das optimalerweise SSH - Zugriff möglich ist). Angenehmer wird es wenn eine SSH Config für den Host vorhanden ist, siehe den entsprechenden Artikel

  1. Mails:

    rsync -au -e ssh $SSHCONNECTION$:/var/qmail/mailnames /$ZIELVERZEICHNIS$/mailnames/

Das kann natürlich auf beliebige Pfade angepasst werden.

  1. SQL Datenbanken

Dump der MySQL DB erstellen:

ssh $SSHCONNECTION$'plesk db dump $DBNAME$ > /root/$DBNAME$.sql'

Dump kopieren:

rsync -au -e ssh $SSHCONNECTION$:/root/*.sql /$ZIELVERZEICHNIS$/sql/
  1. VHosts (Plesk Websites)

    rsync -au -e ssh $SSHCONNECTION$:/var/www/vhosts/$DOMAINNAME$ /$ZIELVERZEICHNIS$/websites/

Wenn man mehrer Hosts per SSH bedienen will/muss, bietet sich die Nutzung eines Config Files.

Das ConfigFile wird erstellt unter $HOME$/.ssh/config

Beispiel:

Host $HOSTNAME$
        HostName $ZIEHL-IP$
        user $USERNAME$
        Port $PORT$
        IdentityFile ~/.ssh/$KEYFILE$

Danach kann man sich einfach mit

ssh $HOSTNAME$

verbinden.

Wlan - Profile über die Commandline importieren / exportieren / löschen mit netsh. Funktioniert ab Windows 7.

Gespeicherte Profile anzeigen:

netsh wlan show profiles 

Profil Exportieren

netsh wlan export profile %SSID% folder=c:\temp

Profil Löschen

netsh wlan delete profile name="$Profilname$"

Manchmal muss man auf ein entferntes Linux - System zugreifen ohne das man ein Passwort eingeben muss. So wirds gemacht ($USERID$ ist durch den entsprechenden >Benutzernamen zu ersetzen):

  1. Auf dem entfernten System

    ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/$USERID$/.ssh/id_rsa): Created directory '/home/$USERID$/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/$USERID$/.ssh/id_rsa. Your public key has been saved in /home/$USERID$/.ssh/id_rsa.pub.

Unter .ssh sollten jetzt folgende Dateien liegen:

  • id_rsa
  • id_rsa.pub
  1. id_rsa zu den authorized_keys hinzufügen

    cat id_rsa.pub >> authorized_keys

  2. authorized_keys verstecken und id_rsa.pub löschen

    chmod 600 authorized_keys rm id_rsa.pub

Damit ist auf dem entfernten System alles erledigt. Weiter gehts auf dem Client.

  1. In das .ssh Verzeichnis wechseln und die id_rsa vom entfernten System herunterladen

    cd .ssh scp user@server:.ssh/id_rsa .

    chmod 600 id_rsa

  2. Dann einmal testen:

    ssh user@server

Das sollte es gewesen sein.

HTTPS / SSL Weiterleitung in Plesk 12.5 (oder früher) aktivieren:

Um den SSL Redirect in Plesk zu aktivireen einfach m Plesk Admin Panel auf die gewünschte Domain gehen. Dort müssen zwei Einstellungen vorgenommen werden:

Es sollte unter den Hosting - Einstellungen die bevorzugte Domain gesetzt werden. "Keine" auszuwählen ist z.B. auch deshalb nicht ratsam weil Suchmaschinen die Site sonst doppelt finden würden und sie so negativer bewerten würden.

Dann muss unter "Einstellungen für Apache & nginx" im Feld "Zusätzliche Anweisungen für HTTP" folgender Code hinzugefügt werden:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Dann speichern und alles sollte wie gewünscht laufen.

Das ganze könnte natürlich auch über eine .htaccess Datei gelöst werden, allerdings würden wir diese bei Plesk - Updates unter Umstände verlieren.

enter image description here