]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/commitdiff
IPsec: Add prototype to export Apple Configuration profiles
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 10 Feb 2020 15:52:16 +0000 (15:52 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 5 May 2021 11:21:00 +0000 (11:21 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
14 files changed:
config/rootfiles/common/web-user-interface
doc/language_issues.de
doc/language_issues.en
doc/language_issues.es
doc/language_issues.fr
doc/language_issues.it
doc/language_issues.nl
doc/language_issues.pl
doc/language_issues.ru
doc/language_issues.tr
doc/language_missings
html/cgi-bin/vpnmain.cgi
html/html/images/apple.png [new file with mode: 0644]
langs/en/cgi-bin/en.pl

index 4d9f7b52f9ae5da466be61871cbb1d827076c1f7..452d6543af4ba705354bb717fda2dba6443436c7 100644 (file)
@@ -110,6 +110,7 @@ srv/web/ipfire/html/images/add.gif
 srv/web/ipfire/html/images/addblue.gif
 srv/web/ipfire/html/images/addgreen.gif
 srv/web/ipfire/html/images/address-book-new.png
+srv/web/ipfire/html/images/apple.png
 srv/web/ipfire/html/images/application-certificate.png
 srv/web/ipfire/html/images/application-x-executable.png
 srv/web/ipfire/html/images/applications-accessories.png
index 4983e20c6b0b77aeac1767de49a468c10b38782d..460fe62cac8072085beb19a900d98250de2c243b 100644 (file)
@@ -828,6 +828,9 @@ WARNING: translation string unused: weekly firewallhits
 WARNING: translation string unused: wildcards
 WARNING: translation string unused: wins server
 WARNING: translation string unused: wins support
+WARNING: translation string unused: wlan clients
+WARNING: translation string unused: wlanap link dhcp
+WARNING: translation string unused: wlanap link wireless
 WARNING: translation string unused: wlanap wlan services
 WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
@@ -852,6 +855,7 @@ WARNING: translation string unused: zoneconf val vlan tag range error
 WARNING: translation string unused: zoneconf val zoneslave amount error
 WARNING: untranslated string: desired = Desired
 WARNING: untranslated string: disable = Disable
+WARNING: untranslated string: download apple profile = Download Apple Configuration Profile
 WARNING: untranslated string: enable = Enable
 WARNING: untranslated string: error the to date has to be later than the from date = The to date has to be later than the from date!
 WARNING: untranslated string: fwhost cust locationgrp = unknown string
index 4e6a201fd3b414002c229c5ca7e676e32200e875..f093781c6e5cced6f025bd322c67c20304a1e9e1 100644 (file)
@@ -645,6 +645,7 @@ WARNING: untranslated string: downlink = Downlink
 WARNING: untranslated string: downlink speed = Downlink speed (kbit/sec)
 WARNING: untranslated string: downlink std class = downlink standard class
 WARNING: untranslated string: download = download
+WARNING: untranslated string: download apple profile = Download Apple Configuration Profile
 WARNING: untranslated string: download ca certificate = Download CA certificate
 WARNING: untranslated string: download certificate = Download file
 WARNING: untranslated string: download host certificate = Download host certificate
@@ -2144,7 +2145,6 @@ WARNING: untranslated string: wlan client wpa mode all = Auto
 WARNING: untranslated string: wlan client wpa mode ccmp ccmp = CCMP-CCMP
 WARNING: untranslated string: wlan client wpa mode ccmp tkip = CCMP-TKIP
 WARNING: untranslated string: wlan client wpa mode tkip tkip = TKIP-TKIP
-WARNING: untranslated string: wlan clients = Wireless clients
 WARNING: untranslated string: wlanap = Access Point
 WARNING: untranslated string: wlanap 802.11w disabled = Disabled
 WARNING: untranslated string: wlanap 802.11w enforced = Enforced
@@ -2161,8 +2161,6 @@ WARNING: untranslated string: wlanap encryption = Encryption
 WARNING: untranslated string: wlanap informations = Informations
 WARNING: untranslated string: wlanap interface = Select interface
 WARNING: untranslated string: wlanap invalid wpa = Invalid length in WPA Passphrase. Must be between 8 and 63 characters.
-WARNING: untranslated string: wlanap link dhcp = Wireless lan DHCP configuration
-WARNING: untranslated string: wlanap link wireless = Activate wireless lan clients
 WARNING: untranslated string: wlanap management frame protection = Management Frame Protection (802.11w)
 WARNING: untranslated string: wlanap neighbor scan = Neighborhood scan
 WARNING: untranslated string: wlanap neighbor scan warning = Warning! Disabling may violate regulatory rules!
index d9c512af45bab30d686115c6801cd6acff3f9490..5282a66d4b895334d95276176b39861ea3514013 100644 (file)
@@ -773,6 +773,8 @@ WARNING: translation string unused: wildcards
 WARNING: translation string unused: wins server
 WARNING: translation string unused: wins support
 WARNING: translation string unused: wlanap access point
+WARNING: translation string unused: wlanap link dhcp
+WARNING: translation string unused: wlanap link wireless
 WARNING: translation string unused: wlanap wlan services
 WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
@@ -921,6 +923,7 @@ WARNING: untranslated string: dnssec disabled warning = WARNING: DNSSEC has been
 WARNING: untranslated string: dnssec not supported = DNSSEC Not supported
 WARNING: untranslated string: dnssec validating = DNSSEC Validating
 WARNING: untranslated string: downlink = Downlink
+WARNING: untranslated string: download apple profile = Download Apple Configuration Profile
 WARNING: untranslated string: download tls-auth key = Download tls-auth key
 WARNING: untranslated string: dpd delay = Delay
 WARNING: untranslated string: dpd timeout = Timeout
@@ -1522,7 +1525,6 @@ WARNING: untranslated string: wlan client wpa mode all = Auto
 WARNING: untranslated string: wlan client wpa mode ccmp ccmp = CCMP-CCMP
 WARNING: untranslated string: wlan client wpa mode ccmp tkip = CCMP-TKIP
 WARNING: untranslated string: wlan client wpa mode tkip tkip = TKIP-TKIP
-WARNING: untranslated string: wlan clients = Wireless clients
 WARNING: untranslated string: wlanap = Access Point
 WARNING: untranslated string: wlanap 802.11w disabled = Disabled
 WARNING: untranslated string: wlanap 802.11w enforced = Enforced
index e993c63134f62466c4c39a4a392b1d09cfa50b2c..aa35ebd708adfb0a5bf1848e0def4132f777fde2 100644 (file)
@@ -868,6 +868,9 @@ WARNING: translation string unused: weekly firewallhits
 WARNING: translation string unused: wildcards
 WARNING: translation string unused: wins server
 WARNING: translation string unused: wins support
+WARNING: translation string unused: wlan clients
+WARNING: translation string unused: wlanap link dhcp
+WARNING: translation string unused: wlanap link wireless
 WARNING: translation string unused: wlanap wlan services
 WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
@@ -889,6 +892,7 @@ WARNING: translation string unused: zoneconf val stp zone mode error
 WARNING: translation string unused: zoneconf val vlan amount assignment error
 WARNING: translation string unused: zoneconf val vlan tag assignment error
 WARNING: translation string unused: zoneconf val zoneslave amount error
+WARNING: untranslated string: download apple profile = Download Apple Configuration Profile
 WARNING: untranslated string: fwhost cust locationgrp = unknown string
 WARNING: untranslated string: fwhost err hostip = unknown string
 WARNING: untranslated string: guardian block a host = unknown string
index 15ad4f8964039d9fd1f010d4643d6311c832b943..d26afef65c9bb98de671db2463ec4dfdca137d18 100644 (file)
@@ -841,7 +841,10 @@ WARNING: translation string unused: weekly firewallhits
 WARNING: translation string unused: wildcards
 WARNING: translation string unused: wins server
 WARNING: translation string unused: wins support
+WARNING: translation string unused: wlan clients
 WARNING: translation string unused: wlanap access point
+WARNING: translation string unused: wlanap link dhcp
+WARNING: translation string unused: wlanap link wireless
 WARNING: translation string unused: wlanap wlan services
 WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
@@ -943,6 +946,7 @@ WARNING: untranslated string: dns use protocol for dns queries = Protocol for DN
 WARNING: untranslated string: dnsforward dnssec disabled = DNSSEC Validation is disabled
 WARNING: untranslated string: dnsforward forward_servers = Nameservers
 WARNING: untranslated string: dnssec disabled warning = WARNING: DNSSEC has been disabled
+WARNING: untranslated string: download apple profile = Download Apple Configuration Profile
 WARNING: untranslated string: duration = Duration
 WARNING: untranslated string: eight hours = 8 Hours
 WARNING: untranslated string: email config = Configuration
index 1a60d83a6389c6632a07dfe52af9121aecdc0f11..75523b52f5402157e67a81fd1b076fb67d5417fc 100644 (file)
@@ -835,7 +835,10 @@ WARNING: translation string unused: weekly firewallhits
 WARNING: translation string unused: wildcards
 WARNING: translation string unused: wins server
 WARNING: translation string unused: wins support
+WARNING: translation string unused: wlan clients
 WARNING: translation string unused: wlanap access point
+WARNING: translation string unused: wlanap link dhcp
+WARNING: translation string unused: wlanap link wireless
 WARNING: translation string unused: wlanap wlan services
 WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
@@ -946,6 +949,7 @@ WARNING: untranslated string: dnssec aware = DNSSEC Aware
 WARNING: untranslated string: dnssec disabled warning = WARNING: DNSSEC has been disabled
 WARNING: untranslated string: dnssec not supported = DNSSEC Not supported
 WARNING: untranslated string: dnssec validating = DNSSEC Validating
+WARNING: untranslated string: download apple profile = Download Apple Configuration Profile
 WARNING: untranslated string: download tls-auth key = Download tls-auth key
 WARNING: untranslated string: drop outgoing = Log dropped outgoing packets
 WARNING: untranslated string: duration = Duration
index e0fb9fd5e3a5a5cc50751e5c671a8c478dac7f5d..1afab9f14aa86391dd99417bc4219014157469ba 100644 (file)
@@ -757,6 +757,8 @@ WARNING: translation string unused: wildcards
 WARNING: translation string unused: wins server
 WARNING: translation string unused: wins support
 WARNING: translation string unused: wlanap access point
+WARNING: translation string unused: wlanap link dhcp
+WARNING: translation string unused: wlanap link wireless
 WARNING: translation string unused: wlanap wlan services
 WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
@@ -936,6 +938,7 @@ WARNING: untranslated string: dnssec disabled warning = WARNING: DNSSEC has been
 WARNING: untranslated string: dnssec not supported = DNSSEC Not supported
 WARNING: untranslated string: dnssec validating = DNSSEC Validating
 WARNING: untranslated string: downlink = Downlink
+WARNING: untranslated string: download apple profile = Download Apple Configuration Profile
 WARNING: untranslated string: download tls-auth key = Download tls-auth key
 WARNING: untranslated string: dpd delay = Delay
 WARNING: untranslated string: dpd timeout = Timeout
@@ -1530,7 +1533,6 @@ WARNING: untranslated string: wlan client wpa mode all = Auto
 WARNING: untranslated string: wlan client wpa mode ccmp ccmp = CCMP-CCMP
 WARNING: untranslated string: wlan client wpa mode ccmp tkip = CCMP-TKIP
 WARNING: untranslated string: wlan client wpa mode tkip tkip = TKIP-TKIP
-WARNING: untranslated string: wlan clients = Wireless clients
 WARNING: untranslated string: wlanap = Access Point
 WARNING: untranslated string: wlanap 802.11w disabled = Disabled
 WARNING: untranslated string: wlanap 802.11w enforced = Enforced
index d5bdbe6589a637656d373da805f4c101a9ca068c..ed0e78f0baec286fbd47ea4ff75e1a9b1d8ed09c 100644 (file)
@@ -752,6 +752,8 @@ WARNING: translation string unused: wildcards
 WARNING: translation string unused: wins server
 WARNING: translation string unused: wins support
 WARNING: translation string unused: wlanap access point
+WARNING: translation string unused: wlanap link dhcp
+WARNING: translation string unused: wlanap link wireless
 WARNING: translation string unused: wlanap wlan services
 WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
@@ -933,6 +935,7 @@ WARNING: untranslated string: dnssec disabled warning = WARNING: DNSSEC has been
 WARNING: untranslated string: dnssec not supported = DNSSEC Not supported
 WARNING: untranslated string: dnssec validating = DNSSEC Validating
 WARNING: untranslated string: downlink = Downlink
+WARNING: untranslated string: download apple profile = Download Apple Configuration Profile
 WARNING: untranslated string: download tls-auth key = Download tls-auth key
 WARNING: untranslated string: dpd delay = Delay
 WARNING: untranslated string: dpd timeout = Timeout
@@ -1525,7 +1528,6 @@ WARNING: untranslated string: wlan client wpa mode all = Auto
 WARNING: untranslated string: wlan client wpa mode ccmp ccmp = CCMP-CCMP
 WARNING: untranslated string: wlan client wpa mode ccmp tkip = CCMP-TKIP
 WARNING: untranslated string: wlan client wpa mode tkip tkip = TKIP-TKIP
-WARNING: untranslated string: wlan clients = Wireless clients
 WARNING: untranslated string: wlanap = Access Point
 WARNING: untranslated string: wlanap 802.11w disabled = Disabled
 WARNING: untranslated string: wlanap 802.11w enforced = Enforced
index 1445f864130348c22b9c14d295807b7954cd6b4e..c8aadd6f1736bbb0f2f0b0f88a3c3ad3e328c0bd 100644 (file)
@@ -871,6 +871,9 @@ WARNING: translation string unused: weekly firewallhits
 WARNING: translation string unused: wildcards
 WARNING: translation string unused: wins server
 WARNING: translation string unused: wins support
+WARNING: translation string unused: wlan clients
+WARNING: translation string unused: wlanap link dhcp
+WARNING: translation string unused: wlanap link wireless
 WARNING: translation string unused: wlanap wlan services
 WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
@@ -922,6 +925,7 @@ WARNING: untranslated string: dns use isp assigned nameservers = Use ISP-assigne
 WARNING: untranslated string: dns use protocol for dns queries = Protocol for DNS queries
 WARNING: untranslated string: dnsforward dnssec disabled = DNSSEC Validation is disabled
 WARNING: untranslated string: dnsforward forward_servers = Nameservers
+WARNING: untranslated string: download apple profile = Download Apple Configuration Profile
 WARNING: untranslated string: duration = Duration
 WARNING: untranslated string: email tls explicit = explicit (STARTTLS)
 WARNING: untranslated string: email tls implicit = implicit (TLS)
index a390d1b0026218e8f67fe6ec76a3154b2aa90c20..70efc4ad7507e73fed76f53d614dd3565b3a0d39 100644 (file)
@@ -34,6 +34,7 @@
 < disable
 < dns could not add server
 < done
+< download apple profile
 < enable
 < error the to date has to be later than the from date
 < g.dtm
 < dns use isp assigned nameservers
 < dns use protocol for dns queries
 < downlink
+< download apple profile
 < download dh parameter
 < download tls-auth key
 < dpd delay
 < ansi t1.483
 < bewan adsl pci st
 < bewan adsl usb
+< download apple profile
 < g.dtm
 < g.lite
 < upload fcdsl.o
 < dns tls hostname
 < dns use isp assigned nameservers
 < dns use protocol for dns queries
+< download apple profile
 < duration
 < eight hours
 < email config
 < dns tls hostname
 < dns use isp assigned nameservers
 < dns use protocol for dns queries
+< download apple profile
 < download dh parameter
 < download tls-auth key
 < drop outgoing
 < dns use isp assigned nameservers
 < dns use protocol for dns queries
 < downlink
+< download apple profile
 < download dh parameter
 < download tls-auth key
 < dpd delay
 < dns use isp assigned nameservers
 < dns use protocol for dns queries
 < downlink
+< download apple profile
 < download dh parameter
 < download tls-auth key
 < dpd delay
 < dns tls hostname
 < dns use isp assigned nameservers
 < dns use protocol for dns queries
+< download apple profile
 < duration
 < email tls explicit
 < email tls implicit
index b5c64dd2771df07599fc5e510556187538edb9fa..8cd43c30521437adbc9ca34bd5be53dc2c486898 100644 (file)
@@ -19,6 +19,7 @@
 #                                                                             #
 ###############################################################################
 
+use MIME::Base64;
 use Net::DNS;
 use File::Copy;
 use File::Temp qw/ tempfile tempdir /;
@@ -1178,6 +1179,122 @@ END
        print `/bin/cat ${General::swroot}/certs/$confighash{$cgiparams{'KEY'}}[1].p12`;
        exit (0);
 
+# Export Apple profile to browser
+} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'download apple profile'}) {
+       &General::readhasharray("${General::swroot}/vpn/config", \%confighash);
+       my $key = $cgiparams{'KEY'};
+
+       my $uuid1 = "AAAABBBB";
+       my $uuid2 = "CCCCDDDD";
+
+       my $cert = "";
+       my $cert_uuid = "123456789";
+
+       # Read and encode certificate
+       if ($confighash{$key}[4] eq "cert") {
+               my $cert_path = "${General::swroot}/certs/$confighash{$key}[1].p12";
+
+               # Read certificate and encode it into Base64
+               open(CERT, "<${cert_path}");
+               local($/) = undef; # slurp
+               $cert = MIME::Base64::encode_base64(<CERT>);
+               close(CERT);
+       }
+
+       print "Content-Type: application/octet-stream\n";
+       print "Content-Disposition: attachment; filename=" . $confighash{$key}[1] . ".mobileconfig\n";
+       print "\n"; # end headers
+
+       print "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n";
+       print "<plist version=\"1.0\">\n";
+       print " <dict>\n";
+        print "                <key>PayloadDisplayName</key>\n";
+       print "         <string>$confighash{$key}[1]</string>\n";
+       print "         <key>PayloadIdentifier</key>\n";
+       print "         <string>$confighash{$key}[1]</string>\n";
+       print "         <key>PayloadUUID</key>\n";
+       print "         <string>${uuid1}</string>\n";
+       print "         <key>PayloadType</key>\n";
+       print "         <string>Configuration</string>\n";
+       print "         <key>PayloadVersion</key>\n";
+       print "         <integer>1</integer>\n";
+       print "         <key>PayloadContent</key>\n";
+       print "         <array>\n";
+       print "                 <dict>\n";
+       print "                         <key>PayloadIdentifier</key>\n";
+       print "                         <string>org.example.vpn1.conf1</string>\n";
+       print "                         <key>PayloadUUID</key>\n";
+       print "                         <string>${uuid2}</string>\n";
+       print "                         <key>PayloadType</key>\n";
+       print "                         <string>com.apple.vpn.managed</string>\n";
+       print "                         <key>PayloadVersion</key>\n";
+       print "                         <integer>1</integer>\n";
+       print "                         <key>UserDefinedName</key>\n";
+       print "                         <string>$confighash{$key}[1]</string>\n";
+       print "                         <key>VPNType</key>\n";
+       print "                         <string>IKEv2</string>\n";
+       print "                         <key>IKEv2</key>\n";
+       print "                         <dict>\n";
+       print "                                 <key>RemoteAddress</key>\n";
+       print "                                 <string>18.206.152.26</string>\n";
+
+       # Left ID
+       if ($confighash{$key}[9]) {
+               print "                         <key>LocalIdentifier</key>\n";
+               print "                         <string>$confighash{$key}[9]</string>\n";
+       }
+
+       # Right ID
+       if ($confighash{$key}[7]) {
+               print "                         <key>RemoteIdentifier</key>\n";
+               print "                         <string>$confighash{$key}[7]</string>\n";
+       }
+
+       if ($confighash{$key}[4] eq "cert") {
+               print "                         <key>AuthenticationMethod</key>\n";
+               print "                         <string>Certificate</string>\n";
+
+               print "                         <key>PayloadCertificateUUID</key>\n";
+               print "                         <string>${cert_uuid}</string>\n";
+       } else {
+               print "                         <key>AuthenticationMethod</key>\n";
+               print "                         <string>SharedSecret</string>\n";
+               print "                         <key>SharedSecret</key>\n";
+               print "                         <string>$confighash{$key}[5]</string>\n";
+       }
+
+       print "                                 <key>ExtendedAuthEnabled</key>\n";
+       print "                                 <integer>0</integer>\n";
+       print "                         </dict>\n";
+       print "                 </dict>\n";
+
+       if ($confighash{$key}[4] eq "cert") {
+               print "                 <dict>\n";
+               print "                         <key>PayloadIdentifier</key>\n";
+               print "                         <string>org.example.vpn1.client</string>\n";
+               print "                         <key>PayloadUUID</key>\n";
+               print "                         <string>${cert_uuid}</string>\n";
+               print "                         <key>PayloadType</key>\n";
+               print "                         <string>com.apple.security.pkcs12</string>\n";
+               print "                         <key>PayloadVersion</key>\n";
+               print "                         <integer>1</integer>\n";
+               print "                         <key>PayloadContent</key>\n";
+               print "                         <data>\n";
+
+               foreach (split /\n/,${cert}) {
+                       print "                                 $_\n";
+               }
+
+               print "                         </data>\n";
+               print "                 </dict>\n";
+       }
+
+       print "         </array>\n";
+       print " </dict>\n";
+       print "</plist>\n";
+
+       # Done
+       exit(0);
 ###
 ### Display certificate
 ###
@@ -2982,7 +3099,7 @@ END
        <th width='23%' class='boldbase' align='center'><b>$Lang::tr{'common name'}</b></th>
        <th width='30%' class='boldbase' align='center'><b>$Lang::tr{'remark'}</b></th>
        <th width='10%' class='boldbase' align='center'><b>$Lang::tr{'status'}</b></th>
-       <th class='boldbase' align='center' colspan='6'><b>$Lang::tr{'action'}</b></th>
+       <th class='boldbase' align='center' colspan='7'><b>$Lang::tr{'action'}</b></th>
        </tr>
 END
 ;
@@ -3083,6 +3200,22 @@ END
        } else {
                print "<td width='2%' $col>&nbsp;</td>";
        }
+
+       # Apple Profile
+       if ($confighash{$key}[3] eq 'host') {
+               print <<END;
+               <td align='center' $col>
+                       <form method='post' action='$ENV{'SCRIPT_NAME'}'>
+                       <input type='image' name='$Lang::tr{'download apple profile'}' src='/images/apple.png' alt='$Lang::tr{'download apple profile'}' title='$Lang::tr{'download apple profile'}' />
+                       <input type='hidden' name='ACTION' value='$Lang::tr{'download apple profile'}' />
+                       <input type='hidden' name='KEY' value='$key' />
+                       </form>
+               </td>
+END
+       } else {
+               print "<td width='2%' $col>&nbsp;</td>";
+       }
+
        print <<END
        <td align='center' $col>
                <form method='post' action='$ENV{'SCRIPT_NAME'}'>
diff --git a/html/html/images/apple.png b/html/html/images/apple.png
new file mode 100644 (file)
index 0000000..6571a74
Binary files /dev/null and b/html/html/images/apple.png differ
index dc1fd8d67b3067c4eacf03dd4f2a43a59bf94dc7..b7cbea6324371ef036842a79e5e2144078496099 100644 (file)
 'downlink speed' => 'Downlink speed (kbit/sec)',
 'downlink std class' => 'downlink standard class',
 'download' => 'download',
+'download apple profile' => 'Download Apple Configuration Profile',
 'download ca certificate' => 'Download CA certificate',
 'download certificate' => 'Download file',
 'download dh parameter' => 'Download Diffie-Hellman parameters',