This project has moved and is read-only. For the latest updates, please go here.

WARNING: This is the documentation for the CTP 4.2. The CTP 6.1. won't be documented but you can read the release notes. 

 

Mods (My Own DSM Shortcuts) is an application for Windows, developed in C#, generating Synology packages (.spk) that add icons in DSM's Main menu in order to open Url's, execute Shell Scripts or php Scripts.

  • If an Url is provided to Mods, it will be opened in a new tab in your browser
  • If a Shell Script is provided, the output stream will be displayed in a popup window on your DSM (in a iFrame)
  • If webpages (php or html) are provided, they will be packaged and deployed on the Synolgoy and the entry page will be opened in a popup window on your DSM.

The icons can next be dragged-and-dropped on DSM's Desktop to create shortcuts (Hence the name: My Own DSM Shortcuts).

NB.: The package created by mods can be fully customized manually. Ex.: If you need a more advanced installation script, an installation wizard... And there is no need to enable the Web Station to use the packages created by Mods. It's requiring however the third party package "Init 3rdParty"

 

Run Mods on Windows

To generate a Dummy Package that add shortcuts in your DSM:

  1. Run the Mods.exe.
  2. Click on the configuration icon (top-right) to specify
    1. either an empty directory where your new package will be generated. 
    2. or a directory containing an existing package to reload and edit.
  3. Configure your Package with information for Synology's Package Center:
    1. a Package name. It may only contain letters and figures. No blank or special characters. This name is used for the .spk file and for the folders where the package is stored/installed on your Synology:
      1. /usr/syno/etc/packages/<package name>
      2. /var/packages/<package name>
      3. /volume1/@appstore/<package name>
    2. a Version. This one must be formatted like {0.0.0}. NB.: The last figure is incremented each time one regenerates the Package. This is to solve a current issue where the icon is not refreshed when one deploys a new version of the package (with a new icon)..
    3. a Display Name. It will be visible in the Package Center.
    4. the Maintainer. It's you. This name is used both as maintainer and distributor.
    5. a DSM name. This is the name of the App as known by the DSM. It should be like a namespace org.yourOrgName.yourPackageName.
    6. a Description of the Package. This one will be displayed within the Package Center. It's used as English and international descriptions.
    7. a Url. This one is used as url for both the maintainer and the distributor.
  4. Add now Url's, Scripts or WebApp into your Package by clicking on "Add" at the bottom-left.
  5. Enter a "Title" and select a type "Url", "Script" or "WebApp" (a "Description" is optional).
    • Url for websites hosted on the NAS can be like:
      • /myWebSite/ (Ex. /net2ftp/index.php).
      • :port (Ex. :8080).
      • :port/myWebSite (Ex. :9000/net2ftp/index.php)
      • https://:port/myWebSite (Ex. https://:9443/net2ftp/index.php)
    • Url for non local websites will be like: http://myDomain/MyWebSite/. Https and specific port can be specified if required (Ex.: https://admincp.example.com:1443/config.php).
    • Shell Scripts can be used (but you may encounter issues with execution rights)
      • Scripts will be executed by a php page via a "Shell_Exec" command
      • Their output stream will be caught and displayed in the popup window
      • To also catch the error stream, end your script with: 2>&1
      • That php page will be embedded in the package itself
      • Scripts must not be typed between quotes
    • WebApp can be any set of html/php pages. 
      • You will have to provide the root folder containing those pages
      • You will have to select an entry php or html page to be displayed in the popup window
      • This root folder and all its subfolders will be embedded in the package itself!
  6. Tick the option "For All Users" if you want to create a shortcut to that URL for everybody.
  7. Tick the option "Multi Instance" if you want to be able to open several instances of a Shell Script or of a WebApp
  8. If you want, drag and drop your own icons (.png only) to replace the default ones.
    • Icons larger than expected will be resized.
    • You can also double click an icon to replace it.
    • By default, you are prompted to confirm that the new custom icon may be used for all sizes. You can untick the option "Use the same Icon for all sizes" to not be prompted anymore.
  9. Click "Save".
  10. Loop on step 4 for each URL's you want to add into the Package.
  11. Possibly select an existing Urls and "Delete" or "Edit" it.
    • You can also double-click an existing Url to "Edit" it.
  12. Finally click on "Package" to create the dummy .spk. Once created, you will be prompted to possibly open the output directory.

 Screenshot

 

NB.: all the information set to configure the Package are used to create the "INFO" file located in the root of the package directory. You can update them manually as explained bellow, before regenerating the Package.

NB.: all the information set to configure URL's in the Package are used to create the "config" file located in the subfolder \package\ui of the package directory. You can also update them manually before regenerating the Package.

PS.: if your url, Scripts or webApp does not open as expected, test in within Chrome and open the debug window (F12) to see what can possibly be the problem. A Internal Server Error can be a bug in a php page. Chrome can also prevent an external URL to be opened in a iFrame, etc... 

Generate the package manually

To generate a Dummy Package that create shortcuts in your DSM manually:

  1. Go to the "Resources" folder found in the zip you have downloaded .
  2. Unzip the file Package.zip
  3. Edit the "config" file located under \package\ui.
    1. It's a json structure
    2. Duplicate the section "be.beatificabytes.sample" once per URL you want to configure. The name of that section must be unique!
    3. Change only the fields "title", "desc", "allUsers" and "url".
      • Url for website hosted on the NAS will be like: /myWebSite/ (Ex.: /net2ftp/index.php).
      • Url for non local website will be like: http://myDomain/MyWebSite/. Https and specific port can be specified if required (Ex.: https://admincp.example.com:1443/config.php).
    4. Custom icons can be added in the folder \package\ui\images. They must all be named with the same prefix followed by their width. The common prefix followed by {0} must be set in the config file for the field "icon". Ex.: images/MyOwnIcon{0}.png will be used to icons named MyOwnIcon96.png, MyOwnIcon128.png, MyOwnIcon256.png
  4. Edit the "INFO" file located in the root to customize your Package
  5. Replace Package's icons PACKAGE_ICON.PNG and PACKAGE_ICON_256.PNG, located next to the INFO file, by your own icons.
  6. Finally create the .spk package as scripted in Pack.cmd file (also next to the INFO file) or run this script ;)
    1. Create a tar file named package.tar with the content of the folder \package\ (I.e.: with the "ui" folder)
    2. GZip that package.tar file into a package.tgz
    3. Create a tar file with the
      • "package.tgz"
      • the folder "scripts"
      • the INFO file
      • the two Package_Icon png
    • !! renamed the "mods.spk" with your own package name.

NB.: all changes done in the "INFO" or "config" files, as well as icons replaced behind the scene will be taken into account by Mods.exe during the next run.

Customize the package manually

Having access to all the resources added in the package, you can customize them at will. Ex.: you can modify the installation script, etc... 

The new Dev Guide of Synology is quite helpful although not yet 100% correct/up-to-date/complete: https://developer.synology.com/developer-guide/

Install the package on your DSM

Once your Package ready, go to your DSM > "Package Center" > "Manual Install" > "Browse", and select the .spk file.

 

Once the package installed, you can hide/show the shortcuts by stopping/starting Mods. You can also Drag and Drop the shortcut from DSM's Start Menu onto DSM's Desktop. This is coded in the shell scripts available in the Package's subfolder \Mod\scripts. You can customize them at will ;)

 Package Installation

 

And here is the result

My Own DSM Shorcuts

 

Prerequisite

The third party package named "Init_3rdPary" from QTIP must be installed in order to support running "scripts". Those being run by php, via a shell execute, some initialization is indeed required.

Sample

Get "ModsSamples.spk" here attached, generated with CTP 4.2

This package created with Mods contains three shortcuts. One to execute a script (ps -gaceux), one to open www.synology.com in a new tab and one to open a WebApp with 3 pages (two php pages and one html page).

 

Or Get the new version "ModsSamples.spk", generated with CTP 6.1. 

This package created with Mods contains six shortcuts. One to execute a command (ps -gaceux), one to open mods.codeplex.com in a new tab, one to open multiple instances of a WebApp w(a Chat box), one to open the home page of your Synology (if any on your WebStation), one with a Command to display CPU information and one with a more complex script.

 

Some tips

  • All the icons used when configuring urls are backuped when generating a package. So, if you delete by accident the target directory, you will not loose them. When reconfiguring the target directory, you will however have to confirm that you want to recover all the icons.
  • If you change (reconfigure) the target directory, you will also be prompted to recover the icons.
  • Preferably always uninstall your package before installing a new version - or at least, change the version of the new Package. Currently, I only autoincrement the version when the Package's icons are replaced as this was the only way to force DSM to display the new icons.
  • More details about INFO, config file and scripts on http://forum.synology.com/wiki/index.php/Synology_package_files
  • package content is deployed under /usr/syno/synoman/webman/3rdparty/

  

NB.: The default Icon of Mods is from Arrioch (Milos Mirkovic) and was found on Icon Archive free of charge for non-commercial uses. I like his work very much ;)

Last edited Feb 10 at 10:28 PM by vletroye, version 3