슬롯 사이트 형식

    소개

    다음 섹션에서는 사용자 정의 슬롯 사이트 형식에 대해 설명합니다. GAMS MIRO에 사용됨, 즉.miroappApp Bundle 및.미로센용 MIRO 시나리오.

    이 섹션은 기술적인 지식을 가진 사람들을 위한 것입니다. 자신만의 도구를 구현하려는 배경 이러한 슬롯 사이트을 처리하거나 MIRO가 어떻게 처리하는지 더 잘 이해할 수 있습니다. 내부적으로 작동합니다.

    .miroapp슬롯 사이트은 MIRO 앱을 번들로 묶는 데 사용됩니다. 모든 모델 슬롯 사이트을 포함합니다..미로센슬롯 사이트 MIRO 시나리오에 속하는 모든 데이터를 묶습니다(데이터 메타데이터도 마찬가지입니다.) 두 슬롯 사이트 형식 모두 (암호화되지 않음) ZIP 슬롯 사이트(사용zlib).

    미로앱

    아래 표에는 a에 포함된 모든 슬롯 사이트이 나열되어 있습니다..miroapp슬롯 사이트:

    슬롯 사이트 이름 설명
    miroapp.json 앱 메타데이터가 포함된 JSON 슬롯 사이트입니다. 는 이 슬롯 사이트의 스키마는 아래와 같습니다.
    .miroconf 검증된 앱이 포함된 .RData 슬롯 사이트 바이너리 형식으로 구성합니다.
    <모델이름>.zip 모든 내용을 포함하는 (암호화되지 않은) ZIP 슬롯 사이트(zlib) 에 지정된 모델 슬롯 사이트모델 어셈블리 슬롯 사이트. 여기모델이름은 소문자입니다. 슬롯 사이트이 없는 기본 GMS 슬롯 사이트의 슬롯 사이트 이름 확장.
    data_<모델 이름>/ (선택) 시나리오 데이터가 있는 디렉토리 이것을 추가할 때 MIRO 데이터베이스로 가져와야 합니다. 앱.
    static_<모델 이름>/ (선택사항) 다음과 같은 정적 슬롯 사이트이 있는 디렉토리 이미지와 스타일시트. 이 디렉토리는 Shiny 웹 서버에 추가되어 모든 슬롯 사이트이 이 디렉토리에 있는 슬롯 사이트은 다음에서 액세스할 수 있습니다. 브라우저.
    renderer_<모델 이름>/ (선택사항) 사용자 정의 렌더러가 있는 디렉토리 및 사용자 정의 가져오기/내보내기 슬롯 사이트.
    scripts_<모델 이름>/ (선택 사항) 사용자 정의 분석이 포함된 디렉터리 스크립트.

    검증하는 데 사용되는 JSON 스키마miroapp.json아래에 포함되어 있습니다:

    "$schema":"http://json-schema.org/draft-07/schema#",
        "title": "MIROAPP 메타데이터 스키마",
        "유형":"객체",
        "속성": 
            "버전": 
            "description":"MIROAPP 슬롯 사이트 버전(현재: 1)",
            "유형":"정수",
            "최소": 1
            ,
            "api_version": 
            "description":"이 애플리케이션을 배포하는 데 사용된 MIRO API 버전입니다. 새 MIRO 앱을 추가할 때 시스템은 MIRO API 버전이 이 앱의 API 버전과 일치하는지 확인합니다. 그렇지 않은 경우 앱이 거부됩니다.",
            "유형":"문자열"
            ,
            "미로_버전": 
            "description":"이 애플리케이션을 배포하는 데 사용된 MIRO 버전입니다. 새 MIRO 앱을 추가할 때 시스템은 MIRO 버전이 이 앱이 배포된 MIRO 버전보다 높은지 확인합니다. 그렇지 않은 경우 앱이 거부됩니다.",
            "유형":"문자열"
            ,
            "main_gms_name": 
            "description": "슬롯 사이트 확장자를 포함한 기본 GMS 슬롯 사이트의 (대/소문자 구분) 슬롯 사이트 이름입니다.",
            "유형":"문자열"
            ,
            "타임스탬프": 
            "description":"앱이 배포된 시간입니다. 형식: yyyy-MM-dd hh:mm:ss zzz(예: 2021-12-15 10:28:33 UTC).",
            "유형":"문자열"
            ,
            "호스트_os": 
            "description": "이 응용 프로그램을 배포하는 데 사용된 운영 체제입니다.",
            "유형":"문자열",
            "enum": ["windows", "osx", "linux"]
            ,
            "모드_포함": 
            "description": "이 앱에 포함된 모드입니다. MIRO 버전 2.2부터는 기본 모드만 허용됩니다.",
            "유형":"문자열",
            "열거형": ["기본"]
            ,
            "use_temp_dir": 
            "description": "임시 디렉터리에서 모델을 실행할지 여부입니다. MIRO 서버는 이 플래그가 false인 앱을 거부합니다.",
            "유형":"문자열"
            ,
            "created_by": 
            "description":"이 MIROAPP 슬롯 사이트을 생성하는 데 사용된 도구를 나타내는 사람이 읽을 수 있는 문자열입니다.",
            "유형":"문자열"
    서명된 MIROAPP

    .miroapp슬롯 사이트을 확인하기 위해 선택적으로 서명할 수 있습니다. 앱의 무결성과 앱의 신뢰성 작성자.RSA최소 길이가 2048비트인 키가 지원됩니다. MIRO 앱에 서명합니다. MIRO 앱 서명은 다음과 같이 작동합니다.

    1. 슬롯 사이트.miro_hashes25123_25369<슬롯 사이트 이름>\/\<sha256Hash>어디에서슬롯 사이트이름는 슬롯 사이트의 전체 경로입니다. 의 루트에 상대적인.miroapp아카이브. 줄은 오름차순으로 정렬됩니다.
    2. 슬롯 사이트.miro_hashes1)에서 생성됨이 해시됨 SHA-512 알고리즘을 사용한 다음 RSA 개인 키를 사용하여EVP_PKEY_sign함수 openssl의 결과 서명은 바이너리 슬롯 사이트:.miro_sig.
    3. RSA 공개 키가 슬롯 사이트에 기록되었습니다..miro_pubkey.
    4. 슬롯 사이트.miro_hashes, .miro_sig그리고.miro_pubkey은 루트에 추가됩니다. .miroapp ZIP 아카이브.

    앱의 신뢰성을 검증하려면 먼저 앱이 서명되었는지 확인했습니다(슬롯 사이트.miro_hashes그리고.miro_sig존재). 만약 이 이 경우 MIRO 앱의 무결성은 다음과 같이 확인됩니다. 다음과 같습니다:

    1. 아카이브의 모든 슬롯 사이트이 나열됩니다. 서명 슬롯 사이트(.miro_hashes, .miro_sig그리고.miro_pubkey).
    2. 압축 슬롯 사이트에서 발견된 모든 슬롯 사이트의 서명은 다음과 같습니다. 계산되고 a.miro_hashes_actual슬롯 사이트은 다음을 사용하여 생성됩니다. 1) 단계에서 설명한 것과 동일한 방식입니다.
    3. .miro_hashes슬롯 사이트은와 비교됩니다.miro_hashes_actual슬롯 사이트. 그렇지 않은 경우 동일하지만 MIRO가 잘못된 서명을 보고합니다.
    4. SHA-512 해시.miro_hashes슬롯 사이트은 계산 및 서명.miro_sig확인되었습니다 를 사용하여EEVP_PKEY_verifyopenssl의 기능입니다. 서명을 확인하기 위해 등록된 모든 공개 키 MIRO가 설치된 컴퓨터를 시도합니다. 없는 경우 공개 키 작업 중,.miro_pubkey공개 아카이브에 포함된 키가 시도됩니다. 그렇지 않은 경우 어느 쪽이든 작동하면 MIRO가 잘못된 서명을 보고합니다. 그렇다면 작동하면 MIRO는 OpenSSH 지문을 계산합니다( SHA256 해싱 알고리즘) 이 키와 사용자는 그녀는 이 키를 믿을 것인지 물었습니다. 사용자가 동의합니다..miro_pubkey공개 키가 다음에 추가되었습니다. 알려진 공개 키 목록과 앱을 가져옵니다.

    미로스센

    아래 표에는 a에 포함된 모든 슬롯 사이트이 나열되어 있습니다..미로센슬롯 사이트:

    슬롯 사이트 이름 설명
    metadata.json 시나리오 메타데이터가 포함된 JSON 슬롯 사이트. 는 이 슬롯 사이트의 스키마는 아래와 같습니다.
    data.gdx 입력 및 출력 데이터가 포함된 GDX 슬롯 사이트 GAMS/MIRO 데이터에 지정된 모든 기호 중 계약합니다.
    views.json (선택사항) 다음을 포함하는 슬롯 사이트 시나리오별/로컬 보기.
    첨부슬롯 사이트/ (선택사항) 슬롯 사이트이 첨부된 디렉토리 시나리오. 첨부 슬롯 사이트의 메타데이터는 다음과 같아야 합니다. 에 포함되어 있습니다.metadata.json슬롯 사이트(참조 아래 스키마).

    검증하는 데 사용되는 JSON 스키마metadata.json아래에 포함되어 있습니다:

    "$schema":"http://json-schema.org/draft-07/schema#",
        "title": "MIROSCEN 메타데이터 스키마",
        "유형":"객체",
        "속성": 
            "버전": 
            "description": "MIROSCEN 슬롯 사이트의 버전(현재: 1)",
            "유형":"정수",
            "최소": 1
            ,
            "장면_이름": 
            "description": "사용자가 지정한 시나리오의 이름입니다.",
            "유형":"문자열",
            "최소 길이": 1,
            "최대 길이": 64
            ,
            "scen_tags": 
            "description":"시나리오에 할당된 태그입니다. 배열을 쉼표로 구분된 문자열로 결합할 때 총 문자 수는 1000자를 초과할 수 없습니다.",
            "유형":"배열",
            "고유 항목":true,
            "항목":
                "유형":"문자열",
                "최소 길이": 1
    
            ,
            "cl_args": 
            "description":"시나리오별 명령줄 인수(달러 제어 옵션 및 GAMS 옵션).",
            "유형":"배열",
            "고유 항목":true,
            "항목":
                "유형":"문자열",
                "최소 길이": 1
    
            ,
            "첨부 슬롯 사이트": 
            "description": "첨부슬롯 사이트 메타데이터.",
            "유형":"배열",
            "항목": 
                "유형": "객체",
                "속성": 
                "이름": 
                    "description": "첨부 슬롯 사이트의 슬롯 사이트 이름(확장자 포함)입니다.",
                    "유형":"문자열"
                ,
                "execPerm": 
                    "description": "모델이 시나리오를 볼 수 있는지 여부(첨부 슬롯 사이트은 실행 전에 작업 디렉터리에 다운로드됩니다.)",
                    "유형":"부울"
    
            ,
            "모델_원시": 
            "description": "슬롯 사이트 확장자를 제외한 기본 GMS 슬롯 사이트의 (대소문자 구분) 슬롯 사이트 이름입니다.",
            "유형":"문자열"
            ,
            "UID": 
            "description": "시나리오 소유자의 사용자 ID입니다.",
            "유형":"문자열",
            "최소 길이": 1
            ,
            "시간_생성": 
            "description":"MIROSCEN 슬롯 사이트이 생성된 시간입니다. 형식: yyyy-MM-dd hh:mm:ss zzz(예: 2021-12-15 10:28:33 UTC).",
            "유형":"문자열"
            ,
            "created_by": 
            "description":"이 MIROSCEN 슬롯 사이트을 생성하는 데 사용된 도구를 나타내는 사람이 읽을 수 있는 문자열입니다.",
            "유형":"문자열"