Difference between revisions of "Createlinks example script"

From SME Server
Jump to navigationJump to search
 
(16 intermediate revisions by the same user not shown)
Line 2: Line 2:
  
 
The build section lists commands to run as part of the build process This is where you can use a root/createlinks script to create events and action links.
 
The build section lists commands to run as part of the build process This is where you can use a root/createlinks script to create events and action links.
see [[.spec_file_notes]]
+
see  
 +
 
 +
*[http://wiki.contribs.org/Esmith::Build::CreateLinks Esmith::Build::CreateLinks]
 +
*[[SME_Server:Documentation:Developers_Manual#The_createlinks_script]]
 +
*[[.spec_file_notes]]
 +
 
 
  %build
 
  %build
 
  perl createlinks
 
  perl createlinks
  
==== Example 1 ====  
+
==== Example ====  
#!/usr/bin/perl -w
+
#!/usr/bin/perl -w
 
   
 
   
 
  sub safe_symlink {
 
  sub safe_symlink {
Line 45: Line 50:
 
  event_link("yum-check-repository", "yum-update", "40");
 
  event_link("yum-check-repository", "yum-update", "40");
  
[[Category:Howto]]
+
==== Example : smeserver-Sme8admin====
 +
#! /usr/bin/perl -w
 +
 +
use esmith::Build::CreateLinks qw(:all);
 +
 +
# Start and stop links
 +
service_link_enhanced("sme8admind", "S99", "7");
 +
service_link_enhanced("sme8admind", "K97", "6");
 +
service_link_enhanced("sme8admind", "K20", "0");
 +
service_link_enhanced("sme8admind", "K20", "1");
 +
 +
# Links for the panel
 +
panel_link("sme8admin", "manager");
 +
#system("mkdir -p root/etc/e-smith/web/panels/manager/html/sme8admin");
 +
safe_symlink("/etc/e-smith/web/panels/manager/html/sme8admin", "root/etc/e-smith/web/panels/user/html/sme8admin");
 +
 +
# Logrotate
 +
event_link("sme8admin-parselog","logrotate","15");
 +
 
 +
==== Example : smeserver-sharedfolder====
 +
#!/usr/bin/perl -w
 +
 +
use esmith::Build::CreateLinks qw(:all);
 +
 +
#--------------------------------------------------
 +
# functions for manager panel
 +
#--------------------------------------------------
 +
my $panel = "manager";
 +
 +
panel_link("shares", $panel);
 +
panel_link("userpanel-encfs", $panel);
 +
 +
#--------------------------------------------------
 +
# actions for group-delete and user-delete events
 +
#--------------------------------------------------
 +
 +
foreach my $event (qw/group-delete user-delete/) {
 +
    event_link("group-share-modify", $event, "10");
 +
}
 +
 +
#--------------------------------------------------
 +
# actions for share-delete event
 +
#--------------------------------------------------
 +
 +
$event = "share-delete";
 +
 +
event_link("share-delete", $event, "15");
 +
 +
foreach my $event (qw(share-create share-modify share-modify-files)){
 +
    event_link("share-modify", $event, "15");
 +
}
 +
 +
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);
 +
    safe_symlink("sighup", "root/etc/e-smith/events/$event/services2adjust/smbd");
 +
    safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/httpd-e-smith");
 +
    safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/rsyncd");
 +
    safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/ftp");
 +
}
 +
 +
#--------------------------------------------------
 +
# actions for group-modify event
 +
#--------------------------------------------------
 +
 +
$event = 'group-modify';
 +
 +
templates2events("/etc/httpd/conf/httpd.conf", $event);
 +
safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/httpd-e-smith");
 +
 +
templates2events("/etc/fstab", "post-upgrade");
 +
 +
safe_touch("root/etc/e-smith/templates/etc/smb.conf/shares/template-begin");
 +
 +
safe_touch("root/var/service/rsyncd/down");
 +
service_link_enhanced("rsyncd", "S95", "7");
 +
service_link_enhanced("rsyncd", "K05", "6");
 +
service_link_enhanced("rsyncd", "K05", "0");
 +
safe_symlink("../daemontools" , 'root/etc/rc.d/init.d/supervise/rsyncd');
 +
safe_symlink("/var/service/rsyncd" , 'root/service/rsyncd');
 +
 +
templates2events("/etc/rsyncd.conf", "bootstrap-console-save");
 +
templates2events("/etc/rsyncd.conf", "remoteaccess-update");
 +
 
 +
==== Example : smeserver-denyhost ====
 +
 
 +
#!/usr/bin/perl -w
 +
 +
use esmith::Build::CreateLinks qw(:all);
 +
 +
panel_link("denyhosts", "manager");
 +
 +
service_link_enhanced("denyhosts", "S01", "7");
 +
 +
safe_symlink('restart', "root/etc/e-smith/events/conf-denyhosts/services2adjust/denyhosts");
 +
 +
foreach $file (
 +
    qw(/var/lib/denyhosts/allowed-hosts /etc/hosts.allow /etc/denyhosts.conf))
 +
{
 +
    templates2events($file, qw(bootstrap-console-save conf-denyhosts));
 +
}
 +
 +
exit 0;
 +
 
 +
==== Example : smeserver-roundcube ====
 +
 
 +
#!/usr/bin/perl -w
 +
 +
use esmith::Build::CreateLinks qw(:all);
 +
 +
for my $event (qw(
 +
    bootstrap-console-save
 +
    conf-roundcube
 +
    post-upgrade
 +
    ))
 +
{
 +
    templates2events("/opt/roundcube/config/db.inc.php", $event);
 +
    templates2events("/opt/roundcube/config/main.inc.php", $event);
 +
    templates2events("/etc/e-smith/sql/init/80roundcube", $event);
 +
}
 +
 +
for  my $event (qw(
 +
    conf-roundcube
 +
    ))
 +
{
 +
    templates2events("/etc/httpd/conf/httpd.conf", $event);
 +
    safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/mysql.init");;
 +
    safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/httpd-e-smith");
 +
}
 +
 
 +
==== Example : smeserver-yum ====
 +
#!/usr/bin/perl -w
 +
 +
use esmith::Build::CreateLinks qw(:all);
 +
use File::Basename;
 +
use File::Path;
 +
 +
foreach my $file (qw(/etc/yum.conf))
 +
{
 +
    templates2events($file, qw(yum-modify bootstrap-console-save));
 +
}
 +
 +
templates2events("/etc/crontab", "yum-modify");
 +
 +
for ( qw(install remove update) )
 +
{
 +
    event_link("yum-action", "yum-$_", "20");
 +
    event_link("initialize-default-databases", "yum-$_", "50");
 +
    event_link("navigation-conf", "yum-$_", "80");
 +
}
 +
 +
for ( qw(install remove update modify) )
 +
{
 +
    event_link("yum-update-dbs", "yum-$_", "90");
 +
}
 +
 +
for ( qw(bootstrap-console-save yum-update) )
 +
{
 +
    event_link("yum-import-keys", $_, "10");
 +
}
 +
 +
safe_symlink("once", "root/etc/e-smith/events/local/services2adjust/yum");
 +
 +
#--------------------------------------------------
 +
# functions for manager panel
 +
#--------------------------------------------------
 +
panel_link("yum", "manager");
 +
 
 +
==== Example : smeserver-phplist ====
 +
#!/usr/bin/perl -w
 +
 +
use esmith::Build::CreateLinks qw(:all);
 +
 +
templates2events("/etc/e-smith/sql/init/phplistdb", qw/webapps-update bootstrap-console-save/);
 +
templates2events("/etc/phplist/config.php", qw/webapps-update bootstrap-console-save/);
 +
 +
safe_symlink("/var/qmail/bin/qmail-newu", "root/etc/e-smith/events/webapps-update/S55phplist-qmail-assign");
 +
foreach my $event (qw/webapps-update ipasserelle-update bootstrap-ldap-save/){
 +
  event_link("phplist-create-pseudo", "$event", "55");
 +
}
 +
 +
safe_symlink("/etc/e-smith/templates-default/template-begin-php", "root/etc/e-smith/templates/etc/phplist/config.php/template-begin");
 +
safe_symlink("/etc/e-smith/templates-default/template-end-php", "root/etc/e-smith/templates/etc/phplist/config.php/template-end");
 +
 +
safe_symlink("/var/qmail/alias/.qmail-phplistbounces", "root/var/qmail/alias/.qmail-phplistbounces-default");
 +
 +
safe_symlink("../daemontools" , 'root/etc/rc.d/init.d/supervise/phplist');
 +
safe_symlink("/var/service/phplist" , 'root/service/phplist');
 +
safe_touch("root/var/service/phplist/down");
 +
safe_symlink("restart", "root/etc/e-smith/events/webapps-update/services2adjust/phplist");
 +
 +
service_link_enhanced('phplist', 'S98', '7');
 +
service_link_enhanced('phplist', 'K12', '6');
 +
service_link_enhanced('phplist', 'K12', '0');
 +
 +
safe_touch("root/var/lib/phplist/bounces.mbox");
 +
 
 
[[Category:SME Server Development Framework]]
 
[[Category:SME Server Development Framework]]
 
[[Category:Development Tools]]
 
[[Category:Development Tools]]
 
[[Category:SME9-Development]]
 
[[Category:SME9-Development]]

Latest revision as of 12:06, 1 September 2014

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.


The build section lists commands to run as part of the build process This is where you can use a root/createlinks script to create events and action links. see

%build
perl createlinks

Example

#!/usr/bin/perl -w

sub safe_symlink {
   my ($from, $to) = @_;
   use File::Basename;
   use File::Path;
   mkpath(dirname($to));
   unlink($to);
   symlink($from, $to) or die "Can't create symlink from $from to $to: $!";
}
sub panel_link

{
 my ($function, $panel) = @_;
    safe_symlink("../../../functions/$function",
         "root/etc/e-smith/web/panels/$panel/cgi-bin/$function");
}
sub event_link

{

   my ($action, $event, $level) = @_;
    safe_symlink("../actions/${action}",
               "root/etc/e-smith/events/${event}/S${level}${action}");
}
 #--------------------------------------------------
 # functions for manager panel
 #--------------------------------------------------
panel_link("yum", "manager");

   #--------------------------------------------------
   # actions for yum-update event
   #--------------------------------------------------
event_link("initialize-default-databases", "yum-update", "10");
event_link("conf-yum", "yum-update", "20");
event_link("yum-arch-repository", "yum-update", "30");
event_link("yum-check-repository", "yum-update", "40");

Example : smeserver-Sme8admin

#! /usr/bin/perl -w

use esmith::Build::CreateLinks qw(:all);

# Start and stop links
service_link_enhanced("sme8admind", "S99", "7");
service_link_enhanced("sme8admind", "K97", "6");
service_link_enhanced("sme8admind", "K20", "0");
service_link_enhanced("sme8admind", "K20", "1");

# Links for the panel
panel_link("sme8admin", "manager");
#system("mkdir -p root/etc/e-smith/web/panels/manager/html/sme8admin");
safe_symlink("/etc/e-smith/web/panels/manager/html/sme8admin", "root/etc/e-smith/web/panels/user/html/sme8admin");

# Logrotate
event_link("sme8admin-parselog","logrotate","15");

Example : smeserver-sharedfolder

#!/usr/bin/perl -w

use esmith::Build::CreateLinks qw(:all);

#--------------------------------------------------
# functions for manager panel
#--------------------------------------------------
my $panel = "manager";

panel_link("shares", $panel);
panel_link("userpanel-encfs", $panel);

#--------------------------------------------------
# actions for group-delete and user-delete events
#--------------------------------------------------

foreach my $event (qw/group-delete user-delete/) {
   event_link("group-share-modify", $event, "10");
}

#--------------------------------------------------
# actions for share-delete event
#--------------------------------------------------

$event = "share-delete";

event_link("share-delete", $event, "15");

foreach my $event (qw(share-create share-modify share-modify-files)){
   event_link("share-modify", $event, "15");
}

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);
   safe_symlink("sighup", "root/etc/e-smith/events/$event/services2adjust/smbd");
   safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/httpd-e-smith");
   safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/rsyncd");
   safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/ftp");
}

#--------------------------------------------------
# actions for group-modify event
#--------------------------------------------------

$event = 'group-modify';

templates2events("/etc/httpd/conf/httpd.conf", $event);
safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/httpd-e-smith");

templates2events("/etc/fstab", "post-upgrade");

safe_touch("root/etc/e-smith/templates/etc/smb.conf/shares/template-begin");

safe_touch("root/var/service/rsyncd/down");
service_link_enhanced("rsyncd", "S95", "7");
service_link_enhanced("rsyncd", "K05", "6");
service_link_enhanced("rsyncd", "K05", "0");
safe_symlink("../daemontools" , 'root/etc/rc.d/init.d/supervise/rsyncd');
safe_symlink("/var/service/rsyncd" , 'root/service/rsyncd');

templates2events("/etc/rsyncd.conf", "bootstrap-console-save");
templates2events("/etc/rsyncd.conf", "remoteaccess-update");

Example : smeserver-denyhost

#!/usr/bin/perl -w

use esmith::Build::CreateLinks qw(:all);

panel_link("denyhosts", "manager");

service_link_enhanced("denyhosts", "S01", "7");

safe_symlink('restart', "root/etc/e-smith/events/conf-denyhosts/services2adjust/denyhosts");

foreach $file (
   qw(/var/lib/denyhosts/allowed-hosts /etc/hosts.allow /etc/denyhosts.conf))
{
   templates2events($file, qw(bootstrap-console-save conf-denyhosts));
}

exit 0;

Example : smeserver-roundcube

#!/usr/bin/perl -w

use esmith::Build::CreateLinks qw(:all);

for my $event (qw(
    bootstrap-console-save
    conf-roundcube
    post-upgrade
    ))
{
    templates2events("/opt/roundcube/config/db.inc.php", $event);
    templates2events("/opt/roundcube/config/main.inc.php", $event);
    templates2events("/etc/e-smith/sql/init/80roundcube", $event);
}

for  my $event (qw(
    conf-roundcube
    ))
{
    templates2events("/etc/httpd/conf/httpd.conf", $event);
    safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/mysql.init");;
    safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/httpd-e-smith");
}

Example : smeserver-yum

#!/usr/bin/perl -w

use esmith::Build::CreateLinks qw(:all);
use File::Basename;
use File::Path;

foreach my $file (qw(/etc/yum.conf))
{
   templates2events($file, qw(yum-modify bootstrap-console-save));
}

templates2events("/etc/crontab", "yum-modify");

for ( qw(install remove update) )
{
   event_link("yum-action", "yum-$_", "20");
   event_link("initialize-default-databases", "yum-$_", "50");
   event_link("navigation-conf", "yum-$_", "80");
}

for ( qw(install remove update modify) )
{
   event_link("yum-update-dbs", "yum-$_", "90");
}

for ( qw(bootstrap-console-save yum-update) )
{
   event_link("yum-import-keys", $_, "10");
}

safe_symlink("once", "root/etc/e-smith/events/local/services2adjust/yum");

#--------------------------------------------------
# functions for manager panel
#--------------------------------------------------
panel_link("yum", "manager");

Example : smeserver-phplist

#!/usr/bin/perl -w

use esmith::Build::CreateLinks qw(:all);

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

safe_symlink("/var/qmail/bin/qmail-newu", "root/etc/e-smith/events/webapps-update/S55phplist-qmail-assign");
foreach my $event (qw/webapps-update ipasserelle-update bootstrap-ldap-save/){
 event_link("phplist-create-pseudo", "$event", "55");
}

safe_symlink("/etc/e-smith/templates-default/template-begin-php", "root/etc/e-smith/templates/etc/phplist/config.php/template-begin");
safe_symlink("/etc/e-smith/templates-default/template-end-php", "root/etc/e-smith/templates/etc/phplist/config.php/template-end");

safe_symlink("/var/qmail/alias/.qmail-phplistbounces", "root/var/qmail/alias/.qmail-phplistbounces-default");

safe_symlink("../daemontools" , 'root/etc/rc.d/init.d/supervise/phplist');
safe_symlink("/var/service/phplist" , 'root/service/phplist');
safe_touch("root/var/service/phplist/down");
safe_symlink("restart", "root/etc/e-smith/events/webapps-update/services2adjust/phplist");

service_link_enhanced('phplist', 'S98', '7');
service_link_enhanced('phplist', 'K12', '6');
service_link_enhanced('phplist', 'K12', '0');

safe_touch("root/var/lib/phplist/bounces.mbox");