Compare commits

..

335 Commits

Author SHA1 Message Date
Kienan Stewart ad1940201b Pass SED_SCRIPT to install.d scripts for templating action 2024-01-25 18:11:08 +01:00
Kienan Stewart cbfbb0c21a Use mktemp to get the filename for storing the templating script
Using a fixed string could allow for abuse by anyone who has access to /tmp.
One could place a symbolic link to any file to cause it to be overwritten
when alternc.install is run.
2024-01-25 18:10:34 +01:00
Km bd03632163 Merge pull request #495 from tobald/unittest_fixes
Provide some unit test fixes
2024-01-25 15:36:30 +01:00
Camille Lafitte 21e6353314 Change order php dependencies
* We must downgrade php version requirement
* Prevent a too recent php version since changes about php package versioning
2023-11-15 16:45:43 +01:00
Camille Lafitte 08f219779e Provide AlternC 3.5 RC 2
* As defined RC2 is released with all evolves provide by Koubmit team
* Compatible distribution should be stretch and buster
2023-11-09 16:13:24 +01:00
Camille Lafitte 9723969017 Fix #247
* Missing backport from koumbit/pu
2023-11-03 10:04:35 +01:00
Camille Lafitte 432f32d98a Fix about #337
* sql update was missing during backport action
* close #337
2023-11-02 18:48:35 +01:00
Nina e467c1c5f1 Update translations README 2023-09-29 10:56:20 +02:00
Nina 0b7ec2716e Add translation and update .po files 2023-09-29 10:56:11 +02:00
Nina fa8e4a71e0 Print error message returned by before_alternc_add_member hook 2023-09-29 10:55:59 +02:00
Nina 0b5725cb86 Fix french message on file creation 2023-09-29 10:55:53 +02:00
Kienan Stewart 1f932fd5ec Issue #526: Fix dovecot quota warnings 2023-09-29 10:55:34 +02:00
Nina 5eac4b375d Restrict password reset requests to username 2023-09-29 10:54:19 +02:00
Kienan Stewart b4062026d9 Allow the help_baseurl to be configured via interface variables 2023-09-29 10:54:01 +02:00
Nina b61c69f007 Remove duplicated DB update to disable sub-domain 2023-09-29 10:53:45 +02:00
Nina 4832594a1e Fix sub-domains activation/deactivation 2023-09-29 10:53:31 +02:00
Kienan Stewart 63b19754b5 Set alterncpanel as group owner of mysql configuration on install
Fixes #504
2023-09-29 10:53:21 +02:00
Kienan Stewart a5d8d6d943 Remove alternc-squirrelmail
* close #502
* close #464
* close #316
2023-09-29 10:51:40 +02:00
Nina c5c087155a Use ORDER BY when querying for things to do on a subdomain in m_dom
close #496
2023-09-29 10:44:48 +02:00
Nina 8dc23ccf06 Add hook before account creation 2023-09-29 10:43:41 +02:00
Kienan Stewart 8b64c144b2 Improve feedback to users when protecting folder with htaccess
The current behaviour of protecting a folder only modifies adds the
relevant .htaccess configuration lines if the file doesn't already
exist. In the case that it exists, no change is made and it appears to
"not work" for users.

This commit improves the feedbackup to users about what is happening,
and gives them the necessary information to modify their custom
.htaccess file with the appropriate configuration lines.
2023-09-29 10:43:31 +02:00
Kienan Stewart da50b32d61 Add variable to control if DNS is enabled for free domains 2023-09-29 10:43:10 +02:00
Kienan Stewart 08bb4af74d Remove dovecot quota entries when mailboxes are truly deleted
Without this, when a mailbox is deleted, the entry in dovecot_quota
persists and the user's see the that the mailbox continues to take
space on the information page.
2023-09-29 10:42:36 +02:00
Kienan Stewart 504e77034f Use a single query to fetch database size
The procedure can use a single query instead of a 1 + N queries, where
N is the number of tables on the server.

There is a minor side-effect in the result: databases with no tables
will not be listed in the output. Before, they would be output but
with an empty size value.

close #452
2023-09-28 09:18:44 +02:00
Nina f56809fd8a Append changes instead of overriding
close #428
2023-09-28 09:16:41 +02:00
Nina 7e05910237 Adding compatibility between url domain type and MX records
Fix indentation
cf #428
2023-09-28 09:15:52 +02:00
Kienan Stewart 40fed101e3 Fixes #441: Correct DMARC entry syntax 2023-09-28 09:08:15 +02:00
Kienan Stewart 6a3af13817 Filter db information searches to limit results to databases owned by current user 2023-09-28 09:05:43 +02:00
Kienan Stewart 20db4fceba Do not re-create sub_domaines unique key compte
New installations haven't had this unique key since 2014
(d9e24d9703) and only old
installations passing through 3.1.0~a would have had it
added.

Given that the unique key constraint was never dropped during
an AlternC upgrade, I think it should just be dropped here.

Re-creating is problematic when merged with other recent changes
because the length of both the key and column size are longer
than what MySQL/MariaDB support.
2023-09-28 09:04:31 +02:00
Km cd123f99f0
Merge pull request #437 from AlternC/415-upgrade_notice
Fixes #415: Add upgrade notice when installing 3.5 if upgrading from a version less than 3.3.12
2023-09-28 09:03:30 +02:00
Kienan Stewart 8cabbc7e50 Fix SQL syntax error in 3.5.0.2.sql upgrade
Refs #435
2023-09-28 09:01:02 +02:00
Kienan Stewart 451ed4c369 Add confirmation to preinstallation to warn about data loss
Refs #415
2023-09-28 09:00:44 +02:00
Kienan Stewart ec143dda02 Update upgrade notice to mention passing through 3.3.12
Refs #415 #416
2023-09-28 09:00:22 +02:00
Kienan Stewart 16ff2ead31 Fix warning when a user has many scheduled tasks to run
When a user has more than m_cron::MAX_SOCKETS actions to run when the
cron script is invoked, it uses a rolling window while running the
batch execution in CURL. The followin warning happens because the
url key isn't being used when getting the information out of the array.
2023-09-28 08:58:44 +02:00
Kienan Stewart c53eda9b9e Limit incrond scripts to watching a specific file
When they both watch the same directory, when a file is touched - eg,
/run/alternc/incron/inotify_do_action.lock both scripts are started
running in children of the top-level /usr/sbin/incrond script. When
those scripts finish, one or the other tends to start watching for all
the incron tables again (created more and more children each time).

Maybe it's a bug in incron.

Test:
 * Check number of running processes with ps faux | grep incron
 * Do an action, eg. chmod a folder in the web interace
 * Re-check the number of running processes, they should stay the same
 not increase
2023-09-28 08:58:27 +02:00
Kienan Stewart d3b1051543 Fix typo in chown command 2023-09-28 08:58:10 +02:00
Kienan Stewart 7957deccba Normalize action return value recorded in database
While working on #424, I discovered that actions that were run were unable
to record their run state into the database because the return code value
being passed to m_action::finish was a string and not an integer.

I added a shim to try to normalize the data passed onwards to m_action::finish,
although in the long term I think a proper cleanup of the cases should be done.
2023-09-28 08:55:54 +02:00
Kienan Stewart 6dc3b0d5a3 Watch a different directory for incrond actions by default
This should help with #424 by switching the watched directories to a
sub-directory of /run/alternc. There are many other scripts create and
handle files in the /run/alternc that were causing incrond to start up
quite often.
2023-09-28 08:55:34 +02:00
Kienan Stewart ef21e3e144 Fix tabs/spacing 2023-09-28 08:53:09 +02:00
Guillaume Est Une Palourde a675041874 Set the disabled flag so its not permanently pending when disabling domains 2023-09-28 08:52:41 +02:00
Guillaume Est Une Palourde 36563f7298 Added a return value so query that sets the result and resets the action to OK don't crash 2023-09-28 08:52:18 +02:00
Kienan Stewart e028b15e7b Hide matomo users who have access to a site but not made by AlternC
Users made in the Matomo interface and given an access to a site
that's in AlternC show up without this restriction. When that happens,
the user is no longer able to modify permissions for any of the Matomo
users from their AlternC account.
2023-09-28 08:49:07 +02:00
Kienan Stewart c95dd63c26 Remove trailing whitespace 2023-09-28 08:48:39 +02:00
Kienan Stewart 95efdafd3d Modify bind9 apparmor profile on installation
If the apparmor configuration file is there, an extra include will be added
and the install/app/usr.sbin.named-alternc file deployed to the apparmor local
configuration directory.

This allows bind to work with AlternC and apparmor enabled out of the box on
Debian Buster.
2023-09-27 18:10:09 +02:00
Kienan Stewart e3a59dd504 Remove trailing '.' from the return values of m_dom::whois()
The answer from dig is typically fully qualified with a trailing '.',
but the callers of whois() expect the nameservers without that trailing dot.
2023-09-27 18:09:56 +02:00
Guillaume Est Une Palourde fc8ce3d487 Made it possible to update a subdomain from vhost https to vhost http 2023-09-27 18:09:37 +02:00
Kienan Stewart c59bdce1f3 Add hook to allow adding bind tokens 2023-09-27 18:08:38 +02:00
Kienan Stewart ba199de626 Remove maxlength specific from e-mail password and confirmation fields
Fixes #382

The maxlength attribute will silently drop all characters after the
indicated limit. Users will not have feedback that their password
is (now) wrong.

There seems to a password policy that is actively checked, and may be
defined by the admin (default: 64 character limit).
2023-09-27 18:07:11 +02:00
Kienan Stewart bbdd2c2a64 Update package requirements for Debian Buster / PHP 7.3
Note: PHPMyAdmin is not available in buster, but is a requirement for AlternC,
so that package will need to be sourced elsewhere.
2023-09-27 18:03:57 +02:00
Kienan Stewart 6e7f751dc5 Mark DKIM records for deletion instead of deleting immediately
Refs #349
2023-09-27 17:55:08 +02:00
Kienan Stewart 9cfc9f359b Handle TXT records longer than 255 characters properly
Refs #349
2023-09-27 17:49:31 +02:00
Kienan Stewart 4687bff96d Bump default DKIM key length to 2048
This matches the Debian default for opendkim-genkey

Refs #337
2023-08-30 12:31:43 +02:00
Kienan Stewart 7523d6bebf Delete the correct private DKIM key during DKIM deletion
Fixes #338
2023-08-30 12:30:53 +02:00
Kienan Stewart a00f4b0d5f Check if domain is being deleted before adding DKIM key entry
Fixes #338
2023-08-30 12:30:23 +02:00
Km 72d0a8e47e
Merge pull request #342 from Koumbit/339_bind_conf_with_multiple_domains
Filter generated bind configuration by current domain
2023-08-30 12:27:44 +02:00
Km d02593e45e
Merge pull request #322 from Koumbit/341-order_enum_domain_mails
Order enumerated mails for a domain by ascending alphabetic order
2023-08-30 12:22:07 +02:00
Kienan Stewart 43d97f1c57 Order enumerated mails for a domain by ascending alphabetic order
Fixes #341

When applying LIMIT X, Y the ordering before the limit and offset do
not seem to be guaranteed. For example, if you have a large number of
e-mail addresses, and you page between the same e-mail address can appear twice.

The case where this was happening there were 2-3 mail boxes and ~90 aliases.

I'm not sure if this tied somehow to the database version used, but making the
desired ordering explicit ensures that all mails will eventually be shown and
shouldn't be shown twice.
2023-08-30 12:17:50 +02:00
Km c80814c4eb
Merge pull request #307 from Koumbit/102-password_recovery
Issue #102: Add password reset via one-time login link
2023-08-30 12:15:45 +02:00
Kienan Stewart afafb3e4f6 Fix script invocation when scanning a directory
Since the directory was not preprended to the filenames, no scripts
could ever be called.
2023-08-30 12:08:30 +02:00
Sébastien Grenier 52c27f4cbe make apache conf more compact, sometimes it gets large 2023-08-30 12:06:11 +02:00
Kienan Stewart b9b0f6181b Indicate unknown for the HTTPS state of a sub-domain only when the type has an https option 2023-08-30 10:01:56 +02:00
Kienan Stewart a9f6e757cd Match type more broadly for vhost when searching subdomains 2023-08-21 13:22:23 +02:00
Kienan Stewart 4e4a2bd5bc Disable vhost SSL overload types for use in the interface, and set has_https_option for vhost 2023-08-21 13:21:35 +02:00
Sébastien Grenier 5a555d238a creation of domaines_type to support ssl apache template 2023-08-21 13:15:44 +02:00
Sébastien Grenier fc112ebee3 clean old conf for apache 2.2 2023-08-21 13:13:08 +02:00
Kienan Stewart 220b38e142 Issue #277: Symlink vhost.conf to vhost-http.conf to ensure existing sub_domaine entries do not break 2023-08-16 10:02:49 +02:00
Camille Lafitte 9e2345bc2b Merge pull request #253 from Koumbit/247_escape-mysql-passwords-at-install
Fix #247: escape mysql passwords at install

Backport from merge set in stable-3.1
Merge remote-tracking branch 'remotes/koumbit/247_escape-mysql-passwords-at-install'
2023-08-15 10:23:13 +02:00
Kienan Stewart d78a5026ab use string templating instead of sed for creating/updating mysql configuration during install 2023-08-15 10:14:44 +02:00
Kienan Stewart 4c180272ed Escape mysql passwords in alternc install 2023-08-15 10:14:07 +02:00
Km 937339befb
Merge pull request #414 from Koumbit/413-bind_reloads_every_minute
Fix #413: Add return values for bind update domains hooks
2022-09-23 21:53:18 +02:00
Camille Lafitte 13a9ad5c3d Require apache2 to use its scripts
* we need a2enmod and apache2-mpm-itk is no more provide since at least stretch
2021-11-30 19:50:12 +01:00
Km 811dce6370
Merge pull request #466 from AlternC/issue-424
add exit 1 to inotify scripts, goes around the serious incrond bug in debian
2021-11-30 19:31:54 +01:00
Camille Lafitte 05c581d206 Revert "Merge pull request #492 from thifranc/master"
This reverts commit 1ba7a2f475, reversing
changes made to a85ccd043b.

* If we want only IP from remote then we must disable Lookup option
* Prevent problem with remote_ip (is not installed by default) and it's better to set proxy allowed and return correctly %h value
2021-11-30 19:24:03 +01:00
Thibault Francois 1ba7a2f475
Merge pull request #492 from thifranc/master
[fix] rather log %a [IP addr] than %h [HOSTNAME]
2021-10-26 09:41:04 +02:00
Thibault François 3946039c86 [fix] rather log %a [IP addr] than %h [HOSTNAME] 2021-10-26 09:39:25 +02:00
Thibault Francois a85ccd043b
Merge pull request #455 from fulax/patch-1
proftpd.conf: Default to modern TLS protocols
2021-10-26 09:17:41 +02:00
Benjamin Sonntag 6add7e4a40 add exit 1 to inotify scripts, which goes around the serious incrond bug in Debian Buster... 2021-06-16 17:29:19 +02:00
Kienan Stewart 2e1fbd374d Fixes #441: Correct DMARC entry syntax 2021-06-16 17:08:54 +02:00
Benjamin Sonntag 7e02128159 sudo-ldap or sudo dependency. Fixes #443 2021-06-16 17:01:32 +02:00
Benjamin Sonntag 0c36883195 fixes #444 removing comment on awstats sql dump 2021-06-16 16:57:33 +02:00
Gabriel Filion 6448440101
alternc.install: PHP version comparison is broken for buster (#461)
The current comparison can only work on debian stretch, that ships php
7.0, but debian buster has a more recent version and bullseye will have
an even more recent version.

This change was suggested by @ulvida (Daniel Viñar Ulriksen) on Github.
Thanks!

Closes: #459

Co-authored-by: Gabriel Filion <gabriel@koumbit.org>
2021-05-17 14:02:27 -04:00
Cyprien Nicolas 8965df7640
proftpd.conf: Default to modern TLS protocols
# Rationale

TLSv1.2 has been out for more than 10 years, and is now widely available. TLSv1.0 and TLSv1.1 are known to be unsufficient for a few years and have been officially deprecated by the IETF recently.

TLSv1.3 is starting to be widely available, however it had implementation bugs, such as https://github.com/proftpd/proftpd/issues/959. This is fixed upstream, but fixed versions are not available in Debian 10 yet.

# Changes

* ProFTPd now defaults to TLSv1.2
* Add a comment for suggesting other values like TLSv1.3, but with a comment about buggy versions
* Add a comment for downgrading to deprecated TLSv1 TLSv1.1
2021-03-31 11:06:48 +02:00
Km 9fe5164405
Merge pull request #447 from Koumbit/api_fix_bootstrap
API: instantiate m_message for logging
2021-03-09 10:34:33 +01:00
Gabriel Filion a4486fcf88 API: instantiate m_message for logging
Without this global instance, nothing works during the bootstrap: all
calls to log() crash because the instance does not exist.

closes: #419
2021-02-25 16:48:45 -05:00
Kienan Stewart 695ba518dd
Add confirmation to preinstallation to warn about data loss
Refs #415
2020-10-14 17:47:07 -04:00
Kienan Stewart 3acb44aa78
Update upgrade notice to mention passing through 3.3.12
Refs #415 #416
2020-10-14 16:35:44 -04:00
cam.lafit 3c83f33935 Fix #426 : Remove 2.2 authorization rule
* Use only 2.4 authorization rules
* Restore server-status protection with 2.4 rules only
* close #426
2020-08-18 12:38:31 +02:00
azerttyu 5d14fed7e4 Remove all alternc-ssl package
* finish #263
2020-08-18 12:36:12 +02:00
alban 78d3aeb60f [fix] There should be no <script> markup in tables headers #402 2020-07-02 22:54:26 +02:00
Kienan Stewart d373365d8f
Fix #413: Add return values for bind update domains hooks
hook_updatedomains_dns_{add,del} have their return values checked in
m_dom::update_domains() to set the dns_result column.

When no return value is specified, the value is actually NULL and doesn't
get mapped to an integer value that is expected by the dns_result column.

As a result, the query fails silently and the DNS_ACTION column is never
updated. This causes update_domains to retry the same modification on
every run.
2020-06-08 17:40:40 -04:00
Km b057544ba3
Merge pull request #372 from UdelaRInterior/fix-#326
Fix #326 - Minor detail in form
2020-01-28 18:39:31 +01:00
Km 8cea9323dd
Merge pull request #397 from Koumbit/bugs/374-document_upgrade_process
Add a notice in the README about upgrading from 3.3.11 to 3.5.x

Manual fix about ssl vhost support
2020-01-28 18:29:50 +01:00
Km 2fa12e7245
Merge pull request #398 from Koumbit/bugs/374-follow_debian_policy_on_replacing_packages_using_breaks
Use Breaks instead of Conflicts with alternc-ssl and alternc-admintools

@see https://www.debian.org/doc/debian-policy/ch-relationships.html#conflicting-binary-packages-conflicts
2020-01-28 18:28:34 +01:00
Kienan Stewart 047bed9d1f
Add a notice in the README about upgrading from 3.3.11 to 3.5.x 2019-12-17 16:12:26 -05:00
Kienan Stewart a6c0e8cf1b
Use Breaks instead of Conflicts with alternc-ssl and alternc-admintools
This follows the Debian policy on using Breaks when moving files from one
package to another.

@see https://www.debian.org/doc/debian-policy/ch-relationships.html#conflicting-binary-packages-conflicts

If apt/apt-get are used to install the new package, it will know to automatically
remove alternc-ssl (or alternc-admintools) instead of refusing to proceed at all.
2019-12-17 15:45:42 -05:00
kienanstewart bce334e75b
Merge pull request #379 from bleuchtang/fix-aws-doedit-rase
[fix] Ok is not allowed in level message
2019-10-03 17:25:38 -04:00
kienanstewart bc717c36d5
Merge branch 'master' into fix-aws-doedit-rase 2019-10-03 17:19:27 -04:00
Louis-Philippe Véronneau a10f67f299
fix minor typo 2019-09-09 15:39:50 -04:00
Émile f6046a2566 [fix] Ok is not allowed in level message 2019-08-09 08:38:40 +02:00
Km d1d410ed65
Allow certificates on autoconfig et autodiscover
Should be solve https://github.com/AlternC/alternc-certbot/issues/51
2019-07-23 20:56:56 +02:00
santiagomr 5ca85e7357 Fix #326 - Minor detail in form 2019-07-15 15:10:39 -03:00
Km 5e9fadd315
Merge pull request #329 from Koumbit/matomo_integration_fixes
Matomo integration fixes
2019-07-12 22:54:17 +02:00
Km 3744b0242a
Merge pull request #325 from tuxayo/patch-1
[fix] apache2 template: typo and rephrase comment
2019-07-12 21:37:06 +02:00
Km d770c70218
Merge branch 'master' into patch-1 2019-07-12 21:36:34 +02:00
Km db471afa79
Merge pull request #343 from Koumbit/336_domaine_deletions_stuck
Fix domain deletion query
2019-07-12 21:35:45 +02:00
Km 200f103adf
Merge pull request #347 from Koumbit/335_phpmyadmin_sso_broken
Fixes #335: Fix PHPMyAdmin Single-signon errors
2019-07-12 21:33:15 +02:00
Km ab73c9d6f9
Merge pull request #371 from Koumbit/370-import_cert_fails
Fixes #370: Fix insert query failure during import_cert
2019-07-12 21:27:03 +02:00
Kienan Stewart bb6d5c6863
Fix insert query failure during import_cert
The sslcsr is just set to an empty string so that the query works properly.
Without it, queries fail since sslcsr does not have a default value set.

Improved the detail of the messages logged during the failure of that query as well.
2019-07-12 14:46:36 -04:00
Kienan Stewart 53570e236a
Enter default db_server information before templating
Refs #335
2019-05-15 17:46:15 -04:00
Kienan Stewart caae003c60
Merge remote-tracking branch 'upstream/master' into 335_phpmyadmin_sso_broken 2019-05-14 12:19:39 -04:00
Kienan Stewart f3207ec2f1
Override owner and group for phpmyadmin lib files
Refs #335
2019-05-14 12:15:23 -04:00
Kienan Stewart 82c87c43e0
Increase blowfish secret length from 24 to 32
Refs #335
2019-05-14 12:15:00 -04:00
Kienan Stewart 70184caa3a
Return an error when attempting to connect to PHPMyAdmin with no DBs
Refs #335
2019-05-14 12:14:25 -04:00
Kienan Stewart f6860ed2be
Use pma_sso script to connect PhpMyAdmin from admin menu
Refs #335
2019-05-14 12:13:44 -04:00
Km 845a6b7f72
Merge pull request #340 from soul9/allowmultiview
Allow override of MultiViews option in .htaccess
Required by some service as NextCloud, Prestashop, ....
2019-05-14 07:53:41 +02:00
Kienan Stewart 39dba8188b
Fix domain deletion query
Fixes #336
2019-05-13 17:28:05 -04:00
Kienan Stewart 753c27a9cf
Fix typo in query to update domain type
Fixes #339
2019-05-13 17:12:05 -04:00
Kienan Stewart 1dbe646724
Filter generated bind configuration by current domain
Fixes #339
2019-05-13 16:40:27 -04:00
John Soros ade7a3f29f allow override of MultiViews option in .htaccess also for vhosts hosted using http and http+https 2019-05-13 19:54:25 +01:00
kienanstewart 1c3e9d7d65
Merge branch 'master' into patch-1 2019-05-10 19:05:12 -04:00
John Soros 7e0e74375f allow override of MultiViews option in .htaccess 2019-05-05 03:47:13 +02:00
Km 1ca9dcf406
Merge pull request #331 from Koumbit/328-fix_duplicate_dns_entries
Do not add bind entries for sub domaines marked for deletion
2019-04-24 07:20:05 +02:00
Kienan Stewart d299462439
Fix typo in table alias causing zone data queries to fail 2019-04-23 12:16:31 -04:00
Kienan Stewart e6c042331d
Do not add bind entries for sub domaines marked for deletion
Fixes #328
2019-04-12 16:38:07 -04:00
Kienan Stewart 0956906e98
Request unlimited number of a sites from matomo
By default, matomo applies a limit of 100 results to all API endpoints
that return an array. By passing filter_limit -1 all results can be
fetched in a single call for the site lists.

Ref: https://developer.matomo.org/api-reference/reporting-api
2019-04-05 13:48:03 -04:00
Kienan Stewart 5a62d13843
Store the proper hash of a matomo user's password 2019-04-05 13:47:53 -04:00
tuxayo 1fc21039f5
[fix] apache2 template: typo and rephrase comment
"on hosting" seemed a francism
2019-03-23 11:15:56 +01:00
Kienan Stewart 2a07927acc
Order enumerated mails for a domain by ascending alphabetic order
Fixes #341

When applying LIMIT X, Y the ordering before the limit and offset do
not seem to be guaranteed. For example, if you have a large number of
e-mail addresses, and you page between the same e-mail address can appear twice.

The case where this was happening there were 2-3 mail boxes and ~90 aliases.

I'm not sure if this tied somehow to the database version used, but making the
desired ordering explicit ensures that all mails will eventually be shown and
shouldn't be shown twice.
2019-03-15 15:44:36 -04:00
Kienan Stewart 3b46081292
Add password reset via one-time login link
Closes #102
2018-11-14 19:05:32 -05:00
alban 7a6d800e21 [fix] apache2.conf should Satisfy Any by default 2018-10-26 16:43:58 +02:00
Benjamin Sonntag f5933a181b Merge branch 'master' of github.com:AlternC/AlternC 2018-10-25 17:33:28 +02:00
Benjamin Sonntag 03e1786159 [fix] fix dmarc and spf not working 2018-10-25 17:33:21 +02:00
alban a3627a5f35 [fix] + fixperms should have a -h option and colors 2018-10-25 17:30:50 +02:00
alban 6a4ee2dc3b [fix] fixperms should have a -h option and colors 2018-10-25 17:27:16 +02:00
Benjamin Sonntag 654edab277 [fix]  simplify restart of services for apache2 2018-10-25 16:47:52 +02:00
Benjamin Sonntag fa1fae9af7 [fix] adding mysql-server or mariadb-server in dependencies 2018-10-25 16:47:39 +02:00
Benjamin Sonntag 74cbc88fc1 [fix] adding lsb-release dependency 2018-10-25 16:15:29 +02:00
Benjamin Sonntag f5d153c161 [fix] removing apache_logformat from tar 2018-10-25 16:14:45 +02:00
Benjamin Sonntag 5fb091660e [fix] error with dom lock in m_dom 2018-10-25 15:55:39 +02:00
Benjamin Sonntag 6ee74b5b03 [fix] adding variables.php for SPF and DKIM patch. 2018-10-25 15:55:21 +02:00
Benjamin Sonntag 15ec54d41c [fix] adding SYSTEMD detection in alternc.install to run opendkim properly 2018-10-25 15:50:26 +02:00
Benjamin Sonntag 7e8d5487e3 [fix] (for 3.5) adding has https option for autodiscover type 2018-10-25 15:38:06 +02:00
Kienan Stewart 4371bb59d5 Fix sed invocation to it runs in-place 2018-10-25 14:59:33 +02:00
Kienan Stewart 5a5fc801f8 Generate opendkim configuration in stretch when alternc.install is run
The default configuration in stretch doesn't work very well and
needs a couple of tweaks. This will generate the service files and
make sure opendkim is run as the opendkim user instead of root.

The alternc opendkim.conf template is updated so that the connection
can be made locally through a socket.
2018-10-25 14:59:33 +02:00
azerttyu 6ae5e22c31 Revert "adding sync-unix-accounts.php, synchronize unix accounts with AlternC ones. not enabled by default, not even installed yet"
* We revert this commit as it's provided by an AlternC plugin
* Report to https://github.com/alternc/alternc-nss to get more informations

Note : This reverts commit 240a7738fc.
2018-10-25 14:59:33 +02:00
Benjamin Sonntag c03648006f adding sync-unix-accounts.php, synchronize unix accounts with AlternC ones. not enabled by default, not even installed yet 2018-10-25 14:59:33 +02:00
Benjamin Sonntag 8c6dcadca0 [fix] fixing default_spf_value and default_dmarc_value NOT being initialized at runtime. Do it at alternc.instal time. 2018-10-25 14:58:18 +02:00
Benjamin Sonntag 27f907ee99 [fix] (for 3.5) delete ALSO autoconf / autodiscover in cascade when del_mx_domain 2018-10-23 19:27:54 +02:00
Benjamin Sonntag ad6bb372ea [fix] (for 3.5) delete DMARC and SPF and DKIM in cascade when del_mx_domain 2018-10-23 19:23:14 +02:00
Benjamin Sonntag b50f028e0e [fix] (for 3.5) delete DMARC and SPF and DKIM in cascade when del_mx_domain 2018-10-23 19:21:22 +02:00
Benjamin Sonntag ca0ed3dd40 [fix] (for 3.5) fixing longstanding bug when we didn't deleted (or deleted too many) vhosts files in /var/lib/alternc/apache-vhost/. 2018-10-23 19:02:15 +02:00
Benjamin Sonntag 4770c268d8 [fix] (for 3.5) fixing mysql.sql not setting has_https_option to TRUE on vhost 2018-10-23 18:47:25 +02:00
Benjamin Sonntag 70224f71d6 [fix] (for 3.5) fixing autodiscover template 2018-10-23 18:46:52 +02:00
Benjamin Sonntag 020eb932d6 [enh] adding php7.0 curl as a suggestion in debian package 2018-10-23 18:00:15 +02:00
Benjamin Sonntag c8d814ff68 [fix] slave_dns now broken since PR #295 2018-10-23 17:59:50 +02:00
Kienan Stewart 36fb528818 Deploy alternc.conf apache configuration 2018-10-23 17:19:44 +02:00
alban ad17a8715b [fix] Translations : fix translations 2018-10-23 16:37:51 +02:00
alban abcc48b77d [fix] Translations : remove some fuzzy translations and fix #298 2018-10-23 16:35:04 +02:00
Dominique Rousseau 1809cd67da add php config for sys_temp_dir in vhost templates (for PHP 5.4+) 2018-10-22 17:16:15 +02:00
Sébastien Grenier dc1708fecd [fix] typo? script not crash anymore with unexpected '&' 2018-10-22 17:15:21 +02:00
Kienan Stewart ad201fd4f2 Fix syntax error in bro_editor 2018-10-22 17:14:48 +02:00
Kienan Stewart 9052e6ac31 Deploy dovecot configuration for SSL 2018-10-22 17:14:28 +02:00
Kienan Stewart 54f5491dad Remove last vestiges of alternc-roundcube user 2018-10-22 17:05:13 +02:00
Kienan Stewart b2f7538371 Update roundcube vhost template to apache 2.4 2018-10-22 17:05:13 +02:00
Kienan Stewart d06f2877e1 Normalize spacing in roundcube vhost template 2018-10-22 17:05:13 +02:00
Benjamin Sonntag da7b178743 Merge branch 'master' of github.com:AlternC/AlternC 2018-10-22 17:00:45 +02:00
Benjamin Sonntag e67d628e41 [fix] integration of PR-290 : Fix unit test errors 2018-10-22 17:00:38 +02:00
Kienan Stewart 8af6b0d1f6 Fix condition check for replacing the chainfile statement in vhost templates 2018-10-22 16:54:31 +02:00
Benjamin Sonntag b5b8bc3028 Merge branch 'feature-updatedomains-php' 2018-10-22 16:52:45 +02:00
Alexandru fdda4e95e8 Fix bind allow-transfer on internal ipv6 2018-10-22 15:59:55 +02:00
Benjamin Sonntag b4aa7c3957 [fix] m_bind.php fixing reconfig instead of reload 2018-10-16 23:08:54 +02:00
Benjamin Sonntag 13564a9d73 [fix] m_lxc didn't work on new instead of ... 2018-10-16 23:04:46 +02:00
Benjamin Sonntag e118f31397 [fix] opendkim add and del are now idempotent 2018-07-18 11:02:50 +02:00
Benjamin Sonntag af3751742a [fix] autodiscover vhost had wrong filename 2018-07-18 10:56:35 +02:00
Benjamin Sonntag 1716d14b23 [cleanup] removing all unused files from former update_domains.sh 2018-07-17 18:50:18 +02:00
Benjamin Sonntag 0b0f08c739 removing unused code from m_dom, adding translation request for new domaines types 2018-07-17 18:47:49 +02:00
Benjamin Sonntag e09006b69e [fix] fix bad http/https/both switcher 2018-07-17 18:29:57 +02:00
Benjamin Sonntag 230d3ffdd8 [fix] missing global in apache conf 2018-07-17 18:25:14 +02:00
Benjamin Sonntag e06e2b3abd dkim domaine type is taking TXT as paramter 2018-07-17 18:21:25 +02:00
Benjamin Sonntag 5aeeac1c31 [fix] cancel button not canceling :/ 2018-07-17 18:20:06 +02:00
Benjamin Sonntag 1182cada25 [fix] now write ssl cert as ROOT, not as alterncpanel 2018-07-17 18:16:56 +02:00
Benjamin Sonntag 49e81b55bf [fix] add ::1 to slaveip.conf template ... it's 2018 people ! 2018-07-17 18:10:39 +02:00
Benjamin Sonntag 291812cead fixing dkim get entry function 2018-07-17 17:48:15 +02:00
Benjamin Sonntag e3d2b84418 [fix] reading multiline dkim key + fixing autodiscover zone having NULL name 2018-07-17 17:39:14 +02:00
Benjamin Sonntag 3bc65aed3f [fix] substitute variables AFTER mysql queries in bind zone file 2018-07-17 17:28:14 +02:00
Benjamin Sonntag 5c32a54edb [fix] French vs. English in template name :/ + fixing case issue making zone empty 2018-07-17 17:20:39 +02:00
Benjamin Sonntag e705f377b9 [fix] more bugs in update_domaines.php => not renaming vhosts_all.conf.new to vhosts_all.conf.new + ignoring deletion of DNS_ONLY sub_domaines entries 2018-07-17 17:11:15 +02:00
Benjamin Sonntag 1e4f2783d8 [fix] bug that make it impossible to launch upgrades properly : alternc_status is overwriten at postinst :/ 2018-07-17 17:03:28 +02:00
Benjamin Sonntag cdf07913da [fix] misc bugs in update_domaines.php, 2018-07-17 16:59:54 +02:00
Benjamin Sonntag dbfc59097b [fix] misc bugs in update_domaines.php, 2018-07-17 16:07:48 +02:00
Benjamin Sonntag 7445439654 [enh] proper name for autodiscover + fix global in m_dom 2018-07-17 15:50:29 +02:00
Benjamin Sonntag 36976cbf24 [fix] domislocked should be a global variable (...) since we may need it at php shutdown time :/ 2018-07-17 15:22:19 +02:00
Benjamin Sonntag 7f94d1f03f [fix] dpkg-statoverride: erreur: une dérogation pour « /var/spool/postfix/var/run/saslauthd » existe déjà 2018-07-17 15:21:55 +02:00
Benjamin Sonntag 5725cd89ce [fix] no need for www-data to be in ssl-cert group 2018-07-17 15:11:31 +02:00
Benjamin Sonntag f50f453707 [fix] missing global + proper shebang on upgrade script 2018-07-17 15:10:08 +02:00
Benjamin Sonntag b6a2f74326 [fix] fix misc bugs at alternc.install time 2018-07-17 15:02:32 +02:00
Benjamin Sonntag f898407d3d [enh] adding update_domains.php in cron, fixing panel to NOT include autodiscover from now 2018-07-08 22:19:58 +02:00
Benjamin Sonntag 9b7332f354 [enh] adding DKIM and AUTODISCOVER management in SUB_DOMAINES, finishing BIND update_domains.php 2018-07-08 22:03:27 +02:00
Benjamin Sonntag ed7aaa3151 [enh] first version of class-and-hooks-based update_domains.php, includes ssl certficate mechanism 2018-07-08 13:01:35 +02:00
Benjamin Sonntag a194cd80d0 [fix] vhost http template missing SSLENGINE and CERT instructions in 443 Vhost 2018-07-07 13:13:28 +02:00
Benjamin Sonntag db916ace66 [fix] a bit of cleanup in m_dom AND the rewrite of WHOIS() function to be a 'smart' DIG NS instead 2018-07-04 18:39:27 +02:00
Benjamin Sonntag 2ad744ecc7 [fix] replacing /var/run by /run everywhere we can (not everywhere: postfix chroot or old compatibility is maintained 2018-07-04 17:42:42 +02:00
Benjamin Sonntag cdd0bfd0fa [fix] not throwing exception with db_mysql 2018-07-04 17:24:06 +02:00
Benjamin Sonntag a5bf37786c [fix] adding dependency to php-curl, fixing _sha512cr issues 2018-07-04 17:19:20 +02:00
Benjamin Sonntag a1ed5a4ad6 [fix] 3.4.10 and 3.4.11 where NOT executed during upgrades (sort -n :/ ) so we migrate those sql updates to 3.5.0.1.sql 2018-07-04 17:17:22 +02:00
Benjamin Sonntag dbb41924bd [enh] add a debug() method to messages, and set this instead of LOG() for most api calls => only api calls that CHANGES something are now calling log() (which logs) and others are calling debug() which logs nothing by default. A variable allow for debugging 2018-06-28 00:27:10 +02:00
Benjamin Sonntag bcde8a9ef2 [enh] adding translations from Transifex + update of PO files 2018-06-28 00:03:18 +02:00
Benjamin Sonntag f166518bb2 [enh] tell the user that (s)he can upload compressed files 2018-06-27 21:12:11 +02:00
JLuc 5b555f5281 language, not tongue ! 2018-06-27 20:28:33 +02:00
Benjamin Sonntag 2695db49a2 [enh] preparing for the future : let's allow us to add \n into DNS entries, preparing for ... IPv6 \o/ 2018-06-25 16:48:12 +02:00
Benjamin Sonntag 5a8fd5db20 [fix] allow /lib /etc /usr in chrooted ftp accounts 2018-06-25 12:02:52 +02:00
Benjamin Sonntag c1688e2e07 fixing help2man 2018-06-24 19:44:38 +02:00
Benjamin Sonntag 144ff1e27a [enh] removing latest lintian exceptions, no Error, no Warnings ! 2018-06-24 19:40:22 +02:00
Benjamin Sonntag 7945034004 [fix] name of variable + fix of upgrade script 2018-06-24 19:05:59 +02:00
Benjamin Sonntag 5489387103 [fix] misc bugs in m_ssl (incorrect table and certificate name) + restart instead of reload if necessary in src/reload-certs 2018-06-24 19:02:11 +02:00
Benjamin Sonntag 649b2c55d6 [fix] removing the concept of shared cert in m_ssl 2018-06-24 18:38:47 +02:00
Benjamin Sonntag 9e4021141a [fix] fixing apache conf to use new cert mode + fixing bug in ssl : number of bound variables does not match number of tokens 2018-06-24 18:34:42 +02:00
Benjamin Sonntag b7235d33f0 [enh] not using apache.pem anymore: using /etc/ssl/*/alternc-*.pem|key 2018-06-24 18:23:39 +02:00
Benjamin Sonntag 5f27d551d8 [fix] enable ssl module for Apache 2018-06-24 18:17:10 +02:00
Benjamin Sonntag 2d60cf7c0b updating links & source code url 2018-06-24 17:39:40 +02:00
Benjamin Sonntag d6c7d15028 [enh] simplify piwik class to do less things when unused 2018-06-24 17:24:36 +02:00
Benjamin Sonntag a4c488ae70 [enh] debian compliance work, almost no warning in lintian 2018-06-24 17:18:01 +02:00
Benjamin Sonntag bb3bd0b14c [enh] ssl : reload-certs for sysadmin + misc ssl fixes (including set_variables) 2018-06-24 17:04:55 +02:00
Benjamin Sonntag 178823a9f0 [merge] feature-ssl in master 2018-06-24 16:52:24 +02:00
Benjamin Sonntag 5f72126420 [fix] ftp human name error 2018-06-24 16:50:52 +02:00
Benjamin Sonntag 3137bc5aa0 [fix] allow 50MB upload in the panel (file manager, mostly) 2018-06-24 16:50:32 +02:00
Benjamin Sonntag e2237a2ed9 [fix] roundcube to core javascript disable conf apache2 2018-06-24 16:50:08 +02:00
Benjamin Sonntag f1026cb26e [enh] removing jquery ui (now a package) + fixing head.php, simpler unless you use bro_editor 2018-06-24 16:49:43 +02:00
Benjamin Sonntag b467ce23ca [fix] packaging: debhelper 9 dependency (jessie) 2018-06-24 16:23:48 +02:00
Benjamin Sonntag e83a526c57 [fix] mysql.sql fix : do not create certificates table if already exists 2018-06-24 16:10:08 +02:00
Benjamin Sonntag 6fd89455fb [fix] alternc.install misc fixes: mysql_query heredoc + phpmyadmin test 2018-06-24 16:09:28 +02:00
Benjamin Sonntag 404ba2803b [enh] testing JS packages dependencies instead of including our own copy 2018-06-24 16:09:11 +02:00
Benjamin Sonntag 2d7601e4e0 [enh] now using compat=10 in debian packaging + depending on libjs-prettify => removing last lintian Error \o/ 2018-06-24 15:44:12 +02:00
Benjamin Sonntag 5a3b9c7a13 [fix] next ssl step: we start to use /etc/ssl/(certs|private)/alternc-<servicename>.(pem|key) as location for system service certificates, also, trying to use PdoException in case of PDO error (better for bug tracking) 2018-06-24 15:43:23 +02:00
Benjamin Sonntag cb13dae853 [fix] roundcube wrong config file 2018-06-24 15:20:23 +02:00
Benjamin Sonntag 2354c1142d not depending on install.d anymore 2018-06-23 17:14:56 +02:00
Benjamin Sonntag d13d093c09 [fix] misc ssl code issues 2018-06-23 17:13:36 +02:00
Benjamin Sonntag f9d2c783e5 [fix] alternc-ssl + dom global missing 2018-06-23 17:11:57 +02:00
Benjamin Sonntag 8f550ce69e Merge branch 'feature-ssl' of github.com:AlternC/AlternC into feature-ssl 2018-06-23 17:04:37 +02:00
Benjamin Sonntag 63f6c33f83 [fix] most lintian Errors \o/ 2018-06-23 17:04:32 +02:00
cam.lafit 1db447bcec [fix] Provider a return carrier on template
* As we use cat to generate vhosts_all we must provide all return
carrier
2018-06-23 17:01:49 +02:00
cam.lafit 1bc8b59da9 Now apache.pem is always set
* We can configure apache2, postfix, proftpd, dovevot with tls features
by default
2018-06-23 17:01:49 +02:00
Benjamin Sonntag 719e1539b0 [fix] renaming update_certs, fixing deprecated usage of 2018-06-23 16:54:54 +02:00
Benjamin Sonntag 758f48ddc4 [fix] E: alternc-slave: php-script-but-no-php-cli-dep 2018-06-23 16:48:09 +02:00
Benjamin Sonntag bafee6372a [fix] roundcube and squirrelmail are specific packages 2018-06-23 16:47:15 +02:00
Benjamin Sonntag a2e22a8d1f [fix] we check FIRST for certificate already existing in ssl->import_check() 2018-06-23 16:37:11 +02:00
Benjamin Sonntag 152551a8bb [fix] removing unused deduplicate in ssl 2018-06-23 16:31:11 +02:00
Benjamin Sonntag ac841451bc [enh] ssl class should work now, including system certificates and auto renewal of vhosts etc. 2018-06-23 16:28:50 +02:00
Benjamin Sonntag 8232c1a318 [enh] moving hosting_vhost-ssl.sh to be launched systematically by update_domains.sh, and renamed to update_cert.sh 2018-06-23 14:59:38 +02:00
Benjamin Sonntag 9587ff1bfc [enh] new generation of the m_ssl class: less code, no shared or ssl_action, simpler searchBestCert(), no duplicates in /var/lib/alternc/ssl/private/ etc. [NEED TESTS] 2018-06-23 13:05:10 +02:00
Benjamin Sonntag 8dc5c20fa5 [fix] remove now unused ico for menu icons (in css) 2018-06-23 11:49:49 +02:00
Benjamin Sonntag ade50df5aa Merge branch 'feature-ssl' of github.com:AlternC/AlternC into feature-ssl 2018-06-23 11:46:49 +02:00
Benjamin Sonntag 0f59614372 [enh] fontawesome css everywhere (almost) 2018-06-23 11:46:45 +02:00
Benjamin Sonntag 2f00c01b48 [fix] Call to a member function rowCount() on boolean 2018-06-23 11:10:29 +02:00
Benjamin Sonntag 73376121e5 [enh] finishing the HTTPS preference code 2018-06-23 11:03:57 +02:00
cam.lafit ecfa105982 Provide a snakeoil certificate
* By default AlternC will use a snakeoil certificate
* Is set as default as 0 id to failback when no certificate provider can
set a certificate
2018-06-23 11:00:53 +02:00
Benjamin Sonntag 2ed4cbad21 [enh] finishing the HTTPS preference code 2018-06-23 10:35:08 +02:00
Km b7be237b6d
Merge pull request #266 from Koumbit/265-compatibilite-apache2.4
pour permettre la compatibilite avec apache2.4
2018-06-23 08:20:55 +02:00
Benjamin Sonntag 6007a3dea2 adding provider to certificates + fixing cert search function 2018-06-22 22:49:43 +02:00
Benjamin Sonntag 3dbb4d68ac function to get the list of valid certs for a fqdn 2018-06-22 19:38:05 +02:00
Benjamin Sonntag 272cee3f5f Merge branch 'feature-ssl' of github.com:AlternC/AlternC into feature-ssl 2018-06-22 19:04:08 +02:00
Benjamin Sonntag 997795b935 starting to implement ssl best cert finder 2018-06-22 19:04:03 +02:00
Benjamin Sonntag ddbc6e2ff4 [fix] fixing variable issues 2018-06-22 19:03:48 +02:00
Sébastien Grenier bf57ec3dc1 pour permettre la compatibilite avec apache2.4 2018-06-22 13:57:04 -03:00
azerttyu 29c200da8e [enh] Provide an insertion date
* When a certificate is added , we store his creation date
2018-06-22 18:37:08 +02:00
Benjamin Sonntag 1a0614dcf3 starting to show HTTPS preferences 2018-06-22 18:27:15 +02:00
Benjamin Sonntag 46e21285d6 [fix] check that an imported ssl certificate doesn't already exist 2018-06-22 18:26:56 +02:00
azerttyu 4ee6ae395e [enh] Update template files
* When a dommain type has an ssl support, template have as
suffixhttps,http, both* On each case we support each port with(out)
redirect*By default we support acme-challenge protocol
2018-06-22 17:59:39 +02:00
Benjamin Sonntag 5079aa2e03 [enh] change the name of some variables 2018-06-22 17:37:04 +02:00
azerttyu 2ca592aa8a [enh] Migrate https status on each sub domains
* Rename type vhost
* Clean duplicate vhost
* Apply certificate id on each sub domain
2018-06-22 17:35:51 +02:00
Benjamin Sonntag 57c8dc5942 [enh] css using fontawesome 2018-06-22 17:13:43 +02:00
Benjamin Sonntag 09bb693480 [enh] adding HTTP/HTTPS/BOTH UI in the subdomain editor. 2018-06-22 16:31:23 +02:00
Benjamin Sonntag 6ba6a40d05 [fix] +x right for install.d/* 2018-06-22 15:29:52 +02:00
azerttyu 81f440d2b4 [fix] On install process we must execture ssl feature 2018-06-22 15:21:07 +02:00
Benjamin Sonntag f7c05c5e23 adding HTTPS status in subdomain view 2018-06-22 15:06:08 +02:00
alban 7a69abd660 [fix] alternc.install should have a --no-fixperms option + help + usage 2018-06-22 15:04:21 +02:00
Benjamin Sonntag be49630527 [enh] replace old kde3 icons as png/img... by the free fontawesome css files 2018-06-22 12:43:07 +02:00
Benjamin Sonntag 7ec1d068c8 [enh] ssl start of implementation 2018-06-22 11:24:03 +02:00
Benjamin Sonntag 6e9c3c3c63 Merge remote-tracking branch 'origin/pr-255'
Fix #254: Creating default domains for new members fails #255
2018-06-22 08:32:48 +02:00
Benjamin Sonntag 0f66e2f073 [enh] misc styling fixes for bootstrap 2018-06-21 19:33:12 +02:00
Benjamin Sonntag fe09524ff3 [enh] misc styling fixes for bootstrap 2018-06-21 19:15:18 +02:00
Benjamin Sonntag 6762429c68 replacing allow from all by Require all granted 2018-06-21 18:29:49 +02:00
Benjamin Sonntag 88f6d04f89 [fix] options now force + or - everywhere 2018-06-21 18:28:10 +02:00
Benjamin Sonntag 791e3ddb38 [fix] adding .debhelper to ignored files 2018-06-21 18:26:15 +02:00
Benjamin Sonntag d1cba34548 [fix] removing alternc-ssl package altogether 2018-06-21 18:20:01 +02:00
Benjamin Sonntag 976296c833 removing temporary diffs from squeeze 2018-06-21 18:17:29 +02:00
Benjamin Sonntag eae85dcbe7 removing patches for jessie / wheezy 2018-06-21 18:02:16 +02:00
Benjamin Sonntag 19871eb355 [fix] README adapted to the removal of patches for jessie / wheezy 2018-06-21 18:02:02 +02:00
Kienan Stewart e8f764de2d cherry picking, update of phpunit for jessie 2018-06-21 17:59:16 +02:00
Kienan Stewart 2a0b0c1f99 Add php5.6 and php7.0 versions for tests 2018-06-21 17:58:26 +02:00
Kienan Stewart 3556fbb2d4 cherry picking, update of phpunit for jessie 2018-06-21 17:58:24 +02:00
Kienan Stewart 76764e735f fixing travix.yml 2018-06-21 17:56:38 +02:00
Kienan Stewart 0be79f9b54 Use phpunit from composer download 2018-06-21 17:54:20 +02:00
Kienan Stewart 5ba055cf7f Cherrypick apache2 configuration for jessie/stretch
Sourced from ea3371ae34
2018-06-21 17:52:54 +02:00
Benjamin Sonntag aff4ed989c [fix] merge SSL and Bootstrap styling 2018-06-21 17:51:16 +02:00
Benjamin Sonntag 42441d29a2 Merge remote-tracking branch 'origin/pr-226'
Fix #225: call fetchAll on PDO statement #226
2018-06-21 17:46:09 +02:00
Benjamin Sonntag f48618d0e5 Merge remote-tracking branch 'origin/pr-235'
Fix #227: Use stronger password hashes #235
2018-06-21 17:44:53 +02:00
Benjamin Sonntag c6d04fd3b6 Merge remote-tracking branch 'origin/pr-236'
Roundcube owner fix (one frome stable-3.0 and one new) #236
2018-06-21 17:44:48 +02:00
Benjamin Sonntag f114a66d91 Merge remote-tracking branch 'origin/pr-239'
Fix #222: Replace mysql_* with mysqli_* #239
2018-06-21 17:44:32 +02:00
Benjamin Sonntag 8166ceb58f Merge remote-tracking branch 'origin/pr-244'
Fix #245: Files default to unwritable when permissions are changed in… #246
2018-06-21 17:44:17 +02:00
Benjamin Sonntag 0217985655 Merge remote-tracking branch 'origin/pr-246'
https://github.com/AlternC/AlternC/pull/246
Fix #245: Files default to unwritable when permissions are changed in… #246
2018-06-21 17:43:31 +02:00
Benjamin Sonntag 0c6e56d146 Merge remote-tracking branch 'origin/pr-252' 2018-06-21 17:41:55 +02:00
Benjamin Sonntag c88db87db3 Merge branch 'stable-3.1' 2018-06-21 17:36:34 +02:00
Kienan Stewart e2edab6364 Add trailing slash to VHOST_DIR when building vhosts_all.conf
If VHOST_DIR is a symbolic link to another folder, no files will be found,
resulting in an empty vhosts_all.conf. A trailing slash ensures find will
properly resolve the symbolic link before searching.
2018-06-21 17:35:13 +02:00
Benjamin Sonntag a7382b45a3 adding changelog for 3.5.0rc1 2018-06-21 17:34:47 +02:00
Benjamin Sonntag f930bde36d adding all patched from squeeze to wheezy then jessie. 2018-06-21 17:29:42 +02:00
cam.lafit 3525041839 No more need to package alternc-ssl
* Say good bye, thank a lot
2018-06-21 17:26:27 +02:00
cam.lafit c8d94d2a50 SSL massive backport
* Now we integrate all alternc-feature in native alternc
* Files are backported as waiting by alternc
* Some files was renammed or moved to follow alternc installation
process
2018-06-21 17:26:27 +02:00
cam.lafit bd53247eaf Backport SSL functionality in alternc
* First step stop alternc-ssl support
2018-06-21 17:26:27 +02:00
Jonathan Demmerlé 4d8d2c1c39
some fixes
@media (max-width: is ugly, but well, better than nothing.
2018-06-21 10:25:41 +02:00
Kienan Stewart 5a4f924088 Properly escape passwords in template sed script
Previous changes were made to the wrong place
2018-06-14 13:25:57 -04:00
Kienan Stewart ce80e3cdad Fix #254: Creating default domains for new members fails
A typo caused the check to see if domain delegation was allowed to
always fail.
2018-06-14 10:50:28 -04:00
Kienan Stewart 1b08ae2638 use string templating instead of sed for creating/updating mysql configuration during install 2018-06-13 18:02:10 -04:00
Kienan Stewart eca8d7ccdf Escape mysql passwords in alternc install 2018-06-13 18:01:43 -04:00
Kienan Stewart 9c1e7cccd0 Get sub_domain_id and status from get instead of post in dom_substatus
The submission is done through links with get parameters (see dom_edit.php)
2018-06-12 21:11:14 -04:00
Kienan Stewart 83d03b8ee7 Fix #245: Files default to unwritable when permissions are changed in the file browser 2018-06-08 15:10:26 -04:00
Kienan Stewart f39e72d58a Fixes #243: Fix typo in domain_name variable 2018-06-08 14:32:01 -04:00
Kienan Stewart 1c910f4448 Remove trailing spaces / tabs from quota_init 2018-05-17 17:58:38 -04:00
Kienan Stewart be8edc140d Include connection parameter when calling mysqli_query 2018-05-17 17:57:32 -04:00
Kienan Stewart 29a213cc26 Change function calls from mysql_* to mysqli_*
Sourced from: https://raw.githubusercontent.com/soul9/AlternC/470ed9cd1535461c7a809ce6c8d55919b76f14a0/stretch/quota_init.diff

@see https://github.com/AlternC/AlternC/issues/222
2018-05-17 15:15:56 -04:00
Dominique Rousseau 41278cc72a correct wrong owner for roundcube temp_dir /var/lib/roundcube/temp 2018-05-14 10:03:08 +02:00
Steven Mondji-Lerider 0385a933f7 Fixes : #1480
(cherry picked from commit af974c7b83)
2018-05-14 09:59:36 +02:00
Kienan Stewart 88f3457191 Use sha512 crypt to store ftp password hashes 2018-04-16 22:46:05 -04:00
Kienan Stewart 56cbd2f8b4 Move the sha512 crypt hash into it's own function 2018-04-16 22:35:41 -04:00
Kienan Stewart 294397e10f Merge branch 'issue-227-dovecot_password' into issue-227-password_hashes 2018-04-16 22:27:19 -04:00
Kienan Stewart 00c1d55406 Generate SHA512-CRYPT hashes for e-mail addresses 2018-04-16 21:02:45 -04:00
Kienan Stewart a609984d39 Fix invocations of password_hash() 2018-04-15 22:00:16 -04:00
Kienan Stewart 971e38778f Update stored password hash on user login.
If an md5 hash is stored, a new hash will be calculated and stored.
2018-04-15 19:03:57 -04:00
Kienan Stewart b5382bb13b Replace _password_verify with password_verify
PHP's password_verify function does know how to recognize md5 hashes: a custom
check is not necessary.
2018-04-15 19:02:32 -04:00
Kienan Stewart 6084650181 Use PHP's built-in password hashing and verification for user accounts 2018-04-15 18:26:41 -04:00
Kienan Stewart bbb3e7c0e3 Lengthen member's pass column to 255 characters 2018-04-15 18:25:58 -04:00
Kienan Stewart d6d9be4c6a Fix variable syntax in Makefile 2018-04-15 10:08:37 -04:00
Kienan Stewart 3647151c67 Fix #225: call fetchAll on PDO statement 2018-03-09 12:59:26 -05:00
Jonathan Demmerlé a70a3735d0
Merge pull request #1 from Welmoc/Welmoc-patch-css
New style.css based on bootstrap
2018-01-16 14:17:51 +01:00
Jonathan Demmerlé 9f57ebd4cf
New style.css based on bootstrap
All the style.css file replaced to look like bootstrap without any dependances.
2017-12-29 18:56:27 +01:00
365 changed files with 38779 additions and 59840 deletions

7
.gitignore vendored
View File

@ -18,6 +18,8 @@ debian/alternc-slave
debian/alternc-squirrelmail
debian/alternc-upnp
debian/files
debian/.debhelper
debian/debhelper-build-stamp
lang/de_DE.po
lang/es_ES.po
lang/fr_FR.po
@ -39,3 +41,8 @@ bureau/locales/fr_FR/LC_MESSAGES/messages.po~
bureau/locales/it_IT/LC_MESSAGES/messages.po~
bureau/locales/nl_NL/LC_MESSAGES/messages.po~
bureau/locales/pt_BR/LC_MESSAGES/messages.po~
.tx/alternc.alternc
# Added for running tests; currently not used otherwise
composer.lock
composer.json
vendor/

View File

@ -2,14 +2,16 @@ language: php
services:
- mysql
php:
- 7.1
- 7.0
- 5.6
- 5.5
- 5.4
- 5.3
script: phpunit --coverage-clover=coverage.clover
script:
- grep --exclude-dir=../.git/ --exclude-dir=../vendor/ -l -r -e '#!/bin/[bash|sh]' ../ | uniq | xargs shellcheck
- ../vendor/bin/phpcs --ignore=../vendor/ ../
- ../vendor/bin/phpunit --coverage-clover=coverage.clover
before_script:
# pear.phpunit.de offline, and travis have phpunit
# - pear channel-discover pear.phpunit.de
# - pear install phpunit/DbUnit
- composer require 'phpunit/dbunit=<3.0.2' squizlabs/php_codesniffer
- mysql -e 'create database alternc_test DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;'
- cd phpunit
after_script:

View File

@ -1,6 +1,7 @@
********************************************************************************************
* 2013: We are trying to make AlternC enter Debian repositories and follow Debian rules :) *
* 2018: Still trying :) *
********************************************************************************************
The main issues we know as of today are:
@ -14,38 +15,7 @@ Questions:
- some binaries / scripts don't have a man page
- we are packaging some JS library ourself :
W: alternc: embedded-javascript-library var/alternc/bureau/admin/js/prototype.js
W: alternc: embedded-javascript-library var/alternc/bureau/admin/js/jquery.min.js
- W: alternc: virtual-package-depends-without-real-package-depends depends: mailx
- We should NOT ask for "do you REALLY want to install AlternC blabla" since we don't launch alternc.install at postinst anymore.
This question MAY be asked to the user when launching alternc installer manually (on an interactive shell)
Easy to fix NOW :
E: alternc: dir-or-file-in-var-run var/run/alternc/
W: alternc: binary-without-manpage usr/bin/alternc_get_path
W: alternc: binary-without-manpage usr/bin/alternc_reload
W: alternc: maintainer-script-ignores-errors prerm
W: alternc-awstats: possible-debconf-note-abuse preinst:13 alternc-awstats/errorinstall
E: alternc: duplicate-conffile etc/cron.d/alternc
E: alternc: duplicate-conffile etc/logrotate.d/alternc
W: alternc: malformed-prompt-in-templates alternc/slaves
********************************************************************************
Should be fixed, need more test:
- the control panel is located in /var/alternc/bureau => move it to /usr/share/alternc/panel
- the html data are in /var/alternc/html/[a-z0-9] => move them to /var/www/alternc/[a-z0-9]
- the mail data are in /var/alternc/mail/[a-z0-9] => move them to /var/mail/alternc/[a-z0-9]
- the bind zones, apache vhosts and other dynamic data are in /var/alternc/(bind|apache-vhost)/ => move them to /var/lib/alternc/(samename)
- /var/alternc/db => not used anymore, drop
- /var/alternc/mla => not used anymore, drop
- there is /var/alternc/cgi-bin/ is forgotten and now we use the standard /usr/lib/cgi-bin/
- /var/alternc/exec.usr/ => usr/lib/alternc/safe_mode_exec_dir
- /var/alternc/sessions/ disapear for the standard PHP sessions dir.
********************************************************************************
FIXED:
@ -89,3 +59,33 @@ W: alternc: malformed-question-in-templates alternc/use_private_ip
W: alternc: command-with-path-in-maintainer-script config:205 /usr/bin/awk
- we are packaging some JS library ourself :
W: alternc: embedded-javascript-library var/alternc/bureau/admin/js/prototype.js
W: alternc: embedded-javascript-library var/alternc/bureau/admin/js/jquery.min.js
- W: alternc: virtual-package-depends-without-real-package-depends depends: mailx
- We should NOT ask for "do you REALLY want to install AlternC blabla" since we don't launch alternc.install at postinst anymore.
This question MAY be asked to the user when launching alternc installer manually (on an interactive shell)
Easy to fix NOW :
E: alternc: dir-or-file-in-var-run var/run/alternc/
W: alternc: binary-without-manpage usr/bin/alternc_get_path
W: alternc: binary-without-manpage usr/bin/alternc_reload
W: alternc: maintainer-script-ignores-errors prerm
W: alternc-awstats: possible-debconf-note-abuse preinst:13 alternc-awstats/errorinstall
E: alternc: duplicate-conffile etc/cron.d/alternc
E: alternc: duplicate-conffile etc/logrotate.d/alternc
W: alternc: malformed-prompt-in-templates alternc/slaves
- the control panel is located in /var/alternc/bureau => move it to /usr/share/alternc/panel
- the html data are in /var/alternc/html/[a-z0-9] => move them to /var/www/alternc/[a-z0-9]
- the mail data are in /var/alternc/mail/[a-z0-9] => move them to /var/mail/alternc/[a-z0-9]
- the bind zones, apache vhosts and other dynamic data are in /var/alternc/(bind|apache-vhost)/ => move them to /var/lib/alternc/(samename)
- /var/alternc/db => not used anymore, drop
- /var/alternc/mla => not used anymore, drop
- there is /var/alternc/cgi-bin/ is forgotten and now we use the standard /usr/lib/cgi-bin/
- /var/alternc/exec.usr/ => usr/lib/alternc/safe_mode_exec_dir
- /var/alternc/sessions/ disapear for the standard PHP sessions dir.

View File

@ -21,7 +21,7 @@
# Purpose of file: Global Makefile
# ----------------------------------------------------------------------
MAJOR=$(shell sed -ne 's/^[^(]*(\([^)]*\)).*/\1/;1p' debian/changelog)
VERSION=$MAJOR
VERSION=$(MAJOR)
export VERSION
build:
@ -34,7 +34,7 @@ install:
install-common:
# Shell Scripts
test -d $(DESTDIR)/usr/lib/alternc || mkdir -p $(DESTDIR)/usr/lib/alternc
cp src/* $(DESTDIR)/usr/lib/alternc/
cp -r src/* $(DESTDIR)/usr/lib/alternc/
chown root:root $(DESTDIR)/usr/lib/alternc/*
chmod 755 $(DESTDIR)/usr/lib/alternc/*
@ -48,7 +48,7 @@ install-common:
# Installer and upgrade scripts
test -d $(DESTDIR)/usr/share/alternc/install || mkdir -p $(DESTDIR)/usr/share/alternc/install
cp -r install/* $(DESTDIR)/usr/share/alternc/install
chmod a+x $(DESTDIR)/usr/share/alternc/install/alternc.install $(DESTDIR)/usr/share/alternc/install/dopo.sh $(DESTDIR)/usr/share/alternc/install/mysql.sh $(DESTDIR)/usr/share/alternc/install/newone.php $(DESTDIR)/usr/share/alternc/install/reset_root.php $(DESTDIR)/usr/share/alternc/install/upgrade_check.sh $(DESTDIR)/usr/share/alternc/install/upgrades/*.php $(DESTDIR)/usr/share/alternc/install/upgrades/*.sh
chmod a+x $(DESTDIR)/usr/share/alternc/install/alternc.install $(DESTDIR)/usr/share/alternc/install/dopo.sh $(DESTDIR)/usr/share/alternc/install/mysql.sh $(DESTDIR)/usr/share/alternc/install/newone.php $(DESTDIR)/usr/share/alternc/install/reset_root.php $(DESTDIR)/usr/share/alternc/install/upgrade_check.sh $(DESTDIR)/usr/share/alternc/install/upgrades/*.php $(DESTDIR)/usr/share/alternc/install/upgrades/*.sh $(DESTDIR)/usr/share/alternc/install/variables.php
# install AlternC itself:
@ -56,7 +56,8 @@ install-alternc: install-common
# Web Panel
test -d $(DESTDIR)/usr/share/alternc/panel || mkdir $(DESTDIR)/usr/share/alternc/panel
cp -r bureau/* $(DESTDIR)/usr/share/alternc/panel
sed -i -e "s/@@REPLACED_DURING_BUILD@@/${MAJOR}/" $(DESTDIR)/usr/share/alternc/panel/class/local.php
sed -i -e "s/@@REPLACED_DURING_BUILD@@/${MAJOR}/" $(DESTDIR)/usr/share/alternc/panel/class/local.php $(DESTDIR)/usr/share/alternc/install/alternc.install
help2man -n "Hosting control panel software" --no-discard-stderr --section 8 $(DESTDIR)/usr/share/alternc/install/alternc.install -o $(DESTDIR)/usr/share/man/man8/alternc.install.8
chown -R root:root $(DESTDIR)/usr/share/alternc/panel
chmod -R 644 $(DESTDIR)/usr/share/alternc/panel
chmod -R a+X $(DESTDIR)/usr/share/alternc/panel
@ -69,6 +70,15 @@ install-alternc: install-common
# Man pages
install -o root -g root -m 644 man/*.8 $(DESTDIR)/usr/share/man/man8/
#SSL functions
ln -s hosting_vhost-ssl.sh $(DESTDIR)/etc/alternc/functions_hosting/hosting_panel-ssl.sh
ln -s hosting_vhost-ssl.sh $(DESTDIR)/etc/alternc/functions_hosting/hosting_vhost-mixssl.sh
ln -s hosting_vhost-ssl.sh $(DESTDIR)/etc/alternc/functions_hosting/hosting_roundcube-ssl.sh
ln -s hosting_vhost-ssl.sh $(DESTDIR)/etc/alternc/functions_hosting/hosting_squirrelmail-ssl.sh
ln -s hosting_vhost-ssl.sh $(DESTDIR)/etc/alternc/functions_hosting/hosting_php52-ssl.sh
ln -s hosting_vhost-ssl.sh $(DESTDIR)/etc/alternc/functions_hosting/hosting_php52-mixssl.sh
ln -s hosting_vhost-ssl.sh $(DESTDIR)/etc/alternc/functions_hosting/hosting_url-ssl.sh
install-slave: install-common
# Man pages
pod2man --center "" --date "" --release "AlternC" --section=8 man/alternc.install.pod >$(DESTDIR)/usr/share/man/man8/alternc.install.8

View File

@ -8,7 +8,7 @@ This software consist of an automatic install and configuration system, a web co
Technically, AlternC is based on Debian GNU/Linux distribution and it depends on other software such as Apache, Postfix, Dovecot, Mailman (...). It also contains an API documentation so that users can easily customize their web desktop.
This project native tongue is French, and the code is commented in English. The packages are available at least in French and English, German and Spanish interfaces are usually available too.
This project native language is French, and the code is commented in English. The packages are available at least in French and English, German and Spanish interfaces are usually available too.
## Installation
@ -17,32 +17,57 @@ This project native tongue is French, and the code is commented in English. The
[Pour installer AlternC, merci de suivre la documentation d'installation](https://alternc.com/Install-fr)
### Upgrading from AlternC 3.[1,2,3].11 or earlier
The recommended process for upgrading is to upgrade to 3.3.12 before upgrading to 3.5. If
you choose to upgrade directly to 3.5 from an earlier version, please read this information
as there is a risk of a loss of data.
AlternC >= 3.5 removes integrates alternc-ssl and alternc-admintools in the the core AlternC package.
As a result, both alternc-ssl and alternc-admintools will be removed during installation.
When alternc-ssl is removed, it will mark many of the sub domain types suffixed with '-ssl'
and '-mixssl' for deletion.
To safely upgrade between these versions:
* Backup your AlternC database
* Stop the cron service: ```/etc/init.d/cron stop```
* Install alternc (>= 3.5)
* Run the following queries against the alternc database (here, it's called "alternc"): ```
mysql alternc -e 'update sub_domaines set web_action = "OK" where type like "%-mixssl";'
mysql alternc -e 'update sub_domaines set web_action = "OK" where type like "%-ssl";'
```
* Run alternc.install
* Start the cron service again: ```/etc/init.d/cron start```
## Developper information
* This software is built around a Debian package for Squeeze whose packaging instructions are located in [debian/](debian/) folder
* This software is built around a Debian package for Stretch whose packaging instructions are located in [debian/](debian/) folder (this package can be installed on Jessie safely too)
* To **build the packages**, clone this repository in a Debian machine and use `debuild` or `dpkg-buildpackage` from source code root.
* If you want to **build it for Wheezy**, clone the source and patch it for Wheezy using [wheezy/patch.sh](wheezy/patch.sh) script. You'll be able to use dpkg-buildpackage to build the Wheezy version.
* If you want to **build it for Jessie**, clone the source and patch it for Wheezy using [wheezy/patch.sh](wheezy/patch.sh) script then patch it for Jessie using [jessie/patch.sh](jessie/patch.sh) script. You'll be able to use dpkg-buildpackage to build the Jessie version.
* The web control panel pages written in PHP are located in [bureau/admin](bureau/admin) and the associated PHP classes doing the stuff are in [bureau/class](bureau/class).
## Nightly build
We have 3 nightly build repositories:
We have 1 nightly build repositories:
* stretch - [stable 3.5](http://stable-3-5.nightly.alternc.org/)
and 3 nightly from former Debian releases (now unmaintained)
* jessie - [stable 3.3](http://stable-3-3.nightly.alternc.org/)
* wheezy - [stable 3.2](http://stable-3-2.nightly.alternc.org/)
* squeeze - [stable 3.1](http://stable-3-1.nightly.alternc.org/)
To use one of them, create a file named `/etc/apt/sources.list.d/alternc-nightly-stable-3.3.list` (for debian jessie) as follow :
To use one of them, create a file named `/etc/apt/sources.list.d/alternc-nightly-stable-3.5.list` (for debian Jessie or Stretch) as follow :
```
deb http://stable-3-3.nightly.alternc.org/ latest/
deb http://stable-3-5.nightly.alternc.org/ latest/
```
The repository and the packages are signed by the pgp key of AlternC nightly build user :
```
wget http://stable-3-3.nightly.alternc.org/nightly.key -O - | apt-key add -
wget http://stable-3-5.nightly.alternc.org/nightly.key -O - | apt-key add -
```
## License

View File

@ -13,7 +13,7 @@ if(isset($L_ALTERNC_LOGS_ARCHIVE))
define('ALTERNC_LOGS', "$L_ALTERNC_LOGS");
define('ALTERNC_PANEL', "/usr/share/alternc/panel");
define('ALTERNC_LOCALES', ALTERNC_PANEL."/locales");
define('ALTERNC_LOCK_JOBS', '/var/run/alternc/jobs-lock');
define('ALTERNC_LOCK_JOBS', '/run/alternc/jobs-lock');
define('ALTERNC_LOCK_PANEL', '/var/lib/alternc/panel/nologin.lock');
/* PHPLIB inclusions : */
@ -72,6 +72,7 @@ $mem=new m_mem();
$err=new m_err();
$authip=new m_authip();
$hooks=new m_hooks();
$msg = new m_messages();
for($i=0;$i<count($classes);$i++) {

View File

@ -6,8 +6,7 @@ CREATE TABLE IF NOT EXISTS `aws` (
`public` INT(1) unsigned NOT NULL DEFAULT '1',
`hostaliases` TEXT,
PRIMARY KEY (`id`)
) Engine=MyISAM COMMENT='Statistiques web par Awstats';
);
CREATE TABLE IF NOT EXISTS `aws_users` (
@ -16,7 +15,7 @@ CREATE TABLE IF NOT EXISTS `aws_users` (
`pass` varchar(38) NOT NULL,
PRIMARY KEY (`login`),
INDEX (`uid`)
) COMMENT = 'Comptes pouvant accéder aux stats awstats.';
);
CREATE TABLE IF NOT EXISTS `aws_access` (
@ -24,5 +23,5 @@ CREATE TABLE IF NOT EXISTS `aws_access` (
`uid` int(10) unsigned NOT NULL,
`login` varchar(128) NOT NULL,
INDEX (`id`)
) COMMENT = 'Qui peut accéder aux stats awstats ';
);

View File

@ -44,7 +44,7 @@ if (!$id) {
include("aws_edit.php");
exit();
} else {
$msg->raise('Ok', "aws", _("The Statistics has been successfully changed"));
$msg->raise('INFO', "aws", _("The Statistics has been successfully changed"));
include("aws_list.php");
exit();
}

View File

@ -20,7 +20,7 @@
/**
* Manages default domain types,
* they are the subdomains automatically installed on a domain when you host it.
* AlternC's modules such as squirrelmail or roundcube may create new ones, you'll see them here
* AlternC's modules such as roundcube may create new ones, you'll see them here
*
* @copyright AlternC-Team 2000-2017 https://alternc.com/
*/

View File

@ -181,7 +181,7 @@ if (!is_array($accountList) || empty($accountList)) {
while (list($key, $val) = each($accountList)) {
$col = 3 - $col;
?>
<tr class="lst<?php echo $col; ?>">
<tr class="lst">
<?php if ($val["su"]) { ?>
<td id="user_<?php echo $val["uid"]; ?>">&nbsp;</td>
@ -199,7 +199,7 @@ if (!is_array($accountList) || empty($accountList)) {
<td><div class="<?php echo 'exp' . $admin->renew_get_status($val['uid']) ?>"><?php ehe($admin->renew_get_expiry($val['uid'])); ?></div></td>
</tr>
<tr class="lst<?php echo $col; ?>" >
<tr class="lst" >
<td/><td ><i><?php echo _("DB:") . ' ' . $val['db_server_name'] ?></i></td>
<td colspan="8" >
<div id="admlistbtn">

View File

@ -59,7 +59,7 @@ foreach( variables_list() as $vars) { ?>
<tr class="lst">
<td><?php ehe($vars['name']); ?></td>
<td><input type="text" name="<?php ehe($vars['name']); ?>" value="<?php ehe($vars['value']); ?>" /></td>
<td><input type="text" class="int" name="<?php ehe($vars['name']); ?>" value="<?php ehe($vars['value']); ?>" style="width: 200px"/></td>
<td><?php ehe($vars['comment']); ?></td>
</tr>
<?php } ?>

View File

@ -75,6 +75,8 @@ if (isset($save) && $save) {
}
}
$addhead['css'][]='<link rel="stylesheet" href="/javascript/prettify/prettify.css" type="text/css" />';
$addhead['js'][]='<script src="/javascript/prettify/prettify.js" type="text/javascript"></script>';
include_once("head.php");
?>
@ -126,17 +128,18 @@ echo "<pre class='prettyprint' id='file_content_view' >$content</pre>";
<script type="text/javascript">
$(function() {
$( "#tabsfile" ).tabs();
prettyPrint();
$( "#tabsfile" ).tabs();
<?php if ($editing) { ?>
$( "#tabsfile-edit" ).tabs( "option", "active", 1 );
$( "#tabsfile-edit" ).tabs( "option", "active", 1 );
<?php } ?>
});
$('#tabsfile').on('tabsbeforeactivate', function(event, ui){
var b = $('#file_content_editor').val();
$('#file_content_view').text( b );
$('#file_content_view').removeClass('prettyprinted');
PR.prettyPrint();
var b = $('#file_content_editor').val();
$('#file_content_view').text( b );
$('#file_content_view').removeClass('prettyprinted');
PR.prettyPrint();
});
</script>

View File

@ -212,7 +212,7 @@ echo $msg->msg_html_all();
<br />
<input type="submit" id="sendthisfile" class="ina" value="<?php __("Send this file"); ?>" />
<?php echo sprintf(_("Warning: max size: %s"),$bro->getMaxAllowedUploadSize() ); ?>
</form>
<?php __("(If you upload a compressed file, <br />you will be able to uncompress it after.)"); ?></form>
</td>
<td style="width: 20px">&nbsp;</td>
@ -345,11 +345,7 @@ function actmoveto_not_empty() {
echo "<table width=\"100%\" id='tab_files_w_details' class=\"tlist\" style=\"border: 0px\" cellpadding=\"2\" cellspacing=\"0\"><thead>";
?>
<tr><th>
<script type="text/javascript">
<!--
document.write("<input type=\"checkbox\" id=\"checkall\" value=\"1\" class=\"inb\" onclick=\"CheckAll();\" />");
// -->
</script>
<input type="checkbox" id="checkall" value="1" class="inb" onclick="CheckAll();" />
</th>
<?php if ($p["showicons"]) { ?>
<th style="text-align: center;"><?php if (!empty($R)) { echo $bro->PathList($R,"bro_main.php",true); }?></th>

View File

@ -91,7 +91,7 @@ $maxlevel=0;
<title>Recherche d'un dossier</title>
<link rel="stylesheet" href="styles/style.css" type="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script src="js/jquery.min_embedded.js" type="text/javascript"></script>
<script src="/javascript/jquery/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
/* Fonction appellée lors du lancement d'un popup Fichier : */
function popupfile() {

View File

@ -51,7 +51,7 @@ echo $msg->msg_html_all();
<form method="post" action="dom_doadd.php" id="main">
<?php csrf_get(); ?>
<p>
<label for="newdomain"><b><?php __("Domain name"); ?> :</b></label> <span class="int" id="newdomwww">www.</span><input type="text" class="int" id="newdomain" name="newdomain" value="<?php ehe($newdomain); ?>" size="32" maxlength="255" /> <a class="inb configure" href="dom_import.php"><?php __("Advanced import"); ?></a>
<label for="newdomain"><b><?php __("Domain name"); ?> :</b></label> <span class="int" id="newdomwww">www.</span><input type="text" class="int" id="newdomain" name="newdomain" value="<?php ehe($newdomain); ?>" size="32" maxlength="255" /> <a class="inb settings" href="dom_import.php"><?php __("Advanced import"); ?></a>
</p>
<p>
<input type="checkbox" name="dns" class="inc" value="1" id="yndns"<?php cbox($dns=="1"); ?>/>&nbsp;<label for="yndns"><?php __("host my dns here"); ?></label>

View File

@ -50,7 +50,7 @@ $dom->unlock();
<form action="dom_subdoedit.php" method="post" name="main" id="main">
<?php csrf_get(); ?>
<table border="0">
<table class="dom-edit-table">
<tr>
<td>
<input type="hidden" name="domain" value="<?php ehe($domain) ?>" />
@ -64,6 +64,7 @@ $dom->unlock();
}
?></td><td>
<input type="text" class="int" name="sub" style="text-align:right" value="<?php ehe($sub); ?>" size="22" id="sub" /><span class="int" id="newsubname">.<?php ehe($domain); ?></span></td>
<td></td>
</tr>
<?php
$first_advanced=true;
@ -81,10 +82,8 @@ $dom->unlock();
$lst_advanced[]=$dt['name'];
if ($first_advanced) {
$first_advanced=false;
echo "<tr><td colspan=\"2\" class=\"advdom\"></td></tr>";
echo "<tr id='domtype_show' onClick=\"domtype_advanced_show();\"><td colspan='2'><a href=\"javascript:domtype_advanced_show();\"><b>+ "; __("Show advanced options"); echo "</b></a></td></tr>";
echo "<tr id='domtype_hide' onClick=\"domtype_advanced_hide();\" style='display:none'><td colspan='2'><a href=\"javascript:domtype_advanced_hide();\"><b>- "; __("Hide advanced options"); echo "</b></a></td></tr>";
echo "<tr><td colspan=\"2\" class=\"advdom\"></td></tr>";
}
}
?>
@ -126,17 +125,31 @@ $dom->unlock();
break;
} // switch ?>
</td>
<td>
<?php if ($dt['has_https_option']) { ?>
<select class="inl" name="https_<?php ehe($dt['name']); ?>" id="https_<?php ehe($dt['name']); ?>">
<option value="http"<?php selected((strtoupper($type)==strtoupper($dt['name']) && $sd["https"]=="http") || false); ?>><?php __("HTTP Only (redirect HTTPS to HTTP)"); ?></option>
<option value="https"<?php selected((strtoupper($type)==strtoupper($dt['name']) && $sd["https"]=="https") || true); ?>><?php __("HTTPS Only (redirect HTTP to HTTPS)"); ?></option>
<option value="both"<?php selected((strtoupper($type)==strtoupper($dt['name']) && $sd["https"]=="both") || false); ?>><?php __("Both HTTP and HTTPS hosted at the same place"); ?></option>
</select>
<?php } ?>
</td>
</tr>
<?php } // foreach ?>
<tr class="trbtn">
<td colspan="2"><input type="submit" class="inb ok" name="add" onclick='return check_type_selected();' value="<?php
<td colspan="2"><button type="submit" class="inb ok" name="add" onclick='return check_type_selected();'><?php
if ($isedit) {
__("Edit this subdomain");
} else {
__("Add this subdomain");
}
?>" /></td>
?></button>
<?php if ($isedit) { ?>
<button class="inb cancel" type="button" name="cancel" onclick="document.location = 'dom_edit.php?domain=<?php echo $domain; ?>'"><?php __("Cancel"); ?></button>
<?php } ?>
</td>
</tr>
</table>
</form>

View File

@ -41,8 +41,11 @@ if (!$r=$dom->get_domain_all($domain)) {
}
$dom->unlock();
if (isset($_GET["msg"])) {
$msg->raise("INFO","dom",$_GET["msg"]);
}
?>
<h3><img src="images/dom.png" alt="" />&nbsp;<?php printf(_("Manage %s"),$domain); ?></h3>
<h3><i class="fas fa-globe-africa"></i> <?php printf(_("Manage %s"),$domain); ?></h3>
<?php
echo $msg->msg_html_all();
?>
@ -95,7 +98,7 @@ if ($r['dns_action']=='UPDATE') {?>
<?php
/*
// Link hidden as long as the del_domain_cancel function is not complete
<a href="dom_dodel.php?domain=<?php echo urlencode($domain);?>&del_cancel=true"><?php __("Clic here to cancel deletion");?></a>
<a href="dom_dodel.php?domain=<?php echo urlencode($domain);?>&del_cancel=true"><?php __("Click here to cancel deletion");?></a>
*/
?>
<?php
@ -139,10 +142,11 @@ if ( ! empty($problems) ) {
?>
<table class="tlist" id="dom_edit_table">
<thead>
<tr><th colspan="2"> </th><th><?php __("Subdomain"); ?></th><th><?php __("Type");?></th><th><?php __("Status")?></th><th></th></tr>
<tr><th colspan="2"> </th><th><?php __("Subdomain"); ?></th><th><?php __("HTTPS"); ?></th><th><?php __("Type");?></th><th><?php __("Status")?></th><th></th></tr>
</thead>
<?php
$hasadvanced=false;
// this loop expect the table to be sorted with advanced entries AFTER normal ones :
for($i=0;$i<$r["nsub"];$i++) {
if ($r["sub"][$i]["advanced"] && !$hasadvanced) {
$hasadvanced=true;
@ -152,7 +156,7 @@ if ($r["sub"][$i]["advanced"] && !$hasadvanced) {
<p class="alert alert-warning"><?php __("The following entries are advanced ones, edit them at your own risks."); ?></p>
<table class="tlist" id="dom_edit_table">
<thead>
<tr><th colspan="2"> </th><th><?php __("Subdomain"); ?></th><th><?php __("Type");?></th><th><?php __("Status")?></th><th></th></tr>
<tr><th colspan="2"> </th><th><?php __("Subdomain"); ?></th><th><?php __("HTTPS"); ?></th><th><?php __("Type");?></th><th><?php __("Status")?></th><th></th></tr>
</thead>
<?php
@ -179,7 +183,32 @@ $disabled_class=in_array(strtoupper($r['sub'][$i]['enable']),array('DISABLED','D
</td>
<?php } // end IF ==DELETE ?>
<td><div class="retour-auto <?php echo $disabled_class; ?>"><a href="http://<?php echo $r["sub"][$i]["fqdn"] ?>" target="_blank"><?php echo $r["sub"][$i]["fqdn"]; ?></a></div></td>
<td><div class="retour-auto <?php echo $disabled_class; ?>"><?php if ($r['sub'][$i]['type_desc']) { __($r['sub'][$i]['type_desc']); } else { echo __("ERROR, please check your server setup"); } ?>
<td>
<?php
if (!$r["sub"][$i]["only_dns"]) {
switch ($r["sub"][$i]["https"]) {
case "http":
__("HTTP only");
break;
case "https":
__("HTTPS only");
break;
case "both":
__("HTTP and HTTPS");
break;
default:
if ($r['sub'][$i]['has_https_option']) {
__("Unknown");
}
else {
__('Not applicable');
}
break;
}
}
?>
</td>
<td><div class="retour-auto <?php echo $disabled_class; ?>"><?php if ($r['sub'][$i]['type_desc']) { __($r['sub'][$i]['type_desc']); } else { echo __("ERROR, please check your server setup"); } ?>
<?php
//if ($r["sub"][$i]['type'] === 'VHOST') {
if ( @$dt[$r["sub"][$i]['type']]['target'] === 'DIRECTORY') {
@ -234,7 +263,15 @@ foreach ($problems as $pr => $lm) { // $problems can be empty but can't be null/
echo "<script type='text/javascript'>$(\"tr[data-fqdn='".$pr."']\").addClass('alert-danger-tr');</script>\n";
}
?>
</div>
<p>&nbsp;</p>
<hr />
<p>
<a class="inb ssl" href="dom_sslpref.php?domain=<?php ehe($domain); ?>"><?php __("HTTPS Preferences for this domain");?></a>
</p>
</div> <!-- tabsdom-editsub -->
<div id="tabsdom-addsub">
@ -339,6 +376,12 @@ if (!$r['noerase']) {
</div>
<?php
} ?>
<div id="tabsdom-ssl">
<div id="sslpref">
</div>
</div> <!-- tabsdom-ssl -->
</div> <!-- tabsdom -->
<script type="text/javascript">
@ -359,6 +402,14 @@ function update_dns_content(){
}
}
function update_ssl_content(){
$.ajax({
url: "dom_ssl.inc.php?domain=<?php echo urlencode($domain)?>",
}).done(function( html ) {
$("#sslpref").html(html);
});
}
function force_update_dns_content(){
get_dns_content = 1;
$("#divdumpdns").html('In progress...');

View File

@ -0,0 +1,126 @@
<?php
/*
----------------------------------------------------------------------
LICENSE
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License (GPL)
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
To read the license please visit http://www.gnu.org/copyleft/gpl.html
----------------------------------------------------------------------
*/
/**
* Form to get/set HTTPS preferences
*
* @copyright AlternC-Team 2000-2017 https://alternc.com/
*/
require_once("../class/config.php");
$fields = array (
"domain" => array ("request", "string", (empty($domain)?"":$domain) ),
);
getFields($fields);
$dom->lock();
if (!$r=$dom->get_domain_all($domain)) {
$dom->unlock();
require_once("head.php");
echo $msg->msg_html_all();
include('foot.php');
die();
}
$dom->unlock();
$haserror=false;
if (count($_POST)) {
$dom->lock();
// get fields from the posted form:
foreach($r["sub"] as $subdomain) {
if (isset($_POST["ssl_".$subdomain["id"]])) {
if (!$dom->set_subdomain_ssl_provider($subdomain["id"],$_POST["ssl_".$subdomain["id"]])) {
$haserror=true;
}
// errors will be shown below
}
}
$dom->unlock();
if ($haserror) {
require_once("head.php");
echo $msg->msg_html_all();
} else {
header("Location: dom_edit.php?domain=".eue($domain,false)."&msg=".eue(_("Your HTTPS preferences have been set"),false));
exit();
}
} // post ?
require_once("head.php");
?>
<h3><i class="fas fa-globe-africa"></i> <?php printf(_("Manage %s HTTPS preferences"),ehe($domain,false)); ?></h3>
<p class="alert alert-info"><?php __("These parameters are for advanced user who want to choose specific certificate provider. <br />Usually you'd want to click 'edit' in front of a subdomain to choose between HTTP and HTTPS by default."); ?></p>
<p>
<?php __("For each subdomain that may be available through HTTPS, please choose which certificate provider you want to use."); ?>
<br />
<?php __("please note that you only see a provider if you have a valid certificate for this domain"); ?>
</p>
<form action="dom_sslpref.php" method="post" name="main" id="main">
<input type="hidden" name="domain" value="<?php ehe($domain); ?>" />
<?php csrf_get(); ?>
<table class="tlist" id="dom_edit_ssl">
<thead>
<tr><th><?php __("Subdomain"); ?></th><th><?php __("HTTPS Preference"); ?></th></tr>
</thead>
<?php
for($i=0;$i<$r["nsub"];$i++) {
if (!$r["sub"][$i]["only_dns"]) {
continue;
}
$fqdn=$r["sub"][$i]["name"].(($r["sub"][$i]["name"])?".":"").$r["name"];
$certs = $ssl->get_valid_certs($fqdn);
echo "<tr>";
echo "<td>".$fqdn."</td>";
echo "<td><select name=\"ssl_".$r["sub"][$i]["id"]."\" id=\"ssl_".$r["sub"][$i]["id"]."\">";
echo "<option value=\"\">"._("-- no HTTPS certificate provider preference --")."</option>";
$providers=array();
foreach($certs as $cert) {
if ($cert["provider"] && $cert["provider"]!="snakeoil" && !isset($providers[$cert["provider"]])) {
$providers[$cert["provider"]]=1;
echo "<option value=\"".$cert["provider"]."\"";
selected($r["sub"][$i]["provider"]==$cert["provider"]);
echo ">"._("Provider:")." ".$cert["provider"]."</option>";
}
}
echo "</select>";
echo "</td>";
echo "</tr>";
}
?>
<tr><td></td>
<td>
<p>
<button type="submit" class="inb ok" name="go"><?php __("Set my HTTPS certificate preferences"); ?></button>
<button type="button" class="inb cancel" name="cancel" onclick="document.location='dom_edit.php?domain=<?php eue($domain); ?>';"><?php __("Cancel"); ?></button>
</p>
</td></tr>
</table>
</form>
<?php
require_once("foot.php");
?>

View File

@ -35,11 +35,14 @@ getFields($fields);
// here we get a dynamic-named value
$dynamicvar="t_$type";
$httpsvar="https_$type";
$fields = array (
"$dynamicvar" => array ("post", "string", ""),
"$httpsvar" => array ("post", "string", ""),
);
getFields($fields);
$value=$$dynamicvar;
$https=$$httpsvar;
// The dynamic value is now in $value
$dom->lock();
@ -52,7 +55,7 @@ if ( (!isset($isinvited) || !$isinvited) && $dt[strtolower($type)]["enable"] !=
}
if (empty($sub_domain_id)) $sub_domain_id=null;
$r=$dom->set_sub_domain($domain,$sub,$type,$value, $sub_domain_id);
$r=$dom->set_sub_domain($domain, $sub, $type, $value, $sub_domain_id, $https);
$dom->unlock();

View File

@ -26,8 +26,8 @@
require_once("../class/config.php");
$fields = array (
"sub_id" => array ("post", "integer", ""),
"status" => array ("post", "string", ""),
"sub_id" => array ("get", "integer", ""),
"status" => array ("get", "string", ""),
);
getFields($fields);

View File

@ -104,7 +104,7 @@ if ( $val['enabled']) {
<?php __("Here are some configuration information you will need to configure your FTP application.");?>
<ul>
<li><?php echo '<b>'._("Server:").'</b> '.$ftp->srv_name; ?></li>
<li><?php echo '<b>'._("Server:").'</b> '.$ftp->srv_proftpd; ?></li>
<li><?php echo '<b>'._("FTP mode for data transfer:").'</b> '._("passive");?></li>
<li><?php echo '<b>'._("User/password:").'</b> '._("the one you specified when you created the account. You can edit them in the panel.");?></li>
</ul>

View File

@ -25,42 +25,10 @@
if (!isset($charset) || ! $charset) $charset="UTF-8";
@header("Content-Type: text/html; charset=$charset");
require_once("html-head.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $lang; ?>" lang="<?php echo $lang; ?>">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $charset; ?>" />
<title><?php __("AlternC Control Panel"); ?></title>
<link rel="stylesheet" href="js/jquery_ui/css/redmond/jquery-ui-1.10.3.custom.min.css" type="text/css" />
<link rel="stylesheet" href="styles/style.css" type="text/css" />
<?php
if (file_exists("styles/style-custom.css") ) {
echo '<link rel="stylesheet" href="styles/style-custom.css" type="text/css" />';
}
$favicon = variable_get('favicon', 'favicon.ico' ,'You can specify a favicon, for example /images/my_logo.ico', array('desc'=>'URL','type'=>'string'));
?>
<link rel="stylesheet" href="styles/style-empty.css" type="text/css" title="Default - Desktop TNG"/>
<link rel="alternate stylesheet" href="styles/style-bluedesktop10.css" type="text/css" title="Blue Desktop 1.0" />
<link rel="alternate stylesheet" href="styles/style-hw.css" type="text/css" title="Halloween" />
<link rel="Shortcut Icon" href="<?php echo $favicon;?>" type="image/ico" />
<link rel="icon" href="<?php echo $favicon;?>" type="image/ico" />
<script src="js/alternc.js" type="text/javascript" ></script>
<script src="js/jquery.min_embedded.js" type="text/javascript"></script>
<script src="js/jquery_ui/js/jquery-ui-1.10.3.custom.min.js" type="text/javascript"></script>
<script src="js/jquery.tablesorter.min.js" type="text/javascript"></script>
<link href="prettify/prettify.css" type="text/css" rel="stylesheet" />
<script src="prettify/prettify.js" type="text/javascript"></script>
</head>
<body onload="prettyPrint()">
<body>
<?php
if ($isinvited && isset($oldid) && !empty($oldid) && $oldid!=$cuid ) {

View File

@ -37,7 +37,6 @@ if(empty($dir)) {
$is_include=true;
include("hta_add.php");
} else {
$msg->raise("INFO", "hta", _("Folder %s is protected"), $dir);
include("hta_list.php");
}
?>

View File

@ -76,7 +76,7 @@ for($i=0;$i<count($r);$i++){
?>
</table>
<br />
<input type="submit" class="ina up" name="submit" value="<?php __("Unprotect the checked folders"); ?>" />
<input type="submit" class="ina unlock" name="submit" value="<?php __("Unprotect the checked folders"); ?>" />
<span class="ina add"><a href="hta_add.php"><?php __("Protect a folder"); ?></a></span>
</form>

View File

@ -0,0 +1,60 @@
<?php
/*
----------------------------------------------------------------------
LICENSE
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License (GPL)
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
To read the license please visit http://www.gnu.org/copyleft/gpl.html
----------------------------------------------------------------------
*/
if (!defined("ALTERNC_PANEL")) exit(); // must be included ;)
/**
* main HEADER of all HTML page of the panel
*
* @copyright AlternC-Team 2000-2017 https://alternc.com/
*/
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $lang; ?>" lang="<?php echo $lang; ?>">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $charset; ?>" />
<title><?php __("AlternC Control Panel"); ?></title>
<link rel="stylesheet" href="/javascript/jquery-ui-themes/redmond/jquery-ui.min.css" type="text/css" />
<link rel="stylesheet" href="styles/style.css" type="text/css" />
<link rel="stylesheet" href="styles/solid.css" type="text/css" /><!-- fontawesome solid font -->
<link rel="stylesheet" href="styles/fontawesome.css" type="text/css" />
<?php
if (file_exists("styles/style-custom.css") ) {
echo '<link rel="stylesheet" href="styles/style-custom.css" type="text/css" />';
}
if (isset($addhead) && count($addhead['css'])) {
foreach($addhead['css'] as $css) echo $css."\n";
}
$favicon = variable_get('favicon', 'favicon.ico' ,'You can specify a favicon, for example /images/my_logo.ico', array('desc'=>'URL','type'=>'string'));
?>
<link rel="Shortcut Icon" href="<?php echo $favicon;?>" type="image/ico" />
<link rel="icon" href="<?php echo $favicon;?>" type="image/ico" />
<script src="js/alternc.js" type="text/javascript" ></script>
<script src="/javascript/jquery/jquery.min.js" type="text/javascript"></script>
<script src="/javascript/jquery-ui/jquery-ui.min.js" type="text/javascript"></script>
<script src="/javascript/jquery-tablesorter/jquery.tablesorter.min.js" type="text/javascript"></script>
<?php
if (isset($addhead) && count($addhead['js'])) {
foreach($addhead['js'] as $js) echo $js."\n";
}
?>
</head>

View File

Before

Width:  |  Height:  |  Size: 561 B

After

Width:  |  Height:  |  Size: 561 B

View File

@ -43,23 +43,8 @@ if (!isset($restrictip)) {
if (!isset($charset) || ! $charset) $charset="UTF-8";
@header("Content-Type: text/html; charset=$charset");
require_once("html-head.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>AlternC Desktop</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles/style.css" type="text/css" />
<?php
if (file_exists("styles/style-custom.css") ) {
echo '<link rel="stylesheet" href="styles/style-custom.css" type="text/css" />';
}
?>
<script type="text/javascript" src="js/alternc.js"></script>
<script src="js/jquery.min_embedded.js" type="text/javascript"></script>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $charset; ?>" />
</head>
<body class="login_page">
<div id="global">
@ -102,7 +87,8 @@ if ( empty($logo) || ! $logo ) {
</div>
</div>
<div class="block_login_page">
<a href="request_reset.php"><?php echo _('Request new password'); ?></a>
<br />
<?php __("You must accept the session cookie to log-in"); ?>
<br />
<?php echo _("If you want to use a different language, choose it in the list below"); ?>
@ -120,7 +106,7 @@ if ( empty($logo) || ! $logo ) {
<div class="block_login_page">
<?php
// Here we used to have a form to enter the squirrelmail's webmail.
// Here we used to have a form to enter the webmail.
// Following the "rule of less astonishment, we try to put it here again, even though the webmail is now a plugin.
$res=$hooks->invoke("hook_admin_webmail");
if (($wr=variable_get("webmail_redirect")) && isset($res[$wr]) && $res[$wr]) {

View File

@ -1,4 +1,4 @@
<?php
<?php
/*
----------------------------------------------------------------------
@ -18,10 +18,10 @@
----------------------------------------------------------------------
*/
/**
/**
* List and edit IP-Authentication list for this account
*
* @copyright AlternC-Team 2000-2017 https://alternc.com/
*
* @copyright AlternC-Team 2000-2017 https://alternc.com/
*/
require_once("../class/config.php");
@ -90,7 +90,7 @@ echo $msg->msg_html_all();
<th><?php __("Access type");?></th>
<th></th>
</tr>
<?php
<?php
foreach ($lac as $ll) {
echo "<tr class='lst' >";
echo "<td><span title=\"{$list_ip[$ll['authorised_ip_id']]['ip_human']}\">".$list_ip[$ll['authorised_ip_id']]['infos'];
@ -133,7 +133,7 @@ echo $msg->msg_html_all();
</select>
<?php } else { ?>
<?php foreach ($a['values'] as $k => $v) { ?>
<label><b><?php ehe($v); ?></b></label>
<label><b><?php ehe($v); ?></b></label>
<input type="hidden" name="s_affect_<?php ehe($a['protocol']);?>" id="s_affect_<?php ehe($a['protocol']);?>" value="<?php ehe($k); ?>" readonly="readonly" />
<?php } ?>
<?php } ?>
@ -147,7 +147,7 @@ echo $msg->msg_html_all();
<p>
<select name="s_ipsub">
<?php foreach ($list_ip as $li) { ?>
<option value="<?php echo $li['id']; ?>"><?php ehe($li['infos']);
<option value="<?php echo $li['id']; ?>"><?php ehe($li['infos']);
//echo " - ".$li['ip'] ; if (!($li['subnet']==32 || $li['subnet'] == 128)) echo "/".$li['subnet'];
?></option>
<?php } ?>
@ -170,7 +170,7 @@ echo $msg->msg_html_all();
<h3><?php __("Known IP and networks");?></h3>
<table class="tlist">
<tr><th><?php __("Name"); ?></th><th><?php __("IP or network"); ?></th><th><?php __("Type"); ?></th><th colspan='2'></th></tr>
<?php
<?php
foreach($list_ip as $i) {
if (checkip($i['ip'])) {
if ($i['subnet']==32) {
@ -207,8 +207,8 @@ foreach($list_ip as $i) {
<input type="hidden" name="id" value="" id="edit_id" />
<table class="tlistb">
<tr><th><?php __("Name"); ?></th><th><?php __("IP or network. <i>IPv4, IPv6 and subnet allowed</i>"); ?></th><th></th></tr>
<tr><th><?php __("IP or network. <i>IPv4, IPv6 and subnet allowed</i>"); ?></th><th><?php __("Name"); ?></th><th></th></tr>
<tr class="lst2">
<td><input type="text" size="20" maxlength="39" name="ipsub" id="edit_ip" /></td>
<td><input type="text" size="25" maxlength="200" name="infos" id="edit_infos" /></td>
@ -227,7 +227,7 @@ foreach($list_ip as $i) {
}
function edit_ip(id, iph, infos) {
if ( id != '' ) {
if ( id != '' ) {
$("#reset_edit_ip").show();
}
$("#edit_id").val(id);

View File

@ -103,7 +103,10 @@ function shuffleArray(array) {
}
function generate_password_html(id, size, field1, field2, classcount) {
$("#z"+id).html("<input id='inp"+id+"' type='textbox' size=8 readonly='readonly' value='"+generate_password(size, classcount)+"' />&nbsp;<a href='javascript:generate_password_html("+id+","+size+",\""+field1+"\",\""+field2+"\");'><img src='/images/refresh.png' alt='Refresh' title='Refresh'/></a>");
$("#z"+id).html("<input id='inp"+id+
"' type='textbox' size=8 readonly='readonly' value='"+generate_password(size, classcount)+
"' />&nbsp;<a href='javascript:generate_password_html("+id+","+size+",\""+field1+"\",\""+field2+
"\");'><img src='/images/refresh.png' alt='Refresh' title='Refresh'/></a>");
$("#inp"+id).focus();
$("#inp"+id).select();
if (field1 != "") { $(field1).val( $("#inp"+id).val() ); }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 333 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 292 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 335 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,450 +0,0 @@
<!doctype html>
<html lang="us">
<head>
<meta charset="utf-8">
<title>jQuery UI Example Page</title>
<link href="css/smoothness/jquery-ui-1.10.3.custom.css" rel="stylesheet">
<script src="js/jquery-1.9.1.js"></script>
<script src="js/jquery-ui-1.10.3.custom.js"></script>
<script>
$(function() {
$( "#accordion" ).accordion();
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Clojure",
"COBOL",
"ColdFusion",
"Erlang",
"Fortran",
"Groovy",
"Haskell",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scala",
"Scheme"
];
$( "#autocomplete" ).autocomplete({
source: availableTags
});
$( "#button" ).button();
$( "#radioset" ).buttonset();
$( "#tabs" ).tabs();
$( "#dialog" ).dialog({
autoOpen: false,
width: 400,
buttons: [
{
text: "Ok",
click: function() {
$( this ).dialog( "close" );
}
},
{
text: "Cancel",
click: function() {
$( this ).dialog( "close" );
}
}
]
});
// Link to open the dialog
$( "#dialog-link" ).click(function( event ) {
$( "#dialog" ).dialog( "open" );
event.preventDefault();
});
$( "#datepicker" ).datepicker({
inline: true
});
$( "#slider" ).slider({
range: true,
values: [ 17, 67 ]
});
$( "#progressbar" ).progressbar({
value: 20
});
// Hover states on the static widgets
$( "#dialog-link, #icons li" ).hover(
function() {
$( this ).addClass( "ui-state-hover" );
},
function() {
$( this ).removeClass( "ui-state-hover" );
}
);
});
</script>
<style>
body{
font: 62.5% "Trebuchet MS", sans-serif;
margin: 50px;
}
.demoHeaders {
margin-top: 2em;
}
#dialog-link {
padding: .4em 1em .4em 20px;
text-decoration: none;
position: relative;
}
#dialog-link span.ui-icon {
margin: 0 5px 0 0;
position: absolute;
left: .2em;
top: 50%;
margin-top: -8px;
}
#icons {
margin: 0;
padding: 0;
}
#icons li {
margin: 2px;
position: relative;
padding: 4px 0;
cursor: pointer;
float: left;
list-style: none;
}
#icons span.ui-icon {
float: left;
margin: 0 4px;
}
.fakewindowcontain .ui-widget-overlay {
position: absolute;
}
</style>
</head>
<body>
<h1>Welcome to jQuery UI!</h1>
<div class="ui-widget">
<p>This page demonstrates the widgets you downloaded using the theme you selected in the download builder. We've included and linked to minified versions of <a href="js/jquery-1.9.1.js">jQuery</a>, your personalized copy of <a href="js/jquery-ui-1.10.3.custom.min.js">jQuery UI (js/jquery-ui-1.10.3.custom.min.js)</a>, and <a href="css/smoothness/jquery-ui-1.10.3.custom.min.css">css/smoothness/jquery-ui-1.10.3.custom.min.css</a> which imports the entire jQuery UI CSS Framework. You can choose to link a subset of the CSS Framework depending on your needs. </p>
<p>You've downloaded components and a theme that are compatible with jQuery 1.6+. Please make sure you are using jQuery 1.6+ in your production environment.</p>
</div>
<h1>YOUR COMPONENTS:</h1>
<!-- Accordion -->
<h2 class="demoHeaders">Accordion</h2>
<div id="accordion">
<h3>First</h3>
<div>Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.</div>
<h3>Second</h3>
<div>Phasellus mattis tincidunt nibh.</div>
<h3>Third</h3>
<div>Nam dui erat, auctor a, dignissim quis.</div>
</div>
<!-- Autocomplete -->
<h2 class="demoHeaders">Autocomplete</h2>
<div>
<input id="autocomplete" title="type &quot;a&quot;">
</div>
<!-- Button -->
<h2 class="demoHeaders">Button</h2>
<button id="button">A button element</button>
<form style="margin-top: 1em;">
<div id="radioset">
<input type="radio" id="radio1" name="radio"><label for="radio1">Choice 1</label>
<input type="radio" id="radio2" name="radio" checked="checked"><label for="radio2">Choice 2</label>
<input type="radio" id="radio3" name="radio"><label for="radio3">Choice 3</label>
</div>
</form>
<!-- Tabs -->
<h2 class="demoHeaders">Tabs</h2>
<div id="tabs">
<ul>
<li><a href="#tabs-1">First</a></li>
<li><a href="#tabs-2">Second</a></li>
<li><a href="#tabs-3">Third</a></li>
</ul>
<div id="tabs-1">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>
<div id="tabs-2">Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.</div>
<div id="tabs-3">Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.</div>
</div>
<!-- Dialog NOTE: Dialog is not generated by UI in this demo so it can be visually styled in themeroller-->
<h2 class="demoHeaders">Dialog</h2>
<p><a href="#" id="dialog-link" class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-newwin"></span>Open Dialog</a></p>
<h2 class="demoHeaders">Overlay and Shadow Classes <em>(not currently used in UI widgets)</em></h2>
<div style="position: relative; width: 96%; height: 200px; padding:1% 2%; overflow:hidden;" class="fakewindowcontain">
<p>Lorem ipsum dolor sit amet, Nulla nec tortor. Donec id elit quis purus consectetur consequat. </p><p>Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. </p><p>Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. </p><p>Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. </p><p>Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. </p><p>Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. </p>
<!-- ui-dialog -->
<div class="ui-overlay"><div class="ui-widget-overlay"></div><div class="ui-widget-shadow ui-corner-all" style="width: 302px; height: 152px; position: absolute; left: 50px; top: 30px;"></div></div>
<div style="position: absolute; width: 280px; height: 130px;left: 50px; top: 30px; padding: 10px;" class="ui-widget ui-widget-content ui-corner-all">
<div class="ui-dialog-content ui-widget-content" style="background: none; border: 0;">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
</div>
</div>
<!-- ui-dialog -->
<div id="dialog" title="Dialog Title">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<h2 class="demoHeaders">Framework Icons (content color preview)</h2>
<ul id="icons" class="ui-widget ui-helper-clearfix">
<li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-n"><span class="ui-icon ui-icon-carat-1-n"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-ne"><span class="ui-icon ui-icon-carat-1-ne"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-e"><span class="ui-icon ui-icon-carat-1-e"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-se"><span class="ui-icon ui-icon-carat-1-se"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-s"><span class="ui-icon ui-icon-carat-1-s"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-sw"><span class="ui-icon ui-icon-carat-1-sw"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-w"><span class="ui-icon ui-icon-carat-1-w"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-carat-1-nw"><span class="ui-icon ui-icon-carat-1-nw"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-carat-2-n-s"><span class="ui-icon ui-icon-carat-2-n-s"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-carat-2-e-w"><span class="ui-icon ui-icon-carat-2-e-w"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-n"><span class="ui-icon ui-icon-triangle-1-n"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-ne"><span class="ui-icon ui-icon-triangle-1-ne"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-e"><span class="ui-icon ui-icon-triangle-1-e"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-se"><span class="ui-icon ui-icon-triangle-1-se"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-s"><span class="ui-icon ui-icon-triangle-1-s"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-sw"><span class="ui-icon ui-icon-triangle-1-sw"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-w"><span class="ui-icon ui-icon-triangle-1-w"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-1-nw"><span class="ui-icon ui-icon-triangle-1-nw"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-2-n-s"><span class="ui-icon ui-icon-triangle-2-n-s"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-triangle-2-e-w"><span class="ui-icon ui-icon-triangle-2-e-w"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-n"><span class="ui-icon ui-icon-arrow-1-n"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-ne"><span class="ui-icon ui-icon-arrow-1-ne"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-e"><span class="ui-icon ui-icon-arrow-1-e"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-se"><span class="ui-icon ui-icon-arrow-1-se"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-s"><span class="ui-icon ui-icon-arrow-1-s"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-sw"><span class="ui-icon ui-icon-arrow-1-sw"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-w"><span class="ui-icon ui-icon-arrow-1-w"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-1-nw"><span class="ui-icon ui-icon-arrow-1-nw"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-n-s"><span class="ui-icon ui-icon-arrow-2-n-s"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-ne-sw"><span class="ui-icon ui-icon-arrow-2-ne-sw"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-e-w"><span class="ui-icon ui-icon-arrow-2-e-w"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-2-se-nw"><span class="ui-icon ui-icon-arrow-2-se-nw"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-n"><span class="ui-icon ui-icon-arrowstop-1-n"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-e"><span class="ui-icon ui-icon-arrowstop-1-e"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-s"><span class="ui-icon ui-icon-arrowstop-1-s"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowstop-1-w"><span class="ui-icon ui-icon-arrowstop-1-w"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-n"><span class="ui-icon ui-icon-arrowthick-1-n"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-ne"><span class="ui-icon ui-icon-arrowthick-1-ne"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-e"><span class="ui-icon ui-icon-arrowthick-1-e"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-se"><span class="ui-icon ui-icon-arrowthick-1-se"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-s"><span class="ui-icon ui-icon-arrowthick-1-s"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-sw"><span class="ui-icon ui-icon-arrowthick-1-sw"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-w"><span class="ui-icon ui-icon-arrowthick-1-w"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-1-nw"><span class="ui-icon ui-icon-arrowthick-1-nw"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-n-s"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-ne-sw"><span class="ui-icon ui-icon-arrowthick-2-ne-sw"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-e-w"><span class="ui-icon ui-icon-arrowthick-2-e-w"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthick-2-se-nw"><span class="ui-icon ui-icon-arrowthick-2-se-nw"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-n"><span class="ui-icon ui-icon-arrowthickstop-1-n"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-e"><span class="ui-icon ui-icon-arrowthickstop-1-e"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-s"><span class="ui-icon ui-icon-arrowthickstop-1-s"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowthickstop-1-w"><span class="ui-icon ui-icon-arrowthickstop-1-w"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-w"><span class="ui-icon ui-icon-arrowreturnthick-1-w"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-n"><span class="ui-icon ui-icon-arrowreturnthick-1-n"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-e"><span class="ui-icon ui-icon-arrowreturnthick-1-e"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturnthick-1-s"><span class="ui-icon ui-icon-arrowreturnthick-1-s"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-w"><span class="ui-icon ui-icon-arrowreturn-1-w"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-n"><span class="ui-icon ui-icon-arrowreturn-1-n"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-e"><span class="ui-icon ui-icon-arrowreturn-1-e"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowreturn-1-s"><span class="ui-icon ui-icon-arrowreturn-1-s"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-w"><span class="ui-icon ui-icon-arrowrefresh-1-w"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-n"><span class="ui-icon ui-icon-arrowrefresh-1-n"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-e"><span class="ui-icon ui-icon-arrowrefresh-1-e"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrowrefresh-1-s"><span class="ui-icon ui-icon-arrowrefresh-1-s"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-4"><span class="ui-icon ui-icon-arrow-4"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-arrow-4-diag"><span class="ui-icon ui-icon-arrow-4-diag"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-extlink"><span class="ui-icon ui-icon-extlink"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-newwin"><span class="ui-icon ui-icon-newwin"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-refresh"><span class="ui-icon ui-icon-refresh"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-shuffle"><span class="ui-icon ui-icon-shuffle"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-transfer-e-w"><span class="ui-icon ui-icon-transfer-e-w"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-transferthick-e-w"><span class="ui-icon ui-icon-transferthick-e-w"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-folder-collapsed"><span class="ui-icon ui-icon-folder-collapsed"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-folder-open"><span class="ui-icon ui-icon-folder-open"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-document"><span class="ui-icon ui-icon-document"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-document-b"><span class="ui-icon ui-icon-document-b"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-note"><span class="ui-icon ui-icon-note"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-mail-closed"><span class="ui-icon ui-icon-mail-closed"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-mail-open"><span class="ui-icon ui-icon-mail-open"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-suitcase"><span class="ui-icon ui-icon-suitcase"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-comment"><span class="ui-icon ui-icon-comment"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-person"><span class="ui-icon ui-icon-person"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-print"><span class="ui-icon ui-icon-print"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-trash"><span class="ui-icon ui-icon-trash"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-locked"><span class="ui-icon ui-icon-locked"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-unlocked"><span class="ui-icon ui-icon-unlocked"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-bookmark"><span class="ui-icon ui-icon-bookmark"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-tag"><span class="ui-icon ui-icon-tag"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-home"><span class="ui-icon ui-icon-home"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-flag"><span class="ui-icon ui-icon-flag"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-calculator"><span class="ui-icon ui-icon-calculator"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-cart"><span class="ui-icon ui-icon-cart"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-pencil"><span class="ui-icon ui-icon-pencil"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-clock"><span class="ui-icon ui-icon-clock"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-disk"><span class="ui-icon ui-icon-disk"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-calendar"><span class="ui-icon ui-icon-calendar"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-zoomin"><span class="ui-icon ui-icon-zoomin"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-zoomout"><span class="ui-icon ui-icon-zoomout"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-search"><span class="ui-icon ui-icon-search"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-wrench"><span class="ui-icon ui-icon-wrench"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-gear"><span class="ui-icon ui-icon-gear"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-heart"><span class="ui-icon ui-icon-heart"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-star"><span class="ui-icon ui-icon-star"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-link"><span class="ui-icon ui-icon-link"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-cancel"><span class="ui-icon ui-icon-cancel"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-plus"><span class="ui-icon ui-icon-plus"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-plusthick"><span class="ui-icon ui-icon-plusthick"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-minus"><span class="ui-icon ui-icon-minus"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-minusthick"><span class="ui-icon ui-icon-minusthick"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-close"><span class="ui-icon ui-icon-close"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-closethick"><span class="ui-icon ui-icon-closethick"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-key"><span class="ui-icon ui-icon-key"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-lightbulb"><span class="ui-icon ui-icon-lightbulb"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-scissors"><span class="ui-icon ui-icon-scissors"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-clipboard"><span class="ui-icon ui-icon-clipboard"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-copy"><span class="ui-icon ui-icon-copy"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-contact"><span class="ui-icon ui-icon-contact"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-image"><span class="ui-icon ui-icon-image"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-video"><span class="ui-icon ui-icon-video"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-script"><span class="ui-icon ui-icon-script"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-alert"><span class="ui-icon ui-icon-alert"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-info"><span class="ui-icon ui-icon-info"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-notice"><span class="ui-icon ui-icon-notice"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-help"><span class="ui-icon ui-icon-help"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-check"><span class="ui-icon ui-icon-check"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-bullet"><span class="ui-icon ui-icon-bullet"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-radio-off"><span class="ui-icon ui-icon-radio-off"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-radio-on"><span class="ui-icon ui-icon-radio-on"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-pin-w"><span class="ui-icon ui-icon-pin-w"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-pin-s"><span class="ui-icon ui-icon-pin-s"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-play"><span class="ui-icon ui-icon-play"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-pause"><span class="ui-icon ui-icon-pause"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-seek-next"><span class="ui-icon ui-icon-seek-next"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-seek-prev"><span class="ui-icon ui-icon-seek-prev"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-seek-end"><span class="ui-icon ui-icon-seek-end"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-seek-first"><span class="ui-icon ui-icon-seek-first"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-stop"><span class="ui-icon ui-icon-stop"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-eject"><span class="ui-icon ui-icon-eject"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-volume-off"><span class="ui-icon ui-icon-volume-off"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-volume-on"><span class="ui-icon ui-icon-volume-on"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-power"><span class="ui-icon ui-icon-power"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-signal-diag"><span class="ui-icon ui-icon-signal-diag"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-signal"><span class="ui-icon ui-icon-signal"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-battery-0"><span class="ui-icon ui-icon-battery-0"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-battery-1"><span class="ui-icon ui-icon-battery-1"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-battery-2"><span class="ui-icon ui-icon-battery-2"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-battery-3"><span class="ui-icon ui-icon-battery-3"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-plus"><span class="ui-icon ui-icon-circle-plus"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-minus"><span class="ui-icon ui-icon-circle-minus"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-close"><span class="ui-icon ui-icon-circle-close"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-e"><span class="ui-icon ui-icon-circle-triangle-e"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-s"><span class="ui-icon ui-icon-circle-triangle-s"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-w"><span class="ui-icon ui-icon-circle-triangle-w"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-triangle-n"><span class="ui-icon ui-icon-circle-triangle-n"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-e"><span class="ui-icon ui-icon-circle-arrow-e"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-s"><span class="ui-icon ui-icon-circle-arrow-s"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-w"><span class="ui-icon ui-icon-circle-arrow-w"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-arrow-n"><span class="ui-icon ui-icon-circle-arrow-n"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-zoomin"><span class="ui-icon ui-icon-circle-zoomin"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-zoomout"><span class="ui-icon ui-icon-circle-zoomout"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-circle-check"><span class="ui-icon ui-icon-circle-check"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-circlesmall-plus"><span class="ui-icon ui-icon-circlesmall-plus"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-circlesmall-minus"><span class="ui-icon ui-icon-circlesmall-minus"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-circlesmall-close"><span class="ui-icon ui-icon-circlesmall-close"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-squaresmall-plus"><span class="ui-icon ui-icon-squaresmall-plus"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-squaresmall-minus"><span class="ui-icon ui-icon-squaresmall-minus"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-squaresmall-close"><span class="ui-icon ui-icon-squaresmall-close"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-grip-dotted-vertical"><span class="ui-icon ui-icon-grip-dotted-vertical"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-grip-dotted-horizontal"><span class="ui-icon ui-icon-grip-dotted-horizontal"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-grip-solid-vertical"><span class="ui-icon ui-icon-grip-solid-vertical"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-grip-solid-horizontal"><span class="ui-icon ui-icon-grip-solid-horizontal"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-gripsmall-diagonal-se"><span class="ui-icon ui-icon-gripsmall-diagonal-se"></span></li>
<li class="ui-state-default ui-corner-all" title=".ui-icon-grip-diagonal-se"><span class="ui-icon ui-icon-grip-diagonal-se"></span></li>
</ul>
<!-- Slider -->
<h2 class="demoHeaders">Slider</h2>
<div id="slider"></div>
<!-- Datepicker -->
<h2 class="demoHeaders">Datepicker</h2>
<div id="datepicker"></div>
<!-- Progressbar -->
<h2 class="demoHeaders">Progressbar</h2>
<div id="progressbar"></div>
<!-- Highlight / Error -->
<h2 class="demoHeaders">Highlight / Error</h2>
<div class="ui-widget">
<div class="ui-state-highlight ui-corner-all" style="margin-top: 20px; padding: 0 .7em;">
<p><span class="ui-icon ui-icon-info" style="float: left; margin-right: .3em;"></span>
<strong>Hey!</strong> Sample ui-state-highlight style.</p>
</div>
</div>
<br>
<div class="ui-widget">
<div class="ui-state-error ui-corner-all" style="padding: 0 .7em;">
<p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span>
<strong>Alert:</strong> Sample ui-state-error style.</p>
</div>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -82,7 +82,7 @@ while (list($key,$val)=each($d)) {
</ul>
</p>
<p>
<input type="submit" class="inb" name="submit" value="<?php __("Confirm the deletion"); ?>" /> - <input type="button" name="cancel" id="cancel" onclick="window.history.go(-1);" class="inb" value="<?php __("Don't delete anything and go back to the email list"); ?>"/>
<input type="submit" class="inb" name="submit" value="<?php __("Confirm the deletion"); ?>" /> &nbsp; <input type="button" name="cancel" id="cancel" onclick="window.history.go(-1);" class="inb" value="<?php __("Don't delete anything and go back to the email list"); ?>"/>
</p>
<p class="warningmsg">

View File

@ -100,8 +100,8 @@ echo $msg->msg_html_all();
<div id="poptbl">
<table class="tedit" >
<tr id='mail_edit_pass' style='display: none;'><td colspan='2'><a href='javascript:mail_edit_pass();'><?php __("Click here to edit the existing password");?></a></td></tr>
<tr id='mail_edit_pass1'><td><label for="pass"><?php __("Enter a POP/IMAP password"); ?></label></td><td><input type="password" class="int" autocomplete="off" name="pass" id="pass" value="" size="20" maxlength="32" /><?php display_div_generate_password(DEFAULT_PASS_SIZE,"#pass","#passconf",$passwd_classcount); ?></td></tr>
<tr id='mail_edit_pass2'><td><label for="passconf"><?php __("Confirm password"); ?></label></td><td><input type="password" class="int" autocomplete="off" name="passconf" id="passconf" value="" size="20" maxlength="32" /></td></tr>
<tr id='mail_edit_pass1'><td><label for="pass"><?php __("Enter a POP/IMAP password"); ?></label></td><td><input type="password" class="int" autocomplete="off" name="pass" id="pass" value="" size="20"/><?php display_div_generate_password(DEFAULT_PASS_SIZE,"#pass","#passconf",$passwd_classcount); ?></td></tr>
<tr id='mail_edit_pass2'><td><label for="passconf"><?php __("Confirm password"); ?></label></td><td><input type="password" class="int" autocomplete="off" name="passconf" id="passconf" value="" size="20"/></td></tr>
<tr><td><label for="quotamb"><?php __("Maximum allowed size of this Mailbox"); ?></label></td><td><input type="text" class="int intleft" style="text-align: right" name="quotamb" id="quotamb" value="<?php ehe($quotamb); ?>" size="7" maxlength="6" /><span class="int intright"><?php __("MB"); ?></span></td></tr>
</table>
</div>

View File

@ -75,7 +75,7 @@ echo $msg->msg_html_all(true, true);
<?php } // $quota->cancreate("mail") ?>
</td>
<td>
<span class="inb configure" valign='bottom'><a href="mail_manage_catchall.php?domain_id=<?php echo $domain_id?>"><?php __("Manage Catch-all for this domain");?></a></span>
<span class="inb settings" valign='bottom'><a href="mail_manage_catchall.php?domain_id=<?php echo $domain_id?>"><?php __("Manage Catch-all for this domain");?></a></span>
</td>
</tr>
</table>
@ -193,11 +193,11 @@ if (date("Y-m-d")==substr($val["lastlogin"],0,10)) echo substr($val["lastlogin"]
<?php __("Which protocol shall you use?"); ?>
<div id="accordion-mailout">
<?php if ($mail->srv_submission) { ?>
<?php if ($mail->srv_postfix) { ?>
<h4><?php __("Submission");?></h4>
<div>
<ul>
<li><b><?php __("Server name: ");?></b> <?php __($mail->srv_submission); ?></li>
<li><b><?php __("Server name: ");?></b> <?php __($mail->srv_postfix); ?></li>
<li><b><?php __("Username: ");?></b> <?php __("The mail address you want to access <i>(example : myuser@example.tld)</i>");?></li>
<li><b><?php __("Port: ");?></b> 587</li>
<li><b><?php __("Authentication: ");?></b><?php __("Yes")?></li>
@ -206,11 +206,11 @@ if (date("Y-m-d")==substr($val["lastlogin"],0,10)) echo substr($val["lastlogin"]
</ul>
</div>
<?php } ?>
<?php if ($mail->srv_smtp) { ?>
<?php if ($mail->srv_postfix) { ?>
<h4><?php __("SMTP");?></h4>
<div>
<ul>
<li><b><?php __("Server name: ");?></b> <?php __($mail->srv_smtp); ?></li>
<li><b><?php __("Server name: ");?></b> <?php __($mail->srv_postfix); ?></li>
<li><b><?php __("Username: ");?></b> <?php __("The mail address you want to access <i>(example : myuser@example.tld)</i>");?></li>
<li><b><?php __("Port: ");?></b> 25</li>
<li><b><?php __("Authentication: ");?></b><?php __("Yes")?></li>
@ -219,11 +219,11 @@ if (date("Y-m-d")==substr($val["lastlogin"],0,10)) echo substr($val["lastlogin"]
</ul>
</div>
<?php } ?>
<?php if ($mail->srv_smtps) { ?>
<?php if ($mail->srv_postfix) { ?>
<h4><?php __("SMTPS");?></h4>
<div>
<ul>
<li><b><?php __("Server name: ");?></b> <?php __($mail->srv_smtps); ?></li>
<li><b><?php __("Server name: ");?></b> <?php __($mail->srv_postfix); ?></li>
<li><b><?php __("Username: ");?></b> <?php __("The mail address you want to access <i>(example : myuser@example.tld)</i>");?></li>
<li><b><?php __("Port: ");?></b> 465</li>
<li><b><?php __("Authentication: ");?></b><?php __("Yes")?></li>
@ -243,7 +243,7 @@ if (date("Y-m-d")==substr($val["lastlogin"],0,10)) echo substr($val["lastlogin"]
<h4><?php __("IMAP");?></h4>
<div>
<ul>
<li><b><?php __("Server name: ");?></b> <?php __($mail->srv_imap); ?></li>
<li><b><?php __("Server name: ");?></b> <?php __($mail->srv_dovecot); ?></li>
<li><b><?php __("Port: ");?></b> 143</li>
<li><b><?php __("Authentication: ");?></b><?php __("Yes")?></li>
<li><b><?php __("Authentication method: ");?></b><?php __("Normal password")?></li>
@ -254,7 +254,7 @@ if (date("Y-m-d")==substr($val["lastlogin"],0,10)) echo substr($val["lastlogin"]
<h4><?php __("IMAPS");?></h4>
<div>
<ul>
<li><b><?php __("Server name: ");?></b> <?php __($mail->srv_imaps); ?></li>
<li><b><?php __("Server name: ");?></b> <?php __($mail->srv_dovecot); ?></li>
<li><b><?php __("Port: ");?></b> 993</li>
<li><b><?php __("Authentication: ");?></b><?php __("Yes")?></li>
<li><b><?php __("Authentication method: ")?></b><?php __("Normal password")?></li>
@ -265,7 +265,7 @@ if (date("Y-m-d")==substr($val["lastlogin"],0,10)) echo substr($val["lastlogin"]
<h4><?php __("POP3");?></h4>
<div>
<ul>
<li><b><?php __("Server name: ");?></b> <?php __($mail->srv_pop3); ?></li>
<li><b><?php __("Server name: ");?></b> <?php __($mail->srv_dovecot); ?></li>
<li><b><?php __("Port: ");?></b> 110</li>
<li><b><?php __("Authentication: ");?></b><?php __("Yes")?></li>
<li><b><?php __("Authentication method: ");?></b><?php __("Normal password")?></li>
@ -276,7 +276,7 @@ if (date("Y-m-d")==substr($val["lastlogin"],0,10)) echo substr($val["lastlogin"]
<h4><?php __("POP3S");?></h4>
<div>
<ul>
<li><b><?php __("Server name: ");?></b> <?php __($mail->srv_pop3s); ?></li>
<li><b><?php __("Server name: ");?></b> <?php __($mail->srv_dovecot); ?></li>
<li><b><?php __("Port: ");?></b> 995</li>
<li><b><?php __("Authentication: ");?></b><?php __("Yes")?></li>
<li><b><?php __("Authentication method: ");?></b><?php __("Normal password")?></li>

View File

@ -53,7 +53,7 @@ echo "<?xml version='1.0' encoding='UTF-8'?> \n";
<Action>settings</Action>
<Protocol>
<Type>IMAP</Type>
<Server><?php echo $mail->srv_imaps;?></Server>
<Server><?php echo $mail->srv_dovecot; ?></Server>
<Port>993</Port>
<LoginName><?php echo $matches[0];?></LoginName>
<DomainName><?php echo $emailDomain[1];?></DomainName>
@ -63,7 +63,7 @@ echo "<?xml version='1.0' encoding='UTF-8'?> \n";
</Protocol>
<Protocol>
<Type>SMTP</Type>
<Server><?php echo $mail->srv_smtps;?></Server>
<Server><?php echo $mail->srv_postfix; ?></Server>
<Port>587</Port>
<SPA>off</SPA>
<SSL>on</SSL>

View File

@ -44,28 +44,28 @@ if (empty($emailDomain)) die(_('Error: Empty $emailDomain'));
<displayName><?php echo $L_FQDN ?></displayName>
<displayShortName><?php echo $L_FQDN ?></displayShortName>
<incomingServer type="imap">
<hostname><?php echo $mail->srv_imap ;?></hostname>
<port>993</port>
<socketType>SSL</socketType>
<hostname><?php echo $mail->srv_dovecot ;?></hostname>
<port>143</port>
<socketType>STARTTLS</socketType>
<authentication>password-cleartext</authentication>
<username>%EMAILADDRESS%</username>
</incomingServer>
<incomingServer type="pop3">
<hostname><?php echo $mail->srv_imaps;?></hostname>
<port>995</port>
<socketType>SSL</socketType>
<hostname><?php echo $mail->srv_dovecot;?></hostname>
<port>110</port>
<socketType>STARTTLS</socketType>
<authentication>password-cleartext</authentication>
<username>%EMAILADDRESS%</username>
</incomingServer>
<outgoingServer type="smtp">
<hostname><?php echo $mail->srv_smtp;?></hostname>
<hostname><?php echo $mail->srv_postfix;?></hostname>
<port>587</port>
<socketType>STARTTLS</socketType>
<username>%EMAILADDRESS%</username>
<authentication>password-cleartext</authentication>
</outgoingServer>
<outgoingServer type="smtp">
<hostname><?php echo $mail->srv_smtps;?></hostname>
<hostname><?php echo $mail->srv_postfix;?></hostname>
<port>465</port>
<socketType>SSL</socketType>
<authentication>password-cleartext</authentication>

View File

@ -81,7 +81,9 @@ echo "<p>";
<input type="password" style="display: none" id="fakePassword" name="fakePassword" value="" />
<table border="1" cellspacing="0" cellpadding="4" class="tedit" >
<tr><th><?php __("Old password"); ?></th><td><input type="password" class="int" name="oldpass" value="<?php isset($oldpass) ? : $oldpass=""; ehe($oldpass); ?>" size="20" maxlength="128" /></td></tr>
<?php if ($mem->requires_old_password_for_change()): ?>
<tr><th><?php __("Old password"); ?></th><td><input type="password" class="int" name="oldpass" value="<?php isset($oldpass) ? : $oldpass=""; ehe($oldpass); ?>" size="20" maxlength="128" /></td></tr>
<?php endif; ?>
<tr><th><?php __("New password"); ?> (1)</th><td><input type="password" class="int" autocomplete="off" id="newpass" name="newpass" value="<?php isset($newpass) ? : $newpass=""; ehe($newpass); ?>" size="20" maxlength="60" /><?php display_div_generate_password(DEFAULT_PASS_SIZE,"#newpass","#newpass2",$passwd_classcount); ?></td></tr>
<tr><th><?php __("New password"); ?> (2)</th><td><input type="password" class="int" autocomplete="off" id="newpass2" name="newpass2" value="<?php isset($newpass2) ? : $newpass2=""; ehe($newpass2);?>" size="20" maxlength="61" /></td></tr>
<tr class="trbtn"><td colspan="3"><input type="submit" class="inb ok" name="submit" value="<?php __("Change my password"); ?>" /></td></tr>
@ -134,8 +136,13 @@ if ($mem->user["su"]) {
</div> <!-- tabsmem -->
<script type="text/javascript">
document.forms['main'].oldpass.focus();
$(function() {$( "#tabsmem" ).tabs();});
if (document.forms['main'].getElementsByClassName("oldpass").length > 0) {
document.forms['main'].oldpass.focus();
}
else {
document.getElementById('newpass').focus();
}
$(function() {$( "#tabsmem" ).tabs();});
</script>
<?php include_once("foot.php"); ?>

View File

@ -42,13 +42,11 @@ echo "</div>";
$obj_menu = $menu->getmenu();
foreach ($obj_menu as $k => $m ) {
echo "<style>.$k-menu .menu-title { background-image: url('".$m['ico']."'); background-repeat: no-repeat; background-position: 8px 3px; padding-left: 30px;} </style>";
echo "<div class='menu-box {$k}-menu ".(!empty($m['divclass'])?$m['divclass']:'')."'>\n";
echo " <a href=\"".$m['link']."\"";
if (!empty($m['target'])) echo " target='". $m['target']."' ";
echo ">\n";
echo " <span class='menu-title'>\n";
//echo " <img src='".$m['ico']."' alt=\"".$m['title']."\" width='16px' height='16px' />&nbsp;";
echo " <span class='";
if (!empty($m['class'])) echo $m['class']." ";
echo "'>"; // fin span ouvrant
@ -58,17 +56,6 @@ foreach ($obj_menu as $k => $m ) {
echo " (".$m['quota_used']."/".$m['quota_total'].")";
echo "</span>\n";
} // if there are some quota
if ( empty($m['links'])) {
$i = "images/menu_right.png";
// img machin
} else {
if ( $m['visibility'] ) {
$i="/images/menu_moins.png";
} else {
$i="/images/menu_plus.png";
}
}
echo " <img src='$i' alt='' style='float:right;' width='16px' height='16px' id='menu-$k-img'/>\n";
echo " </span>";
echo " </span>\n";
echo " </a>\n";

View File

@ -1,2 +0,0 @@
PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\n\r]*/,null,"#"],["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"']],[["kwd",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,
null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[ES]?BANK=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[!-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["apollo","agc","aea"]);

View File

@ -1,3 +0,0 @@
var a=null;
PR.registerLangHandler(PR.createSimpleLexer([["str",/^"(?:[^\n\r"\\]|\\.)*(?:"|$)/,a,'"'],["pln",/^\s+/,a," \r\n\t\u00a0"]],[["com",/^REM[^\n\r]*/,a],["kwd",/^\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\b/,a],["pln",/^[a-z][^\W_]?(?:\$|%)?/i,a],["lit",/^(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?/i,a,"0123456789"],["pun",
/^.[^\s\w"$%.]*/,a]]),["basic","cbm"]);

View File

@ -1,18 +0,0 @@
/*
Copyright (C) 2011 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
var a=null;
PR.registerLangHandler(PR.createSimpleLexer([["opn",/^[([{]+/,a,"([{"],["clo",/^[)\]}]+/,a,")]}"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\b/,a],
["typ",/^:[\dA-Za-z-]+/]]),["clj"]);

View File

@ -1,2 +0,0 @@
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n\u000c"]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]+)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],
["com",/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}\b/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]);

View File

@ -1,3 +0,0 @@
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"]],[["com",/^#!.*/],["kwd",/^\b(?:import|library|part of|part|as|show|hide)\b/i],["com",/^\/\/.*/],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["kwd",/^\b(?:class|interface)\b/i],["kwd",/^\b(?:assert|break|case|catch|continue|default|do|else|finally|for|if|in|is|new|return|super|switch|this|throw|try|while)\b/i],["kwd",/^\b(?:abstract|const|extends|factory|final|get|implements|native|operator|set|static|typedef|var)\b/i],
["typ",/^\b(?:bool|double|dynamic|int|num|object|string|void)\b/i],["kwd",/^\b(?:false|null|true)\b/i],["str",/^r?'''[\S\s]*?[^\\]'''/],["str",/^r?"""[\S\s]*?[^\\]"""/],["str",/^r?'('|[^\n\f\r]*?[^\\]')/],["str",/^r?"("|[^\n\f\r]*?[^\\]")/],["pln",/^[$_a-z]\w*/i],["pun",/^[!%&*+/:<-?^|~-]/],["lit",/^\b0x[\da-f]+/i],["lit",/^\b\d+(?:\.\d*)?(?:e[+-]?\d+)?/i],["lit",/^\b\.\d+(?:e[+-]?\d+)?/i],["pun",/^[(),.;[\]{}]/]]),
["dart"]);

View File

@ -1,2 +0,0 @@
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n\u000b\u000c\r "],["str",/^"(?:[^\n\f\r"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["lit",/^[a-z]\w*/],["lit",/^'(?:[^\n\f\r'\\]|\\[^&])+'?/,null,"'"],["lit",/^\?[^\t\n ({]+/,null,"?"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,null,"0123456789"]],[["com",/^%[^\n]*/],["kwd",/^(?:module|attributes|do|let|in|letrec|apply|call|primop|case|of|end|when|fun|try|catch|receive|after|char|integer|float,atom,string,var)\b/],
["kwd",/^-[_a-z]+/],["typ",/^[A-Z_]\w*/],["pun",/^[,.;]/]]),["erlang","erl"]);

View File

@ -1 +0,0 @@
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["pln",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])+(?:'|$)|`[^`]*(?:`|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\n\r]*|\/\*[\S\s]*?\*\/)/],["pln",/^(?:[^"'/`]|\/(?![*/]))+/]]),["go"]);

View File

@ -1,2 +0,0 @@
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n\u000b\u000c\r "],["str",/^"(?:[^\n\f\r"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["str",/^'(?:[^\n\f\r'\\]|\\[^&])'?/,null,"'"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,null,"0123456789"]],[["com",/^(?:--+[^\n\f\r]*|{-(?:[^-]|-+[^}-])*-})/],["kwd",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^\d'A-Za-z]|$)/,
null],["pln",/^(?:[A-Z][\w']*\.)*[A-Za-z][\w']*/],["pun",/^[^\d\t-\r "'A-Za-z]+/]]),["hs"]);

View File

@ -1,3 +0,0 @@
var a=null;
PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,a,"("],["clo",/^\)+/,a,")"],["com",/^;[^\n\r]*/,a,";"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,a],
["lit",/^[+-]?(?:[#0]x[\da-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[de][+-]?\d+)?)/i],["lit",/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[_a-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/i],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["cl","el","lisp","lsp","scm","ss","rkt"]);

View File

@ -1 +0,0 @@
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^!?"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["com",/^;[^\n\r]*/,null,";"]],[["pln",/^[!%@](?:[$\-.A-Z_a-z][\w$\-.]*|\d+)/],["kwd",/^[^\W\d]\w*/,null],["lit",/^\d+\.\d+/],["lit",/^(?:\d+|0[Xx][\dA-Fa-f]+)/],["pun",/^[(-*,:<->[\]{}]|\.\.\.$/]]),["llvm","ll"]);

View File

@ -1,2 +0,0 @@
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$))/,null,"\"'"]],[["com",/^--(?:\[(=*)\[[\S\s]*?(?:]\1]|$)|[^\n\r]*)/],["str",/^\[(=*)\[[\S\s]*?(?:]\1]|$)/],["kwd",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],
["pln",/^[_a-z]\w*/i],["pun",/^[^\w\t\n\r \xa0][^\w\t\n\r "'+=\xa0-]*/]]),["lua"]);

File diff suppressed because one or more lines are too long

View File

@ -1,2 +0,0 @@
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["com",/^#(?:if[\t\n\r \xa0]+(?:[$_a-z][\w']*|``[^\t\n\r`]*(?:``|$))|else|endif|light)/i,null,"#"],["str",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])(?:'|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\n\r]*|\(\*[\S\s]*?\*\))/],["kwd",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/],
["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],["pln",/^(?:[_a-z][\w']*[!#?]?|``[^\t\n\r`]*(?:``|$))/i],["pun",/^[^\w\t\n\r "'\xa0]+/]]),["fs","ml"]);

View File

@ -1,2 +0,0 @@
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:[^"]|\\.)*"/,null,'"']],[["com",/^;[^\n\r]*/,null,";"],["dec",/^\$(?:d|device|ec|ecode|es|estack|et|etrap|h|horolog|i|io|j|job|k|key|p|principal|q|quit|st|stack|s|storage|sy|system|t|test|tl|tlevel|tr|trestart|x|y|z[a-z]*|a|ascii|c|char|d|data|e|extract|f|find|fn|fnumber|g|get|j|justify|l|length|na|name|o|order|p|piece|ql|qlength|qs|qsubscript|q|query|r|random|re|reverse|s|select|st|stack|t|text|tr|translate|nan)\b/i,
null],["kwd",/^(?:[^$]b|break|c|close|d|do|e|else|f|for|g|goto|h|halt|h|hang|i|if|j|job|k|kill|l|lock|m|merge|n|new|o|open|q|quit|r|read|s|set|tc|tcommit|tre|trestart|tro|trollback|ts|tstart|u|use|v|view|w|write|x|xecute)\b/i,null],["lit",/^[+-]?(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?/i],["pln",/^[a-z][^\W_]*/i],["pun",/^[^\w\t\n\r"$%;^\xa0]|_/]]),["mumps"]);

View File

@ -1,4 +0,0 @@
var a=null;
PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:'(?:[^\n\r'\\]|\\.)*'|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,a,'"'],["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,a,"#"],["pln",/^\s+/,a," \r\n\t\u00a0"]],[["str",/^@"(?:[^"]|"")*(?:"|$)/,a],["str",/^<#[^#>]*(?:#>|$)/,a],["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,a],["com",/^\/\/[^\n\r]*/,a],["com",/^\/\*[\S\s]*?(?:\*\/|$)/,
a],["kwd",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\b/,
a],["typ",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\b/,a],["lit",/^@[$_a-z][\w$@]*/i,a],["typ",/^@[A-Z]+[a-z][\w$@]*/,a],["pln",/^'?[$_a-z][\w$@]*/i,a],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,a,"0123456789"],["pun",/^.[^\s\w"-$'./@`]*/,a]]),["n","nemerle"]);

View File

@ -1,3 +0,0 @@
var a=null;
PR.registerLangHandler(PR.createSimpleLexer([["str",/^'(?:[^\n\r'\\]|\\.)*(?:'|$)/,a,"'"],["pln",/^\s+/,a," \r\n\t\u00a0"]],[["com",/^\(\*[\S\s]*?(?:\*\)|$)|^{[\S\s]*?(?:}|$)/,a],["kwd",/^(?:absolute|and|array|asm|assembler|begin|case|const|constructor|destructor|div|do|downto|else|end|external|for|forward|function|goto|if|implementation|in|inline|interface|interrupt|label|mod|not|object|of|or|packed|procedure|program|record|repeat|set|shl|shr|then|to|type|unit|until|uses|var|virtual|while|with|xor)\b/i,a],
["lit",/^(?:true|false|self|nil)/i,a],["pln",/^[a-z][^\W_]*/i,a],["lit",/^(?:\$[\da-f]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)/i,a,"0123456789"],["pun",/^.[^\s\w$'./@]*/,a]]),["pascal"]);

View File

@ -1 +0,0 @@
PR.registerLangHandler(PR.sourceDecorator({keywords:"bytes,default,double,enum,extend,extensions,false,group,import,max,message,option,optional,package,repeated,required,returns,rpc,service,syntax,to,true",types:/^(bool|(double|s?fixed|[su]?int)(32|64)|float|string)\b/,cStyleComments:!0}),["proto"]);

View File

@ -1,2 +0,0 @@
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["str",/^'(?:[^'\\]|\\[\S\s])*(?:'|$)/,null,"'"]],[["com",/^#.*/],["kwd",/^(?:if|else|for|while|repeat|in|next|break|return|switch|function)(?![\w.])/],["lit",/^0[Xx][\dA-Fa-f]+([Pp]\d+)?[Li]?/],["lit",/^[+-]?(\d+(\.\d+)?|\.\d+)([Ee][+-]?\d+)?[Li]?/],["lit",/^(?:NULL|NA(?:_(?:integer|real|complex|character)_)?|Inf|TRUE|FALSE|NaN|\.\.(?:\.|\d+))(?![\w.])/],
["pun",/^(?:<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|[!*+/^]|%.*?%|[$=@~]|:{1,3}|[(),;?[\]{}])/],["pln",/^(?:[A-Za-z]+[\w.]*|\.[^\W\d][\w.]*)(?![\w.])/],["str",/^`.+`/]]),["r","s","R","S","Splus"]);

View File

@ -1 +0,0 @@
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\n\r]*/,null,"%"]],[["lit",/^\\(?:cr|l?dots|R|tab)\b/],["kwd",/^\\[@-Za-z]+/],["kwd",/^#(?:ifn?def|endif)/],["pln",/^\\[{}]/],["pun",/^[()[\]{}]+/]]),["Rd","rd"]);

View File

@ -1,2 +0,0 @@
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^"(?:""(?:""?(?!")|[^"\\]|\\.)*"{0,3}|(?:[^\n\r"\\]|\\.)*"?)/,null,'"'],["lit",/^`(?:[^\n\r\\`]|\\.)*`?/,null,"`"],["pun",/^[!#%&(--:-@[-^{-~]+/,null,"!#%&()*+,-:;<=>?@[\\]^{|}~"]],[["str",/^'(?:[^\n\r'\\]|\\(?:'|[^\n\r']+))'/],["lit",/^'[$A-Z_a-z][\w$]*(?![\w$'])/],["kwd",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\b/],
["lit",/^(?:true|false|null|this)\b/],["lit",/^(?:0(?:[0-7]+|x[\da-f]+)l?|(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:e[+-]?\d+)?f?|l?)|\\.\d+(?:e[+-]?\d+)?f?)/i],["typ",/^[$_]*[A-Z][\d$A-Z_]*[a-z][\w$]*/],["pln",/^[$A-Z_a-z][\w$]*/],["com",/^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/],["pun",/^(?:\.+|\/)/]]),["scala"]);

View File

@ -1,2 +0,0 @@
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/,null,"\"'"]],[["com",/^(?:--[^\n\r]*|\/\*[\S\s]*?(?:\*\/|$))/],["kwd",/^(?:add|all|alter|and|any|apply|as|asc|authorization|backup|begin|between|break|browse|bulk|by|cascade|case|check|checkpoint|close|clustered|coalesce|collate|column|commit|compute|connect|constraint|contains|containstable|continue|convert|create|cross|current|current_date|current_time|current_timestamp|current_user|cursor|database|dbcc|deallocate|declare|default|delete|deny|desc|disk|distinct|distributed|double|drop|dummy|dump|else|end|errlvl|escape|except|exec|execute|exists|exit|fetch|file|fillfactor|following|for|foreign|freetext|freetexttable|from|full|function|goto|grant|group|having|holdlock|identity|identitycol|identity_insert|if|in|index|inner|insert|intersect|into|is|join|key|kill|left|like|lineno|load|match|matched|merge|natural|national|nocheck|nonclustered|nocycle|not|null|nullif|of|off|offsets|on|open|opendatasource|openquery|openrowset|openxml|option|or|order|outer|over|partition|percent|pivot|plan|preceding|precision|primary|print|proc|procedure|public|raiserror|read|readtext|reconfigure|references|replication|restore|restrict|return|revoke|right|rollback|rowcount|rowguidcol|rows?|rule|save|schema|select|session_user|set|setuser|shutdown|some|start|statistics|system_user|table|textsize|then|to|top|tran|transaction|trigger|truncate|tsequal|unbounded|union|unique|unpivot|update|updatetext|use|user|using|values|varying|view|waitfor|when|where|while|with|within|writetext|xml)(?=[^\w-]|$)/i,
null],["lit",/^[+-]?(?:0x[\da-f]+|(?:\.\d+|\d+(?:\.\d*)?)(?:e[+-]?\d+)?)/i],["pln",/^[_a-z][\w-]*/i],["pun",/^[^\w\t\n\r "'\xa0][^\w\t\n\r "'+\xa0-]*/]]),["sql"]);

View File

@ -1,3 +0,0 @@
var a=null;
PR.registerLangHandler(PR.createSimpleLexer([["opn",/^{+/,a,"{"],["clo",/^}+/,a,"}"],["com",/^#[^\n\r]*/,a,"#"],["pln",/^[\t\n\r \xa0]+/,a,"\t\n\r \u00a0"],["str",/^"(?:[^"\\]|\\[\S\s])*(?:"|$)/,a,'"']],[["kwd",/^(?:after|append|apply|array|break|case|catch|continue|error|eval|exec|exit|expr|for|foreach|if|incr|info|proc|return|set|switch|trace|uplevel|upvar|while)\b/,a],["lit",/^[+-]?(?:[#0]x[\da-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[de][+-]?\d+)?)/i],["lit",
/^'(?:-*(?:\w|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?)?/],["pln",/^-*(?:[_a-z]|\\[!-~])(?:[\w-]*|\\[!-~])[!=?]?/i],["pun",/^[^\w\t\n\r "'-);\\\xa0]+/]]),["tcl"]);

View File

@ -1 +0,0 @@
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\n\r]*/,null,"%"]],[["kwd",/^\\[@-Za-z]+/],["kwd",/^\\./],["typ",/^[$&]/],["lit",/[+-]?(?:\.\d+|\d+(?:\.\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],["pun",/^[()=[\]{}]+/]]),["latex","tex"]);

View File

@ -1,2 +0,0 @@
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0\u2028\u2029]+/,null,"\t\n\r \u00a0\u2028\u2029"],["str",/^(?:["\u201c\u201d](?:[^"\u201c\u201d]|["\u201c\u201d]{2})(?:["\u201c\u201d]c|$)|["\u201c\u201d](?:[^"\u201c\u201d]|["\u201c\u201d]{2})*(?:["\u201c\u201d]|$))/i,null,'"\u201c\u201d'],["com",/^['\u2018\u2019](?:_(?:\r\n?|[^\r]?)|[^\n\r_\u2028\u2029])*/,null,"'\u2018\u2019"]],[["kwd",/^(?:addhandler|addressof|alias|and|andalso|ansi|as|assembly|auto|boolean|byref|byte|byval|call|case|catch|cbool|cbyte|cchar|cdate|cdbl|cdec|char|cint|class|clng|cobj|const|cshort|csng|cstr|ctype|date|decimal|declare|default|delegate|dim|directcast|do|double|each|else|elseif|end|endif|enum|erase|error|event|exit|finally|for|friend|function|get|gettype|gosub|goto|handles|if|implements|imports|in|inherits|integer|interface|is|let|lib|like|long|loop|me|mod|module|mustinherit|mustoverride|mybase|myclass|namespace|new|next|not|notinheritable|notoverridable|object|on|option|optional|or|orelse|overloads|overridable|overrides|paramarray|preserve|private|property|protected|public|raiseevent|readonly|redim|removehandler|resume|return|select|set|shadows|shared|short|single|static|step|stop|string|structure|sub|synclock|then|throw|to|try|typeof|unicode|until|variant|wend|when|while|with|withevents|writeonly|xor|endif|gosub|let|variant|wend)\b/i,
null],["com",/^rem\b.*/i],["lit",/^(?:true\b|false\b|nothing\b|\d+(?:e[+-]?\d+[dfr]?|[dfilrs])?|(?:&h[\da-f]+|&o[0-7]+)[ils]?|\d*\.\d+(?:e[+-]?\d+)?[dfr]?|#\s+(?:\d+[/-]\d+[/-]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:am|pm))?)?|\d+:\d+(?::\d+)?(\s*(?:am|pm))?)\s+#)/i],["pln",/^(?:(?:[a-z]|_\w)\w*(?:\[[!#%&@]+])?|\[(?:[a-z]|_\w)\w*])/i],["pun",/^[^\w\t\n\r "'[\]\xa0\u2018\u2019\u201c\u201d\u2028\u2029]+/],["pun",/^(?:\[|])/]]),["vb","vbs"]);

Some files were not shown because too many files have changed in this diff Show More