Linux mail.vriendennsm.nl 6.1.0-51-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.177-1 (2026-07-16) x86_64
Apache/2.4.68 (Debian)
Server IP : 217.154.75.17 & Your IP : 216.73.216.195
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
webmin /
sendmail /
Delete
Unzip
Name
Size
Permission
Date
Action
help
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
images
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
lang
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
CHANGELOG
4.2
KB
-rw-r--r--
2026-07-17 21:17
access-lib.pl
6.41
KB
-rwxr-xr-x
2026-07-17 21:17
acl_security.pl
4.52
KB
-rwxr-xr-x
2026-07-17 21:17
aliases-lib.pl
7.93
KB
-rwxr-xr-x
2026-07-17 21:17
autoreply.pl
12.68
KB
-rwxr-xr-x
2026-07-17 21:22
backup_config.pl
1.48
KB
-rwxr-xr-x
2026-07-17 21:17
boxes-lib.pl
85.02
KB
-rwxr-xr-x
2026-07-17 21:17
build.cgi
1.84
KB
-rwxr-xr-x
2026-07-17 21:22
cgi_args.pl
1.42
KB
-rwxr-xr-x
2026-07-17 21:17
config-AlmaLinux-7.0-ALL
685
B
-rw-r--r--
2026-07-17 21:17
config-Amazon-Linux-2-ALL
685
B
-rw-r--r--
2026-07-17 21:17
config-CentOS-Linux-7.0-ALL
685
B
-rw-r--r--
2026-07-17 21:17
config-CentOS-Stream-Linux-8.0-ALL
685
B
-rw-r--r--
2026-07-17 21:17
config-CloudLinux-8.0-ALL
685
B
-rw-r--r--
2026-07-17 21:17
config-Oracle-Linux-8.0-ALL
685
B
-rw-r--r--
2026-07-17 21:17
config-Redhat-Enterprise-Linux-7.0-ALL
685
B
-rw-r--r--
2026-07-17 21:17
config-Rocky-Linux-7.0-ALL
685
B
-rw-r--r--
2026-07-17 21:17
config-Scientific-Linux-7.0-ALL
685
B
-rw-r--r--
2026-07-17 21:17
config-aix
573
B
-rw-r--r--
2026-07-17 21:17
config-cobalt-linux
669
B
-rw-r--r--
2026-07-17 21:17
config-coherent-linux
661
B
-rw-r--r--
2026-07-17 21:17
config-corel-linux
528
B
-rw-r--r--
2026-07-17 21:17
config-debian-linux
607
B
-rw-r--r--
2026-07-17 21:17
config-debian-linux-2.1-2.2
612
B
-rw-r--r--
2026-07-17 21:17
config-debian-linux-3.0-ALL
616
B
-rw-r--r--
2026-07-17 21:17
config-freebsd
654
B
-rw-r--r--
2026-07-17 21:17
config-freebsd-4.0-ALL
659
B
-rw-r--r--
2026-07-17 21:17
config-generic-linux
672
B
-rw-r--r--
2026-07-17 21:17
config-gentoo-linux
697
B
-rw-r--r--
2026-07-17 21:17
config-hpux
525
B
-rw-r--r--
2026-07-17 21:17
config-irix
668
B
-rw-r--r--
2026-07-17 21:17
config-macos
657
B
-rw-r--r--
2026-07-17 21:17
config-macos-1.3-ALL
662
B
-rw-r--r--
2026-07-17 21:17
config-mandrake-linux
678
B
-rw-r--r--
2026-07-17 21:17
config-mandrake-linux-8.2
661
B
-rw-r--r--
2026-07-17 21:17
config-mandrake-linux-9.0-ALL
678
B
-rw-r--r--
2026-07-17 21:17
config-msc-linux
576
B
-rw-r--r--
2026-07-17 21:17
config-netbsd
639
B
-rw-r--r--
2026-07-17 21:17
config-open-linux
671
B
-rw-r--r--
2026-07-17 21:17
config-open-linux-2.5
676
B
-rw-r--r--
2026-07-17 21:17
config-open-linux-3.1e
676
B
-rw-r--r--
2026-07-17 21:17
config-openSUSE-Linux-15.0-ALL
636
B
-rw-r--r--
2026-07-17 21:17
config-openbsd
640
B
-rw-r--r--
2026-07-17 21:17
config-openserver
572
B
-rw-r--r--
2026-07-17 21:17
config-osf1
538
B
-rw-r--r--
2026-07-17 21:17
config-redhat-linux
654
B
-rw-r--r--
2026-07-17 21:17
config-redhat-linux-10.0-23.0
685
B
-rw-r--r--
2026-07-17 21:17
config-redhat-linux-24.0-ALL
747
B
-rw-r--r--
2026-07-17 21:17
config-redhat-linux-7.1-7.3
656
B
-rw-r--r--
2026-07-17 21:17
config-redhat-linux-7.4-9.0
661
B
-rw-r--r--
2026-07-17 21:17
config-slackware-linux
523
B
-rw-r--r--
2026-07-17 21:17
config-slackware-linux-8.0
672
B
-rw-r--r--
2026-07-17 21:17
config-slackware-linux-8.1-ALL
699
B
-rw-r--r--
2026-07-17 21:17
config-sol-linux
679
B
-rw-r--r--
2026-07-17 21:17
config-solaris
641
B
-rw-r--r--
2026-07-17 21:17
config-solaris-10-ALL
722
B
-rw-r--r--
2026-07-17 21:17
config-solaris-7
730
B
-rw-r--r--
2026-07-17 21:17
config-solaris-8-9
729
B
-rw-r--r--
2026-07-17 21:17
config-suse-linux
592
B
-rw-r--r--
2026-07-17 21:17
config-suse-linux-8.2-ALL
640
B
-rw-r--r--
2026-07-17 21:17
config-turbo-linux
654
B
-rw-r--r--
2026-07-17 21:17
config-united-linux
592
B
-rw-r--r--
2026-07-17 21:17
config-unixware
566
B
-rw-r--r--
2026-07-17 21:17
config.info
2.4
KB
-rw-r--r--
2026-07-17 21:17
config.info.ca
2.78
KB
-rw-r--r--
2026-07-17 21:17
config.info.cs
2.6
KB
-rw-r--r--
2026-07-17 21:17
config.info.de
2.79
KB
-rw-r--r--
2026-07-17 21:17
config.info.es
1.74
KB
-rw-r--r--
2026-07-17 21:17
config.info.fr
2.42
KB
-rw-r--r--
2026-07-17 21:17
config.info.hu
0
B
-rw-r--r--
2026-07-17 21:17
config.info.nl
2.72
KB
-rw-r--r--
2026-07-17 21:17
config.info.no
2.52
KB
-rw-r--r--
2026-07-17 21:17
config.info.pl
1.13
KB
-rw-r--r--
2026-07-17 21:17
config.info.pt_BR
2.85
KB
-rw-r--r--
2026-07-17 21:17
config.info.ru
2.45
KB
-rw-r--r--
2026-07-17 21:17
config.info.sv
1.06
KB
-rw-r--r--
2026-07-17 21:17
config.info.tr
1.09
KB
-rw-r--r--
2026-07-17 21:17
config.info.uk
2.48
KB
-rw-r--r--
2026-07-17 21:17
config.info.zh
970
B
-rw-r--r--
2026-07-17 21:17
config.info.zh_TW
1.04
KB
-rw-r--r--
2026-07-17 21:17
create_file.cgi
1.41
KB
-rwxr-xr-x
2026-07-17 21:22
defaultacl
286
B
-rw-r--r--
2026-07-17 21:17
defines
3.77
KB
-rw-r--r--
2026-07-17 21:17
del_mailq.cgi
1.31
KB
-rwxr-xr-x
2026-07-17 21:22
del_mailqs.cgi
2.82
KB
-rwxr-xr-x
2026-07-17 21:22
delete_access.cgi
782
B
-rwxr-xr-x
2026-07-17 21:22
delete_aliases.cgi
800
B
-rwxr-xr-x
2026-07-17 21:22
delete_domains.cgi
710
B
-rwxr-xr-x
2026-07-17 21:22
delete_generics.cgi
790
B
-rwxr-xr-x
2026-07-17 21:22
delete_mailers.cgi
713
B
-rwxr-xr-x
2026-07-17 21:22
delete_virtusers.cgi
799
B
-rwxr-xr-x
2026-07-17 21:22
domain-lib.pl
4.25
KB
-rwxr-xr-x
2026-07-17 21:17
dontblames
3.34
KB
-rw-r--r--
2026-07-17 21:17
edit_access.cgi
505
B
-rwxr-xr-x
2026-07-17 21:22
edit_afile.cgi
1.06
KB
-rwxr-xr-x
2026-07-17 21:22
edit_alias.cgi
470
B
-rwxr-xr-x
2026-07-17 21:22
edit_domain.cgi
433
B
-rwxr-xr-x
2026-07-17 21:22
edit_feature.cgi
2.98
KB
-rwxr-xr-x
2026-07-17 21:22
edit_ffile.cgi
2.03
KB
-rwxr-xr-x
2026-07-17 21:22
edit_file.cgi
2.26
KB
-rwxr-xr-x
2026-07-17 21:22
edit_generic.cgi
460
B
-rwxr-xr-x
2026-07-17 21:22
edit_mailer.cgi
435
B
-rwxr-xr-x
2026-07-17 21:22
edit_rfile.cgi
3.04
KB
-rwxr-xr-x
2026-07-17 21:22
edit_virtuser.cgi
473
B
-rwxr-xr-x
2026-07-17 21:22
features-lib.pl
4.25
KB
-rwxr-xr-x
2026-07-17 21:17
feedback_files.pl
397
B
-rwxr-xr-x
2026-07-17 21:17
filter.pl
1.99
KB
-rwxr-xr-x
2026-07-17 21:22
flushq.cgi
714
B
-rwxr-xr-x
2026-07-17 21:22
generics-lib.pl
4.52
KB
-rwxr-xr-x
2026-07-17 21:17
index.cgi
4.81
KB
-rwxr-xr-x
2026-07-17 21:22
install_check.pl
452
B
-rwxr-xr-x
2026-07-17 21:17
list_access.cgi
3.04
KB
-rwxr-xr-x
2026-07-17 21:22
list_aliases.cgi
3.48
KB
-rwxr-xr-x
2026-07-17 21:22
list_cgs.cgi
636
B
-rwxr-xr-x
2026-07-17 21:22
list_cws.cgi
706
B
-rwxr-xr-x
2026-07-17 21:22
list_domains.cgi
2.36
KB
-rwxr-xr-x
2026-07-17 21:22
list_features.cgi
2.97
KB
-rwxr-xr-x
2026-07-17 21:22
list_generics.cgi
3.83
KB
-rwxr-xr-x
2026-07-17 21:22
list_mailers.cgi
2.66
KB
-rwxr-xr-x
2026-07-17 21:22
list_mailq.cgi
3.54
KB
-rwxr-xr-x
2026-07-17 21:22
list_masq.cgi
1.15
KB
-rwxr-xr-x
2026-07-17 21:22
list_opts.cgi
4.91
KB
-rwxr-xr-x
2026-07-17 21:22
list_ports.cgi
2.2
KB
-rwxr-xr-x
2026-07-17 21:22
list_relay.cgi
938
B
-rwxr-xr-x
2026-07-17 21:22
list_trusts.cgi
646
B
-rwxr-xr-x
2026-07-17 21:22
list_us
1
B
-rw-r--r--
2026-07-17 21:17
list_virtusers.cgi
3.75
KB
-rwxr-xr-x
2026-07-17 21:22
log_parser.pl
1.73
KB
-rwxr-xr-x
2026-07-17 21:17
mailers-lib.pl
5.32
KB
-rwxr-xr-x
2026-07-17 21:17
mailq_search.cgi
996
B
-rwxr-xr-x
2026-07-17 21:22
manual_features.cgi
398
B
-rwxr-xr-x
2026-07-17 21:22
module.info
659
B
-rw-r--r--
2026-07-17 21:17
module.info.ar
0
B
-rw-r--r--
2026-07-17 21:17
module.info.ar.auto
217
B
-rw-r--r--
2026-07-17 21:17
module.info.bg
0
B
-rw-r--r--
2026-07-17 21:17
module.info.bg.auto
230
B
-rw-r--r--
2026-07-17 21:17
module.info.ca
144
B
-rw-r--r--
2026-07-17 21:17
module.info.ca.auto
24
B
-rw-r--r--
2026-07-17 21:17
module.info.cs
30
B
-rw-r--r--
2026-07-17 21:17
module.info.cs.auto
122
B
-rw-r--r--
2026-07-17 21:17
module.info.da
0
B
-rw-r--r--
2026-07-17 21:17
module.info.da.auto
137
B
-rw-r--r--
2026-07-17 21:17
module.info.de
130
B
-rw-r--r--
2026-07-17 21:17
module.info.de.auto
17
B
-rw-r--r--
2026-07-17 21:17
module.info.el
0
B
-rw-r--r--
2026-07-17 21:17
module.info.el.auto
296
B
-rw-r--r--
2026-07-17 21:17
module.info.es
35
B
-rw-r--r--
2026-07-17 21:17
module.info.es.auto
134
B
-rw-r--r--
2026-07-17 21:17
module.info.eu
0
B
-rw-r--r--
2026-07-17 21:17
module.info.eu.auto
150
B
-rw-r--r--
2026-07-17 21:17
module.info.fa
0
B
-rw-r--r--
2026-07-17 21:17
module.info.fa.auto
229
B
-rw-r--r--
2026-07-17 21:17
module.info.fi
0
B
-rw-r--r--
2026-07-17 21:17
module.info.fi.auto
164
B
-rw-r--r--
2026-07-17 21:17
module.info.fr
34
B
-rw-r--r--
2026-07-17 21:17
module.info.fr.auto
133
B
-rw-r--r--
2026-07-17 21:17
module.info.hr
0
B
-rw-r--r--
2026-07-17 21:17
module.info.hr.auto
161
B
-rw-r--r--
2026-07-17 21:17
module.info.hu
37
B
-rw-r--r--
2026-07-17 21:17
module.info.hu.auto
129
B
-rw-r--r--
2026-07-17 21:17
module.info.it
0
B
-rw-r--r--
2026-07-17 21:17
module.info.it.auto
161
B
-rw-r--r--
2026-07-17 21:17
module.info.ja
27
B
-rw-r--r--
2026-07-17 21:17
module.info.ja.auto
143
B
-rw-r--r--
2026-07-17 21:17
module.info.ko
24
B
-rw-r--r--
2026-07-17 21:17
module.info.ko.auto
141
B
-rw-r--r--
2026-07-17 21:17
module.info.ms
127
B
-rw-r--r--
2026-07-17 21:17
module.info.ms.auto
21
B
-rw-r--r--
2026-07-17 21:17
module.info.nl
30
B
-rw-r--r--
2026-07-17 21:17
module.info.nl.auto
108
B
-rw-r--r--
2026-07-17 21:17
module.info.no
31
B
-rw-r--r--
2026-07-17 21:17
module.info.no.auto
113
B
-rw-r--r--
2026-07-17 21:17
module.info.pl
31
B
-rw-r--r--
2026-07-17 21:17
module.info.pl.auto
122
B
-rw-r--r--
2026-07-17 21:17
module.info.pt
35
B
-rw-r--r--
2026-07-17 21:17
module.info.pt.auto
122
B
-rw-r--r--
2026-07-17 21:17
module.info.pt_BR
39
B
-rw-r--r--
2026-07-17 21:17
module.info.pt_BR.auto
128
B
-rw-r--r--
2026-07-17 21:17
module.info.ru
42
B
-rw-r--r--
2026-07-17 21:17
module.info.ru.auto
214
B
-rw-r--r--
2026-07-17 21:17
module.info.sk
0
B
-rw-r--r--
2026-07-17 21:17
module.info.sk.auto
146
B
-rw-r--r--
2026-07-17 21:17
module.info.sv
32
B
-rw-r--r--
2026-07-17 21:17
module.info.sv.auto
104
B
-rw-r--r--
2026-07-17 21:17
module.info.tr
35
B
-rw-r--r--
2026-07-17 21:17
module.info.tr.auto
131
B
-rw-r--r--
2026-07-17 21:17
module.info.uk
0
B
-rw-r--r--
2026-07-17 21:17
module.info.uk.auto
228
B
-rw-r--r--
2026-07-17 21:17
module.info.zh
24
B
-rw-r--r--
2026-07-17 21:17
module.info.zh.auto
93
B
-rw-r--r--
2026-07-17 21:17
module.info.zh_TW
27
B
-rw-r--r--
2026-07-17 21:17
module.info.zh_TW.auto
99
B
-rw-r--r--
2026-07-17 21:17
move.cgi
559
B
-rwxr-xr-x
2026-07-17 21:22
negativeacl
8
B
-rw-r--r--
2026-07-17 21:17
prefs.info
147
B
-rw-r--r--
2026-07-17 21:17
qdetach.cgi
1.05
KB
-rwxr-xr-x
2026-07-17 21:22
rbac-mapping
186
B
-rw-r--r--
2026-07-17 21:17
save_access.cgi
1.98
KB
-rwxr-xr-x
2026-07-17 21:22
save_afile.cgi
563
B
-rwxr-xr-x
2026-07-17 21:22
save_alias.cgi
4.12
KB
-rwxr-xr-x
2026-07-17 21:22
save_cgs.cgi
640
B
-rwxr-xr-x
2026-07-17 21:22
save_cws.cgi
678
B
-rwxr-xr-x
2026-07-17 21:22
save_domain.cgi
1.37
KB
-rwxr-xr-x
2026-07-17 21:22
save_feature.cgi
2.32
KB
-rwxr-xr-x
2026-07-17 21:22
save_ffile.cgi
843
B
-rwxr-xr-x
2026-07-17 21:22
save_file.cgi
3.02
KB
-rwxr-xr-x
2026-07-17 21:22
save_generic.cgi
1.57
KB
-rwxr-xr-x
2026-07-17 21:22
save_mailer.cgi
1.83
KB
-rwxr-xr-x
2026-07-17 21:22
save_masq.cgi
1.2
KB
-rwxr-xr-x
2026-07-17 21:22
save_opts.cgi
3.29
KB
-rwxr-xr-x
2026-07-17 21:22
save_ports.cgi
2.47
KB
-rwxr-xr-x
2026-07-17 21:22
save_relay.cgi
710
B
-rwxr-xr-x
2026-07-17 21:22
save_rfile.cgi
1.26
KB
-rwxr-xr-x
2026-07-17 21:22
save_trusts.cgi
589
B
-rwxr-xr-x
2026-07-17 21:22
save_virtuser.cgi
2.81
KB
-rwxr-xr-x
2026-07-17 21:22
sendmail-lib.pl
17.78
KB
-rwxr-xr-x
2026-07-17 21:17
start.cgi
248
B
-rwxr-xr-x
2026-07-17 21:22
stop.cgi
276
B
-rwxr-xr-x
2026-07-17 21:22
useradmin_update.pl
1.43
KB
-rwxr-xr-x
2026-07-17 21:17
view_mailq.cgi
3.93
KB
-rwxr-xr-x
2026-07-17 21:22
virtusers-lib.pl
6.22
KB
-rwxr-xr-x
2026-07-17 21:17
Save
Rename
# generics-lib.pl # Functions for the generics table # generics_dbm(&config) # Returns the filename and type of the generics database, or undef if none sub generics_dbm { foreach $f (&find_type("K", $_[0])) { if ($f->{'value'} =~ /^generics\s+(\S+)[^\/]+(\S+)$/) { return ($2, $1); } } return undef; } # generics_file(&config) # Returns the filename of the text generics file, or undef if none sub generics_file { return &find_textfile($config{'generics_file'}, &generics_dbm($_[0])); } # list_generics(textfile) sub list_generics { if (!scalar(@list_generics_cache)) { @list_generics_cache = ( ); local $lnum = 0; local $cmt; open(GEN, "<".$_[0]); while(<GEN>) { s/\r|\n//g; # remove newlines if (/^\s*#+\s*(.*)/) { # A comment line $cmt = &is_table_comment($_); } elsif (/^(\S+)\s+(.*)/) { local(%gen); $gen{'from'} = $1; $gen{'to'} = $2; $gen{'line'} = $cmt ? $lnum-1 : $lnum; $gen{'eline'} = $lnum; $gen{'file'} = $_[0]; $gen{'num'} = scalar(@list_generics_cache); $gen{'cmt'} = $cmt; push(@list_generics_cache, \%gen); $cmt = undef; } else { $cmt = undef; } $lnum++; } close(GEN); } return @list_generics_cache; } # create_generic(&details, textfile, dbmfile, dbmtype) # Create a new generic mapping sub create_generic { &list_generics($_[1]); # force cache init local(%virt); # Write to the file local $lref = &read_file_lines($_[1]); $_[0]->{'line'} = scalar(@$lref); push(@$lref, &make_table_comment($_[0]->{'cmt'})); push(@$lref, "$_[0]->{'from'}\t$_[0]->{'to'}"); $_[0]->{'eline'} = scalar(@$lref)-1; &flush_file_lines($_[1]); # Add to DBM if (!&rebuild_map_cmd($_[1])) { if (!&rebuild_map_cmd($_[1])) { if ($_[3] eq "dbm") { dbmopen(%virt, $_[2], 0644); $virt{$_[0]->{'from'}} = $_[0]->{'to'}; dbmclose(%virt); } else { &run_makemap($_[1], $_[2], $_[3]); } } } # Add to cache $_[0]->{'num'} = scalar(@list_generics_cache); $_[0]->{'file'} = $_[1]; push(@list_generics_cache, $_[0]); } # delete_generic(&details, textfile, dbmfile, dbmtype) # Delete an existing generic mapping sub delete_generic { local(%virt); # Delete from file local $lref = &read_file_lines($_[1]); local $len = $_[0]->{'eline'} - $_[0]->{'line'} + 1; splice(@$lref, $_[0]->{'line'}, $len); &flush_file_lines($_[1]); # Delete from DBM if (!&rebuild_map_cmd($_[1])) { if ($_[3] eq "dbm") { dbmopen(%virt, $_[2], 0644); delete($virt{$_[0]->{'from'}}); dbmclose(%virt); } else { &run_makemap($_[1], $_[2], $_[3]); } } # Delete from cache local $idx = &indexof($_[0], @list_generics_cache); splice(@list_generics_cache, $idx, 1) if ($idx != -1); &renumber_list(\@list_generics_cache, $_[0], -$len); } # modify_generic(&old, &details, textfile, dbmfile, dbmtype) # Change an existing generic sub modify_generic { local(%virt); # Update in file local $lref = &read_file_lines($_[2]); local $oldlen = $_[0]->{'eline'} - $_[0]->{'line'} + 1; local @newlines; push(@newlines, &make_table_comment($_[1]->{'cmt'})); push(@newlines, "$_[1]->{'from'}\t$_[1]->{'to'}"); splice(@$lref, $_[0]->{'line'}, $oldlen, @newlines); &flush_file_lines($_[2]); # Update DBM if (!&rebuild_map_cmd($_[2])) { if ($_[4] eq "dbm") { dbmopen(%virt, $_[3], 0644); delete($virt{$_[0]->{'from'}}); $virt{$_[1]->{'from'}} = $_[1]->{'to'}; dbmclose(%virt); } else { &run_makemap($_[2], $_[3], $_[4]); } } # Update cache local $idx = &indexof($_[0], @list_generics_cache); $_[1]->{'line'} = $_[0]->{'line'}; $_[1]->{'eline'} = $_[1]->{'cmt'} ? $_[0]->{'line'}+1 : $_[0]->{'line'}; $list_generics_cache[$idx] = $_[1] if ($idx != -1); &renumber_list(\@list_generics_cache, $_[0], scalar(@newlines)-$oldlen); } sub generic_form([&details]) { local $g = $_[0]; print &ui_form_start("save_generic.cgi", "post"); if ($g) { print &ui_hidden("num", $g->{'num'}),"\n"; } else { print &ui_hidden("new", 1),"\n"; } print &ui_table_start($g ? $text{'gform_edit'} : $text{'gform_create'}, undef, 2); print &ui_table_row($text{'vform_cmt'}, &ui_textbox("cmt", $g->{'cmt'}, 50)); print &ui_table_row($text{'gform_from'}, &ui_textbox("from", $g->{'from'}, 30)); print &ui_table_row($text{'gform_to'}, &ui_textbox("to", $g->{'to'}, 30)); print &ui_table_end(); print &ui_form_end($_[0] ? [ [ "save", $text{'save'} ], [ "delete", $text{'delete'} ] ] : [ [ "create", $text{'create'} ] ]); } sub can_edit_generic { local ($g) = @_; return $access{'omode'} == 1 || $access{'omode'} == 2 && ($g->{'from'} =~ /$access{'oaddrs'}/ || $g->{'to'} =~ /$access{'oaddrs'}/); } 1;