package online.iizvv.signature;

import cn.hutool.core.io.file.FileWriter;
import cn.hutool.core.lang.UUID;
import online.iizvv.core.config.Config;
import online.iizvv.utils.Shell;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SignatureApplicationTests {


    @Test
    public void contextLoads() throws IOException, InterruptedException {

        creatUDIDMobileconfig(2);
    }

    void creatUDIDMobileconfig(long id) throws IOException, InterruptedException {
        String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
                "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n" +
                "<plist version=\"1.0\">\n" +
                "    <dict>\n" +
                "        <key>PayloadContent</key>\n" +
                "        <dict>\n" +
                "            <key>URL</key>\n" +
                "            <string>"+ Config.udidURL +"/udid/getUDID?id="+ id +"</string> <!--接收数据的接口地址-->\n" +
                "            <key>DeviceAttributes</key>\n" +
                "            <array>\n" +
                "                <string>SERIAL</string>\n" +
                "                <string>MAC_ADDRESS_EN0</string>\n" +
                "                <string>UDID</string>\n" +
                "                <string>IMEI</string>\n" +
                "                <string>ICCID</string>\n" +
                "                <string>VERSION</string>\n" +
                "                <string>PRODUCT</string>\n" +
                "            </array>\n" +
                "        </dict>\n" +
                "        <key>PayloadOrganization</key>\n" +
                "        <string>" + Config.payloadOrganization +"</string>  <!--组织名称-->\n" +
                "        <key>PayloadDisplayName</key>\n" +
                "        <string>" + Config.payloadDisplayName + "</string>  <!--安装时显示的标题-->\n" +
                "        <key>PayloadVersion</key>\n" +
                "        <integer>1</integer>\n" +
                "        <key>PayloadUUID</key>\n" +
                "        <string>"+ UUID.randomUUID().toString().replace("-", "") +"</string>  <!--自己随机填写的唯一字符串-->\n" +
                "        <key>PayloadIdentifier</key>\n" +
                "        <string>online.iizvv.profile-service</string>\n" +
                "        <key>PayloadDescription</key>\n" +
                "        <string>"+Config.payloadDescription+"</string>   <!--描述-->\n" +
                "        <key>PayloadType</key>\n" +
                "        <string>Profile Service</string>\n" +
                "    </dict>\n" +
                "</plist>";
        ClassLoader classLoader = this.getClass().getClassLoader();
        String name = "udid_"+id;
        String filePath = name + ".mobileconfig";
        FileWriter writer = new FileWriter(filePath);
        writer.write(xml);
        String serverKey = classLoader.getResource("server.key").getPath();
        String ca = classLoader.getResource("ca.crt").getPath();
        String serverCrt = classLoader.getResource("server.crt").getPath();
        String filePath2 = name+"_"+id +".mobileconfig";
        String com = "openssl smime -sign -in " + filePath +" -out "+ filePath2 + " -signer "+serverCrt+" -inkey "+serverKey+"  -certfile "+ca+" -outform der -nodetach";
        System.out.println(filePath2);
        Shell.run(com);
    }


}