<!doctype html> <html lang="en-us"> <head> <meta charset="utf-8"> <title>Mobileconfig Generator</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="css/main.css"> </head> <body> <div id="app"> <h1>1. Fill in the forms for your email configuration profile</h1> <p>Documentation can be found <a href="https://developer.apple.com/documentation/devicemanagement/configuring_multiple_devices_using_profiles">here</a> for common fields and <a href="https://developer.apple.com/documentation/devicemanagement/mail">here</a> for email specific fields. </p> <p> Everything happens in your browser, your data isn't sent anywhere. </p> <p> This is a free and open source software released under the GPL v3.0. The source code is available <a href="https://sr.ht/~crocmagnon/mobileconfig-generator/">on sourcehut</a>. </p> <div id="profile"> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version='1.0'> <dict> <key>PayloadContent</key> <array> <dict> <key><strong>EmailAccountType</strong></key> <string><select v-model="payload.EmailAccountType"> <option value="" disabled>Select...</option> <option>EmailTypeIMAP</option> <option>EmailTypePOP</option> </select></string> <key><strong>EmailAddress</strong></key> <string><input type="email" v-model="payload.EmailAddress" v-bind:placeholder="payloadPlaceholders.EmailAddress"></string> <key><strong>EmailAccountDescription</strong></key> <string><input type="text" v-model="payload.EmailAccountDescription" v-bind:placeholder="payloadPlaceholders.EmailAccountDescription"></string> <!-- Incoming --> <key>IncomingMailServerAuthentication</key> <string><select v-model="payload.IncomingMailServerAuthentication"> <option value="" disabled>Select...</option> <option>EmailAuthNone</option> <option>EmailAuthPassword</option> <option>EmailAuthCRAMMD5</option> <option>EmailAuthNTLM</option> <option>EmailAuthHTTPMD5</option> </select></string> <key>IncomingMailServerHostName</key> <string><input type="text" v-model="payload.IncomingMailServerHostName" v-bind:placeholder="payloadPlaceholders.IncomingMailServerHostName"></string> <key>IncomingMailServerPortNumber</key> <integer><input type="number" v-model="payload.IncomingMailServerPortNumber" v-bind:placeholder="payloadPlaceholders.IncomingMailServerPortNumber"></integer> <key>IncomingMailServerUsername</key> <string><input type="text" v-model="payload.IncomingMailServerUsername" v-bind:placeholder="payloadPlaceholders.IncomingMailServerUsername"></string> <key>IncomingMailServerUseSSL</key> <<input type="checkbox" v-model="payload.IncomingMailServerUseSSL">/> <!-- Outgoing --> <key>OutgoingMailServerAuthentication</key> <string><select v-model="payload.OutgoingMailServerAuthentication"> <option value="" disabled>Select...</option> <option>EmailAuthNone</option> <option>EmailAuthPassword</option> <option>EmailAuthCRAMMD5</option> <option>EmailAuthNTLM</option> <option>EmailAuthHTTPMD5</option> </select></string> <key>OutgoingMailServerHostName</key> <string><input type="text" v-model="payload.OutgoingMailServerHostName" v-bind:placeholder="payloadPlaceholders.OutgoingMailServerHostName"></string> <key>OutgoingMailServerPortNumber</key> <integer><input type="number" v-model="payload.OutgoingMailServerPortNumber" v-bind:placeholder="payloadPlaceholders.OutgoingMailServerPortNumber"></integer> <key>OutgoingMailServerUsername</key> <string><input type="text" v-model="payload.OutgoingMailServerUsername" v-bind:placeholder="payloadPlaceholders.OutgoingMailServerUsername"></string> <key>OutgoingMailServerUseSSL</key> <<input type="checkbox" v-model="payload.OutgoingMailServerUseSSL">/> <key>OutgoingPasswordSameAsIncomingPassword</key> <<input type="checkbox" v-model="payload.OutgoingPasswordSameAsIncomingPassword">/> <!-- Common keys --> <key>PayloadDisplayName</key> <string><input type="text" v-model="payload.PayloadDisplayName" v-bind:placeholder="payloadPlaceholders.PayloadDisplayName"></string> <key>PayloadDescription</key> <string><input type="text" v-model="payload.PayloadDescription" v-bind:placeholder="payloadPlaceholders.PayloadDescription"></string> <key>PayloadIdentifier</key> <string><input type="text" v-model="payload.PayloadIdentifier" v-bind:placeholder="payloadPlaceholders.PayloadIdentifier"></string> <key>PayloadType</key> <string>{{ payload.PayloadType }}</string> <key>PayloadUUID</key> <string>{{ payload.PayloadUUID() }}</string> <key>PayloadVersion</key> <integer>{{ payload.PayloadVersion }}</integer> </dict> </array> <!-- Common keys --> <key>PayloadDisplayName</key> <string><input type="text" v-model="container.PayloadDisplayName" v-bind:placeholder="containerPlaceholders.PayloadDisplayName"></string> <key>PayloadDescription</key> <string><input type="text" v-model="container.PayloadDescription" v-bind:placeholder="containerPlaceholders.PayloadDescription"></string> <key>PayloadIdentifier</key> <string><input type="text" v-model="container.PayloadIdentifier" v-bind:placeholder="containerPlaceholders.PayloadIdentifier"></string> <key>PayloadType</key> <string>{{ container.PayloadType }}</string> <key>PayloadUUID</key> <string>{{ container.PayloadUUID() }}</string> <key>PayloadVersion</key> <integer>{{ container.PayloadVersion }}</integer> </dict> </plist> </div> <h1>2. Download your profile</h1> <a v-bind:href="generatedProfileLink" v-bind:download="downloadFileName">Download</a> <h1>3. Or copy/paste</h1> <textarea rows="30" cols="80">{{ generatedProfile }}</textarea> </div> <script src="js/vue.min.js"></script> <script src="js/main.js"></script> </body> </html>