Esmith::Build::CreateLinks

From SME Server
Revision as of 12:14, 1 September 2014 by Stephdl (talk | contribs) (→‎safe_touch)
Jump to navigationJump to search
PythonIcon.png Skill level: Developer
Risk of inconsistencies with Koozali SME Server methodology, upgrades & functionality is high. One must be knowledgeable about how changes impact their Koozali SME Server. Significant risk of irreversible harm.


NAME

esmith::Build::CreateLinks - A library for creating symlinks during rpm construction.

In a root terminal you can do the command below if you want to display the up-to-date content

perldoc esmith::Build::CreateLinks

SYNOPSIS

use esmith::Build::CreateLinks qw(:all);
safe_symlink("../../../functions/$function", "$cgibin/$function")

the beginning is always the same

#!/usr/bin/perl -w
use esmith::Build::CreateLinks qw(:all);

DESCRIPTION

safe_symlink

This function works like symlink(), but if the directory being linked to does not exist, it will create it.

ie. safe_symlink("../../../functions/$function", "$cgibin/$function")

  • links to add
   safe_symlink("/etc/e-smith/templates-default/template-begin-php", "root/etc/e-smith/templates/etc/test/db.php/template-begin");
   safe_symlink("/etc/e-smith/templates-default/template-end-php", "root/etc/e-smith/templates/etc/test/db.php/template-end");
  • service to restart on demand
for  my $event (qw(
   conf-roundcube
   ))
{
   templates2events("/etc/httpd/conf/httpd.conf", $event);     #####expand-template on event conf-roundcube
   safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/mysql.init");  #####restart mysqlinit on event conf-roundcube
   safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/httpd-e-smith");  #####restart httpd on event conf-roundcube
}
panel_link

This function creates a link to a web panel.

ie.

my $panel = "manager";
panel_link("tug", $panel);

ie :

panel_link("denyhosts", "manager");
admin_common_link

This function creates a symlink from the common manager directory to a file in the functions directory.

event_link

This function creates a symlink from an action’s ordered location in an event directory to its action script. (actions are in /etc/e-smith/events/actions/)

ie.

my $event = "tug-update";
event_link("tug-conf", $event, "10");
event_link("conf-masq", $event, "20");
event_link("adjust-masq", $event, "30");
event_link("tug-restart", $event, "40");

or

foreach my $event (qw/webapps-update ipasserelle-update bootstrap-ldap-save/){
 event_link("phplist-create-pseudo", "$event", "55");
}
service_link_enhanced

This function creates a symlink from a SysV init start or kill link in a runlevel to e-smith-service, a wrapper that is config db aware.

ie.

safe_symlink("daemontools", "root/etc/rc.d/init.d/tug");
service_link_enhanced("tug", "S85", "7");
service_link_enhanced("tug", "K25", "6");
service_link_enhanced("tug", "K25", "0");
safe_symlink("/var/service/tug/", "root/service/tug");

of course the job script needs to be in /var/service/tug (should be relevant that it needs to be named by the same name : tug)

safe_touch

This function creates an empty file, but first creates any enclosing directories. For example:

ie :

safe_touch("root/var/lib/phplist/bounces.mbox");
safe_touch("a/b/c/d");

will create any of the directories "a", "a/b", "a/b/c" which don’t exist, then create an empty file "a/b/c/d".

templates2events

This function creates a file tree (of empty files) which is used by the generic_template_expand action to determine which templates need to be expanded for a particular event. Takes one file argument and a list of event names, e.g.

templates2events("/etc/some/file", "event1", "event2", ...);

eg :

foreach my $event (qw(share-create share-modify share-delete share-modify-servers)){
  templates2events("/etc/samba/smb.conf", $event);
  templates2events("/etc/httpd/conf/httpd.conf", $event);
  templates2events("/etc/rsyncd.conf", $event);
  templates2events("/etc/proftpd.conf", $event);
}

could be written like that also

templates2events("/etc/e-smith/sql/init/phplistdb", qw/webapps-update bootstrap-console-save/);
templates2events("/etc/phplist/config.php", qw/webapps-update bootstrap-console-save/);

or more simply

   templates2events("/opt/roundcube/config/db.inc.php", console-save);

AUTHOR

SME Server Developers <bugs@e-smith.com>

SEE ALSO