tis-openrsat icon

OpenRSAT

Silent install package for OpenRSAT

0.4.30.2
Utilities
Security
System and network
Utilities
Security
System and network

  • package: tis-openrsat
  • name: OpenRSAT
  • version: 0.4.30.2
  • categories: Utilities,Security,System and network
  • maintainer: WAPT Team,Tranquil IT,Louis Persin,Thomas Prud'homme
  • locale: all
  • target_os: macos
  • architecture: arm
  • signature_date:
  • size: 8.46 Mo

package           : tis-openrsat
version           : 0.4.30.2
architecture      : arm
section           : base
priority          : optional
name              : OpenRSAT
categories        : Utilities,Security,System and network
maintainer        : WAPT Team,Tranquil IT,Louis Persin,Thomas Prud'homme
description       : 
depends           : 
conflicts         : 
maturity          : PROD
locale            : all
target_os         : macos
min_wapt_version  : 2.3
sources           : 
installed_size    : 
impacted_process  : 
description_fr    : 
description_pl    : 
description_de    : 
description_es    : 
description_pt    : 
description_it    : 
description_nl    : 
description_ru    : 
audit_schedule    : 
editor            : 
keywords          : 
licence           : 
homepage          : 
package_uuid      : 633420bd-53cc-493c-99f1-3f59c1460664
valid_from        : 
valid_until       : 
forced_install_on : 
changelog         : 
min_os_version    : 
max_os_version    : 
icon_sha256sum    : 03ea977bb46ee771b0e00d075fd36c1b185129a40260935db691719e6f42483d
signer            : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature_date    : 2025-10-25T11:03:36.000000
signed_attributes : package,version,architecture,section,priority,name,categories,maintainer,description,depends,conflicts,maturity,locale,target_os,min_wapt_version,sources,installed_size,impacted_process,description_fr,description_pl,description_de,description_es,description_pt,description_it,description_nl,description_ru,audit_schedule,editor,keywords,licence,homepage,package_uuid,valid_from,valid_until,forced_install_on,changelog,min_os_version,max_os_version,icon_sha256sum,signer,signer_fingerprint,signature_date,signed_attributes
signature         : NQeZQa6NFz7BrePi25qM/X5pADz4FaWlDV4lP+qjBo3C1mya/pcB0ZWojAAnFDrWEluBvPD+gNVBMQCxZgU+BpULh/8Y7/IQvlNFrlqw9ZvjDVxNAiIg3HBPORKnZv0yKPSRlL1D29x67LCOHLRi/9LVg4x9o4EH6VjEKXqRJsMNdRdW63af1Z9V8K1MDKlwx8fCeirp8bIL1Ym6BolC6/ZBJbr3/5MauokZoMolYVa2sApULYwYGAl/RBV9YqMQC5d6jR0KpFhtEAYBGNNXoSlsmQRADK5D1g+0QLpWQWwwUK4GC6HtZklggRKnDBJ3xccQLusfjdq75+ghmbo54w==

# -*- coding: utf-8 -*-
from setuphelpers import *

path = '/Applications/OpenRSAT.app'
name = 'OpenRSAT'

def install():
    if isdir(path):
        remove_tree(path)

    install_dmg("./OpenRSAT.dmg")

def uninstall():
    if isdir(path):
        remove_tree(path)


def audit():
    if not isfile(f"{path}/Contents/MacOS/{name}"):
        print("erreur file not found")
        return "ERROR"
    else:
        return "OK"

# -*- coding: utf-8 -*-
from setuphelpers import *
import os

build_folder = r'/var/build'
git = r'git'
lazbuild = r'/opt/lazarus_4_0/lazarus/lazbuild'
name = 'OpenRSAT'
package_version=2

def update_package():
    # Remove old build folder
    if isdir(build_folder):
        print(f"Old build folder exists ({build_folder}). Remove it.")
        remove_tree(build_folder)
    
    mkdirs(build_folder)

    # Clone OpenRSAT repository
    print("Clone OpenRSAT repository.")
    run(f"{git} clone https://github.com/tranquilit/OpenRSAT.git {build_folder}")

    # Retrieve last tag
    print("Retrieve last tag.")
    tag = run(fr'{git} -C {build_folder} describe --tags --abbrev=0')
    tag = tag.strip()

    # Checkout to last tag
    print(f"Last tag found ({tag}). Checkout to this tag.")
    run(fr'{git} -C {build_folder} checkout {tag}')
    
    # Update submodules
    print("Update submodules")
    run(fr'{git} -C {build_folder} submodule update --progress --init -- "submodules/mORMot2"')
    run(fr'{git} -C {build_folder} submodule update --progress --init -- "submodules/pltis_uicomponents"')
    run(fr'{git} -C {build_folder} submodule update --progress --init -- "submodules/pltis_utils"')
    run(fr'{git} -C {build_folder} submodule update --progress --init -- "submodules/pltis_virtualtrees"')
    run(fr'{git} -C {build_folder} submodule update --progress --init -- "submodules/metadarkstyle"')
    
    # Patch pltis_uicomponents
    print("Patch pltis_uicomponents")
    f = open(fr'{build_folder}/submodules/pltis_uicomponents/src/standard/tis.ui.lvlgraphcontrol.pas','r')
    filedata = f.read()
    f.close()
    newdata = filedata.replace("Laz_AVL_Tree","AVL_Tree")
    f = open(fr'{build_folder}/submodules/pltis_uicomponents/src/standard/tis.ui.lvlgraphcontrol.pas','w')
    f.write(newdata)
    f.close()

    # Copy windres
    print("Copy windres.")
    filecopyto('/usr/local/bin/windres','/opt/lazarus_4_0/fpc/bin/aarch64-darwin/windres')

    # Download mORMot2 static requirements
    print("Download mORMot2 static")
    wget('http://srvtemplates.ad.tranquil.it/binary_cache/mormot2static-2.3.stable.7z','mormot2static.7z', sha256='97c6e3ed9df42fb37911289b41761192b1cc56c1ff2c412609027a2560b31e56')
    run('/usr/local/bin/7zz x -y mormot2static.7z -ostatic')
    remove_tree(fr'{build_folder}/submodules/mORMot2/static')
    os.rename('static', fr'{build_folder}/submodules/mORMot2/static')
    remove_file('mormot2static.7z')

    # Add required package to Lazarus IDE
    print("Add required package to Lazarus IDE")
    run(f'{lazbuild} --add-package-link {build_folder}/submodules/mORMot2/packages/lazarus/mormot2.lpk --ws=cocoa')
    run(f'{lazbuild} --add-package-link {build_folder}/submodules/pltis_uicomponents/pack/pltis_uicomponents.lpk --ws=cocoa')
    run(f'{lazbuild} --add-package-link {build_folder}/submodules/pltis_utils/pltis_utils.lpk ')
    run(f'{lazbuild} --add-package {build_folder}/submodules/pltis_virtualtrees/virtualtreeview_package.lpk')
    run(f'{lazbuild} --add-package {build_folder}/submodules/metadarkstyle/metadarkstyle.lpk')
    run(f'{lazbuild} --add-package {build_folder}/submodules/metadarkstyle/metadarkstyledsgn.lpk')
    run(f'{lazbuild} --add-package-link {build_folder}/packages/OpenRSATCore/OpenRSATCore.lpk')

    # Build Lazarus project
    print("Build lazarus project")
    run(f"{lazbuild} --build-mode=macosx-arm64 {build_folder}/sources/OpenRSAT.lpi --ws=cocoa")

    # Update package version
    print("Update package version")
    version = f"{tag[1:]}.{package_version}"
    control.set_software_version(version)
    control.save_control_to_wapt()

    # Create icon set
    print("Create icon set")
    mkdirs('./WAPT/MyIcon.iconset')
    for size in [16, 32, 64, 128, 256, 512]:
        run("sips -z %i %i %s --out %s" % (size, size, "./WAPT/icon_1024.png", "./WAPT/MyIcon.iconset/icon_%ix%i.png" % (size, size)))
        run("sips -z %i %i %s --out %s" % (size*2, size*2, "./WAPT/icon_1024.png", "./WAPT/MyIcon.iconset/icon_%ix%i@2.png" % (size, size)))
    run("iconutil -c icns ./WAPT/MyIcon.iconset")

    # WAPT PAckage prepare
    if not isdir(f"./OpenRSAT.app/Contents/MacOS/lib"):
        mkdirs(f"./OpenRSAT.app/Contents/MacOS/lib")
    if not isdir(f"./OpenRSAT.app/Contents/Resources"):
        mkdirs(f"./OpenRSAT.app/Contents/Resources")

    print("Copy files")
    filecopyto(f"./WAPT/MyIcon.icns", "./OpenRSAT.app/Contents/Resources/icon.icns")
    remove_tree(f"./WAPT/MyIcon.iconset")
    filecopyto(f"{build_folder}/bin/macosx-arm64/OpenRSAT", "./OpenRSAT.app/Contents/MacOS/OpenRSAT")
    filecopyto(f"/opt/wapt/lib/libssl.dylib", "./OpenRSAT.app/Contents/MacOS/lib/libssl.dylib")
    filecopyto(f"/opt/wapt/lib/libcrypto.dylib", "./OpenRSAT.app/Contents/MacOS/lib/libcrypto.dylib")

    print("Write plist file")
    with open(f"./OpenRSAT.app/Contents/Info.plist", "w") as f:
        f.write(info_plist % control.get_software_version())
    
    print("Update binaries permissions")
    run(f"chmod 755 ./OpenRSAT.app/Contents/MacOS/OpenRSAT")
    if isfile("./OpenRSAT.app/Contents/MacOS/lib/libssl.dylib"):
        run(f"chmod 755 ./OpenRSAT.app/Contents/MacOS/lib/libssl.dylib")
    if isfile("./OpenRSAT.app/Contents/MacOS/lib/libcrypto.dylib"):
        run(f"chmod 755 ./OpenRSAT.app/Contents/MacOS/lib/libcrypto.dylib")

    mkdirs(f"./OpenRSATBuild")
    shutil.move("./OpenRSAT.app", "./OpenRSATBuild")
    run(f"ln -s /Applications ./OpenRSATBuild")
    
    print("Create dmg")
    run(f'hdiutil create -volname "OpenRSAT" -srcfolder "./OpenRSATBuild" -ov -format UDZO "./OpenRSAT.dmg"')
    remove_tree(f"./OpenRSATBuild")


info_plist = fr"""<?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>CFBundleName</key>
    <string>{name}</string>
    <key>CFBundleShortVersionString</key>
    <string>%s</string>
    <key>CFBundleExecutable</key>
    <string>{name}</string>
    <key>CFBundleIconFile</key>
    <string>icon.icns</string>
    <key>CFBundleIdentifier</key>
    <string>it.tranquil.{name.lower()}</string>
    <key>NSHighResolutionCapable</key>
    <true/>
</dict>
</plist>"""

0dec64e5e74a71ee69e70148d938042a1ae1a2d423836826bc2e70eea51bdd44 : OpenRSAT.dmg
f0eb31e23e3825c6ee393f247bde6335d5dcc16a35ebb00751b3d8466f397f8c : WAPT/MyIcon.icns
38d056ab130f7bf7c481c12636a4e9959de36561d3dfcbe54c6e3571bc0c1dc3 : WAPT/certificate.crt
fbf2bf6bbaab604c5fbf4e15590f7c910878799dbb5c564e04fe7f44411b916e : WAPT/control
03ea977bb46ee771b0e00d075fd36c1b185129a40260935db691719e6f42483d : WAPT/icon.png
622aebdc7fdd71f4cb62388430a5c7aea3286dc596fec1d720dc86d2a8a1e2f4 : WAPT/icon_1024.png
a85e97c48207d7ad20ef4cf1ed1a9f8709ad4061b8aa24e0f332fcd5c6928ebe : luti.json
f0e68acf9478e511aa66cf6ef97e3bfbf029d7e75fe41e863353a60d949be493 : setup.py
235edddbc685829e644782c3ad3d6323d05c05007e1812ba38fa82f66da214da : update_package.py